Скоро след открития 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
