Четыре луча
3.94K subscribers
91 photos
101 links
Облучаем экспертизой

Заметки Solar 4RAYS c полей о DFIRMA, TH, OffSec

Блог: https://rt-solar.ru/solar-4rays/blog/
Download Telegram
Опять $какой-то 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<id> (токен).

1️⃣ Парсер создаёт новый объект FormData для каждого токена $K<id>.
2️⃣ Для каждого такого токена он полностью сканирует исходный объект FormData.
3️⃣ Чем больше таких токенов в запросе, тем больше операций копирования и выделения памяти происходит одновременно.
4️⃣ Для эксплуатации уязвимости необходим серверный компонент, который принимает и декодирует тело запроса.

🫡 Пример
Для моделирования уязвимости используем подобную конструкцию:
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