Опять $какой-то DDoS
CVE-2026-23864 — уязвимость, которая приводит к отказу в обслуживании из-за большого потребления памяти и чрезмерному использованию центрального процессора в React Server Components.
Уязвимость присутствует в версиях 19.0.0, 19.0.1, 19.0.2, 19.0.3, 19.1.0, 19.1.1, 19.1.2, 19.1.3, 19.1.4, 19.2.0, 19.2.1, 19.2.2, 19.2.3 пакетов:
— react-server-dom-webpack,
— react-server-dom-parcel,
— react-server-dom-turbopack.
🫡 Метрики
🫡 Об уязвимости
Когда сервер React получает запрос multipart/form-data, он должен декодировать ответ (reply) с помощью функции вроде decodeReplyFromBusboy или decodeReply. Для обработки используется внутренний механизм разборки значений модели, в частности конструкции вида
1️⃣ Парсер создаёт новый объект FormData для каждого токена
2️⃣ Для каждого такого токена он полностью сканирует исходный объект FormData.
3️⃣ Чем больше таких токенов в запросе, тем больше операций копирования и выделения памяти происходит одновременно.
4️⃣ Для эксплуатации уязвимости необходим серверный компонент, который принимает и декодирует тело запроса.
🫡 Пример
Для моделирования уязвимости используем подобную конструкцию:
formData — ввод пользователя.
decodeReply — уязвимая функция из react-server-dom-webpack.
Отправим две идентичных нагрузки, только в одной будет массив токенов
🫡 Как защититься
1) Обновить все уязвимые компоненты.
2) Написать правило на WAF/IDS, которое будет детектировать токены
CVE-2026-23864 — уязвимость, которая приводит к отказу в обслуживании из-за большого потребления памяти и чрезмерному использованию центрального процессора в React Server Components.
Уязвимость присутствует в версиях 19.0.0, 19.0.1, 19.0.2, 19.0.3, 19.1.0, 19.1.1, 19.1.2, 19.1.3, 19.1.4, 19.2.0, 19.2.1, 19.2.2, 19.2.3 пакетов:
— react-server-dom-webpack,
— react-server-dom-parcel,
— react-server-dom-turbopack.
Base Score: 7.5 HIGH
CWE: CWE-400, CWE-502
Когда сервер React получает запрос multipart/form-data, он должен декодировать ответ (reply) с помощью функции вроде decodeReplyFromBusboy или decodeReply. Для обработки используется внутренний механизм разборки значений модели, в частности конструкции вида
$K<id> (токен). $K<id>.Для моделирования уязвимости используем подобную конструкцию:
const root = await decodeReply(formData, {}, {});formData — ввод пользователя.
decodeReply — уязвимая функция из react-server-dom-webpack.
Отправим две идентичных нагрузки, только в одной будет массив токенов
$K<id>, а во второй просто массив Kx. Результаты на скриншоте. 1) Обновить все уязвимые компоненты.
2) Написать правило на WAF/IDS, которое будет детектировать токены
$K<id> в теле запроса на уязвимый серверный компонент или ограничивать общую длину тела запроса.Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥4👍1👾1