Содержимое
Цепная Reacция В React Server Components нашли критическую уязвимость с максимальным баллом CVSS 10.0, позволяющую выполнить произвольный код на сервере без авторизации. При десериализации данных React обращается к свойствам модуля через квадратные скобки, не проверяя принадлежность объекту. JavaScript в таком случае лезет по всей прототипной цепочке, включая Object.prototype и конструкторы. Злоумышленник отправляет запрос такого вида: { "id": "vm#runInThisContext", "bound": ["code here"] } А синтаксис с решёткой позволяет указать любой экспорт, включая constructor. В запросе можно передать цепочки вроде $1:constructor:constructor, что даёт доступ к конструктору функций через обход прототипов. Но создать функцию мало, нужно заставить её выполниться. Для этого используется встроенный модуль виртуальной машины Node.js, который исполняет код сразу при вызове. React связывает аргументы с функцией, и когда приложение её дёргает, runInThisContext('...') отрабатывает, выполняя вредоносный код. Кстати, наш любимый Next.js тоже уязвим к этому. Патчи выпустили и добавили проверку собственных свойств перед доступом. Обновляться нужно вчера 😲 НеКасперский