
Bash-скрипт для обнаружения CVE-2025-55182 (React2Shell) и утечки учетных данных в проектах Next.js. Ноль зависимостей.
日本語版は README.ja.md を参照してください。
Bash-скрипт для обнаружения CVE-2025-55182 (React2Shell) и утечки учётных данных в проектах Next.js. Без зависимостей.
CVSS: 10.0 (CRITICAL) | CWE-502: Десериализация недоверенных данных | SNORT SID: 65554
Неаутентифицированное удалённое выполнение кода через десериализацию недоверенных данных в серверных компонентах Next.js. Злоумышленник отправляет специально сформированный HTTP-запрос к любой конечной точке серверного компонента Next.js; сервер десериализует полезную нагрузку и выполняет произвольный код.
Затронутые версии:
| Пакет | Уязвимый диапазон |
|---|
| Next.js | 15.0.0–15.0.4, 15.1.0–15.1.8, 15.2.0–15.2.5, 15.3.0–15.3.5, 15.4.0–15.4.7, 15.5.0–15.5.6, 15.6.0, 16.0.0–16.0.6 |
| React | 19.0.0, 19.1.0, 19.1.1, 19.2.0 |
Ссылки:
Фаза 1 — Версия Next.js: Читает package.json, package-lock.json и yarn.lock для определения установленной версии Next.js и сравнивает её с уязвимым диапазоном.
Фаза 2 — Версия React: Тот же подход для React (19.0.0, 19.1.0, 19.1.1, 19.2.0).
Фаза 3 — App Router / Серверные компоненты: Обнаруживает каталог app/ и директивы "use server". Уязвимая версия с активными серверными компонентами является живой поверхностью атаки.
Фаза 4 — Утечка учётных данных: Сканирует файлы .env* (исключая .env.example и .env.sample), next.config.* и исходные файлы на наличие ключей API, URL баз данных, JWT-секретов и жёстко заданных префиксов секретов (sk-, AKIA, ghp_, npm_).
Фаза 5 — SSH-ключи: Ищет файлы закрытых ключей (id_rsa, *.pem, *.p12 и т.д.) и каталоги .ssh/, закоммиченные в проект.
Фаза 6 — Облачная конфигурация: Проверяет файлы Docker Compose на наличие жёстко заданных секретов, манифесты Kubernetes на предмет утечки токенов сервисных аккаунтов и использование AWS SDK для подсказок IMDSv2.
Фаза 7 — Проверка IOC: Ищет C2-IP-адреса из разведданных Cisco Talos и подозрительные шаблоны dot-файлов в /tmp/ (Linux).
C2 IP-адреса (Cisco Talos): 144.172.102.88 / 172.86.127.128 / 144.172.112.136 / 144.172.117.112
Фаза 8 — Сводка: Подсчёт CRITICAL/WARNING/INFO с шагами по устранению.
Установка не требуется. Скачайте и запустите:
curl -O https://raw.githubusercontent.com/aliksir/nextjs-security-scanner/main/scan.sh
bash scan.sh [целевой-каталог]
Или клонируйте:
git clone https://github.com/aliksir/nextjs-security-scanner.git
bash nextjs-security-scanner/scan.sh /путь/к/вашему/nextjs-приложению
# Сканирование текущего каталога
bash scan.sh
# Сканирование конкретного проекта
bash scan.sh /путь/к/nextjs-приложению
# В CI/CD (ненулевой код возврата = сбой пайплайна)
bash scan.sh . || exit 1
Коды возврата:
0 — Проблем нет1 — Предупреждения (обнаружены шаблоны учётных данных, требуется проверка)2 — Критично (подтверждена уязвимая версия, требуется немедленное действие)=== Next.js Security Scanner ===
Цель: /home/user/myapp
Дата: 2026-04-04 12:00
CVE: CVE-2025-55182 (React2Shell, CVSS 10.0)
[Фаза 1] Проверка версии Next.js
[CRITICAL] Next.js v15.2.4 уязвим для CVE-2025-55182 (React2Shell)
-> package.json: "next": "^15.2.4"
-> Эта версия допускает неаутентифицированное RCE через десериализацию серверных компонентов
[Фаза 2] Проверка версии React
[CRITICAL] React v19.1.0 входит в список уязвимых для CVE-2025-55182
[Фаза 3] Обнаружение App Router / серверных компонентов
[INFO] Обнаружен App Router (каталог app/ существует)
[CRITICAL] Уязвимый Next.js + серверные компоненты = активная поверхность атаки для React2Shell
...
=== Сводка сканирования ===
CRITICAL : 3
WARNING : 0
INFO : 2
Обнаружены критические проблемы. Требуется немедленное действие.
=== Устранение (CVE-2025-55182) ===
1. Обновите Next.js до исправленной версии:
npm install next@latest
...
Обновите немедленно:
npm install next@latest
npm install react@latest react-dom@latest
Проверьте https://github.com/vercel/next.js/releases для первой исправленной версии в каждой минорной серии.
Если есть подозрение на эксплуатацию:
ps aux | grep -E '\.sh|\.py'
crontab -l; cat /etc/cron*
ss -tnp | grep -E '144\.172|172\.86'
ls -la /tmp/ | grep '^\.'
144.172.102.88, 172.86.127.128, 144.172.112.136, 144.172.117.112bash scan.sh [целевой-каталог]
Ключевые слова для активации: «next.js security check», «CVE-2025-55182», «React2Shell», «Next.js vulnerability scan»
См. claude-code/SKILL.md для обёртки навыка.
Этот инструмент предназначен только для защитных целей. Он выполняет локальные проверки только на чтение в ваших собственных файлах проекта. Сетевые соединения не устанавливаются, данные не отправляются вовне, эксплойты не выполняются.
Информация об уязвимости и данные IOC основаны на общедоступных источниках (NVD, Cisco Talos). Данный сканер может выдавать ложные срабатывания или пропускать некоторые векторы атак. Он не заменяет профессиональные аудиты безопасности, тестирование на проникновение или патчи безопасности от поставщика.
Используйте на свой страх и риск. Авторы не несут ответственности за любой ущерб, возникший в результате использования этого инструмента.
MIT — см. LICENSE