Опять $какой-то 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.
🫡 Метрики
Base Score: 7.5 HIGH
CWE: CWE-400, CWE-502
🫡 Об уязвимости
Когда сервер React получает запрос multipart/form-data, он должен декодировать ответ (reply) с помощью функции вроде decodeReplyFromBusboy или decodeReply. Для обработки используется внутренний механизм разборки значений модели, в частности конструкции вида $K (токен).
1️⃣ Парсер создаёт новый объект FormData для каждого токена $K.
2️⃣ Для каждого такого токена он полностью сканирует исходный объект FormData.
3️⃣ Чем больше таких токенов в запросе, тем больше операций копирования и выделения памяти происходит одновременно.
4️⃣ Для эксплуатации уязвимости необходим серверный компонент, который принимает и декодирует тело запроса.
🫡 Пример
Для моделирования уязвимости используем подобную конструкцию:
const root = await decodeReply(formData, {}, {});
formData — ввод пользователя.
decodeReply — уязвимая функция из react-server-dom-webpack.
Отправим две идентичных нагрузки, только в одной будет массив токенов $K, а во второй просто массив Kx. Результаты на скриншоте.
🫡 Как защититься
1) Обновить все уязвимые компоненты.
2) Написать правило на WAF/IDS, которое будет детектировать токены $K в теле запроса на уязвимый серверный компонент или ограничивать общую длину тела запроса.