Новая уязвимость в rewrite-модуле nginx

Вскоре после обнаружения 18-летнего потенциального RCE было обнаружено ещё одно, CVE-2026-9256, на этот раз просуществовавшее ещё дольше — 21 год, начиная с версии 0.1.17, выпущенной в начале 2005 года.
Для эксплуатации уязвимости требуется наличие в конфиге сервера директивы rewrite, у которой:

  • в первом аргументе имеются перекрывающиеся выделяемые параметры регулярного выражения,
  • во втором используется два или больше из них, но не используются переменные,
  • при этом либо указан тип «redirect», либо параметры во втором аргументе находятся после знака вопроса.

Примеры:
rewrite ^/((.*))$ http://127.0.0.1:8080/$1$2 redirect;
rewrite ^/((.*))$ http://127.0.0.1:8080/?$1$2;

Оба они получат переполнение буфера при обработке запроса «/++++++++++++++++++++++++++++++».

Как и в предыдущей уязвимости, в этом случае расчётная длина буфера может не совпадать с реальным количеством записанных в него данных — при расчёте длины не везде учитывалось возможное экранирование.

Вышеописанное может приводить к крашу рабочего процесса nginx, а при отсутствии ALSR — к RCE. В качестве смягчающего обстоятельства можно отметить ещё меньшую вероятность встретить уязвимые конструкции в конфиге, чем в прошлый раз.

Ошибка исправлена в версиях 1.30.2 и 1.31.1 (коммит исправления).

Источник: linux.org.ru

Купить надежный хостинг для сайтов с защитой от DDoS, VPS VDS серверы 🔥 Купить надежный хостинг для сайтов с защитой от DDoS, VPS VDS серверы | ProHoster