Добавить в корзинуПозвонить
Найти в Дзене
.unsec

CVE-2026-42533: переполнение буфера при обработке "map" и регулярных выражений

CVE-2026-42533: переполнение буфера при обработке "map" и регулярных выражений В NGINX Open Source и NGINX Plus устранена уязвимость типа heap-based buffer overflow — CWE-122. Ошибка находится в механизме вычисления complex values, используемом директивой map при сопоставлении по регулярному выражению. CVSS v4.0 — 9.2 Critical, CVSS v3.1 — 8.1 High. Уязвимая конфигурация возникает, когда: • map выполняет regex-сопоставление; • строковое выражение обращается к capture-переменным регулярного выражения до обращения к выходной переменной map; • либо в выражении используется non-cacheable переменная, длина которой может измениться во время обработки запроса. NGINX script engine обрабатывает такие выражения в несколько проходов: сначала вычисляет размер результирующего буфера, затем копирует значения переменных. Regex-сопоставление или повторное вычисление переменной может изменить состояние capture-групп между этими операциями. В результате размер, рассчитанный на первом проходе, оказы

CVE-2026-42533: переполнение буфера при обработке "map" и регулярных выражений

В NGINX Open Source и NGINX Plus устранена уязвимость типа heap-based buffer overflow — CWE-122. Ошибка находится в механизме вычисления complex values, используемом директивой map при сопоставлении по регулярному выражению. CVSS v4.0 — 9.2 Critical, CVSS v3.1 — 8.1 High.

Уязвимая конфигурация возникает, когда:

• map выполняет regex-сопоставление;

• строковое выражение обращается к capture-переменным регулярного выражения до обращения к выходной переменной map;

• либо в выражении используется non-cacheable переменная, длина которой может измениться во время обработки запроса.

NGINX script engine обрабатывает такие выражения в несколько проходов: сначала вычисляет размер результирующего буфера, затем копирует значения переменных. Regex-сопоставление или повторное вычисление переменной может изменить состояние capture-групп между этими операциями. В результате размер, рассчитанный на первом проходе, оказывается меньше объёма данных, записываемого на втором, что приводит к записи за границы heap-буфера. Исправление добавляет указатель конца буфера e->end и проверку ngx_http_script_check_length() перед операциями копирования.

Эксплуатация выполняется удалённо без аутентификации с помощью специально сформированного HTTP-запроса, однако требует наличия подходящей конфигурации NGINX. Переполнение происходит в worker-процессе и может вызвать его аварийное завершение и перезапуск, создавая отказ в обслуживании. Выполнение произвольного кода возможно на системах с отключённым ASLR либо при наличии способа обхода ASLR. Уязвимость относится к data plane и не предоставляет прямого доступа к control plane.

Затронутые версии:

• NGINX Open Source: 0.9.6–1.31.2;

• NGINX Plus: R33–R36, а также 37.0.0.1–37.0.2.1.

Исправленные версии:

• NGINX stable: 1.30.4;

• NGINX mainline: 1.31.3;

• NGINX Plus R36: R36 P7;

• NGINX Plus R37: 37.0.3.1.

Основная мера устранения — обновление до исправленной версии. Для временного снижения риска F5 рекомендует исключить безымянные capture-группы, использовать уникальные именованные capture-переменные только внутри блока с соответствующим regex-сопоставлением и не переиспользовать одинаковые именованные capture-переменные в разных директивах. Конфигурацию следует проверять по полному выводу "nginx -T", включая подключаемые файлы и автоматически сгенерированные конфигурации.