
Тестирование и анализ уязвимости CVE-2025-55182 в Next.js Server Actions
Статус проекта: Экспериментальный / Proof of Concept
Этот репозиторий представляет собой контролируемую исследовательскую среду и платформу Proof-of-Concept (PoC) для анализа CVE-2025-55182. Он демонстрирует уязвимость Prototype Pollution (загрязнение прототипа) в контексте Next.js Server Actions, нацеленную конкретно на небезопасные рекурсивные операции слияния.
Основная уязвимость кроется в пользовательской служебной функции deepMerge, реализованной внутри Server Action Next.js (syncConfiguration). Функция не выполняет надлежащей санитизации специальных ключей объектов — в частности __proto__ и constructor. Эта недоработка позволяет неаутентифицированному злоумышленнику внедрять произвольные свойства в глобальный Object.prototype.
В серверной среде выполнения Node.js успешное загрязнение прототипа может привести к:
isAdmin) или параметров конфигурации.toString или valueOf.child_process или шаблонизаторах) для достижения произвольного выполнения кода.lab/next-app/: уязвимое приложение Next.js 15, предназначенное для имитации данного недостатка безопасности.
src/app/actions.jsx: серверный код, содержащий уязвимую реализацию deepMerge.exploits/: скрипты автоматизации на Python для тестирования и эксплуатации.
rce.py: скрипт, автоматизирующий внедрение вредоносных JSON-нагрузок для демонстрации загрязнения состояния сервера.get-shell.py: продвинутый PoC, исследующий векторы десериализации протокола RSC Flight.docs/PAYLOADS.md: справочный документ, содержащий различные JSON-нагрузки для ручного тестирования и анализа.Вы можете запустить лабораторию с помощью Docker (рекомендуется) или локально.
Убедитесь, что Docker и Docker Compose установлены.
docker-compose up --build
Приложение будет доступно по адресу http://localhost:3000.
Требуется Node.js 20+.
cd lab/next-app
npm install
npm run dev
Приложение будет доступно по адресу http://localhost:3000.
http://localhost:3000.docs/PAYLOADS.md (например, базовую нагрузку).Предоставленные Python-скрипты позволяют выполнить программную проверку уязвимости.
Предварительное требование: получите Next-Action ID из вкладки «Network» в браузере (найдите заголовок POST-запроса Next-Action) или из вывода терминала сервера.
docker exec -it exploit-runner bash
export ACTION_ID="your_action_id_here"
python3 rce.py "id"
pip install -r exploits/requirements.txt
export ACTION_ID="your_action_id_here"
python3 exploits/rce.py "id"
Примечание: скрипт rce.py настроен на демонстрацию успешного загрязнения состояния. Полное выполнение команд в оболочке зависит от конкретных гаджетов окружения, которые могут различаться.
Этот проект предназначен исключительно для образовательных целей и исследований в области безопасности.
Не используйте код или методики, представленные здесь, на системах, на которые у вас нет явного письменного разрешения. Авторы не несут ответственности за любое неправомерное использование или ущерб, причинённый данным материалом.