
Критическая уязвимость в next.js : Обход аутентификации middleware
Этот репозиторий предоставляется исключительно в образовательных целях. Я не обнаружил эту уязвимость — это демонстрация и объяснение публично раскрытой проблемы безопасности. Использование этих знаний для эксплуатации уязвимых систем без авторизации является незаконным и неэтичным.
Если вы используете Next.js в своих производственных приложениях, остановитесь и проверьте номер вашей версии. Существует серьезная уязвимость промежуточного ПО, которая может полностью открыть вашу систему аутентификации.
Эта критическая уязвимость была ответственно раскрыта и исправлена, поэтому я делюсь этой образовательной демонстрацией, чтобы помочь разработчикам понять проблему и защитить свои системы.
Проблема заключается в том, как Next.js обрабатывает внутренний HTTP-заголовок x-middleware-subrequest. Этот заголовок был разработан для предотвращения рекурсии промежуточного ПО, но злоумышленники могут манипулировать им, чтобы полностью обойти выполнение промежуточного ПО.
Подумайте, что это значит — любая безопасность на основе промежуточного ПО потенциально неэффективна:
Поступали сообщения об использовании этой уязвимости в реальных условиях для доступа к панелям администратора, пользовательским данным и даже финансовой информации. Некоторые организации обнаружили, что их конфиденциальные данные были раскрыты, даже не зная об этом.
Этот репозиторий включает:
# Strips the problematic header
proxy_set_header x-middleware-subrequest "";
# Does the same thing for Apache users
RequestHeader unset x-middleware-subrequest
// Quick middleware fix until you can properly update
app.use((req, res, next) => {
delete req.headers['x-middleware-subrequest'];
next();
});
Эта уязвимость подтверждает важные принципы безопасности:
Ознакомьтесь с этими ресурсами для создания более безопасных приложений Next.js:
Этот репозиторий предоставляет техническое объяснение и демонстрацию CVE-2025-29927 только в образовательных целях. Вся информация основана на публично раскрытых деталях, которые были должным образом исправлены. Если вы обнаружите уязвимости безопасности в каком-либо программном обеспечении, всегда следуйте практике ответственного раскрытия:
Эта уязвимость демонстрирует, что даже хорошо спроектированные фреймворки могут иметь критические недостатки безопасности. Будьте бдительны и сделайте обновление зависимостей частью вашего регулярного рабочего процесса.
Не стесняйтесь обращаться с вопросами или если вам нужна помощь в реализации любого из этих исправлений!