Обновить

Уязвим не nginx, а две строки вашего конфига. Разбираю CVE-2026-42945 на живом стенде

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели4.5K
Всего голосов 3: ↑3 и ↓0+6
Комментарии2

Комментарии 2

классика жанра. у нас был похожий случай - выставили наружу порт для метрик без авторизации. какие именно строки в конфиге виноваты в этой уязвимости?

Две строки в одном location. Первая это rewrite, у которого в строке замены есть знак вопроса, и за ним что-то стоит. Вторая это любая следующая директива в том же блоке, которая читает безымянный захват от $1 до $9.

Минимальный падающий конфиг:

location / {
    rewrite ^(.*) /new?c=1;
    set $myvar $1;
}

Поодиночке ни одна из них не опасна: убрать вопрос, стоит; убрать set, тоже стоит. И важная тонкость, из-за которой будет много ложных тревог: хвостовой вопрос без аргументов, rewrite ^/old/(.*)$ /new/$1?;, это обычный сброс query string, и он не ломает. Проверял на стенде, таблица со всеми вариантами в разделе про границу.

Порт метрик наружу, да, отдельная классика. Там хотя бы видно глазами, а тут связка расползается по двум строкам, и каждая по отдельности выглядит совершенно нормально.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации