Wkrótce po odkryciu 18-letniego potencjalnego RCE odkryto kolejne, CVE-2026-9256, tym razem istniejącego jeszcze dłużej – 21 lat, począwszy od wersji 0.1.17 wydanej na początku 2005 roku.
Aby wykorzystać lukę, wymagane jest posiadanie w konfiguracji serwera dyrektywy rewrite, która:
- w pierwszym argumencie ma nakładające się parametry wyrażenia regularnego,
- w drugim wykorzystuje dwa lub więcej z nich, ale nie używa zmiennych,
- przy czym albo wskazany jest typ „redirect”, albo parametry w drugim argumencie znajdują się po znaku zapytania.
Przykłady:
rewrite ^/((.*))$ http://127.0.0.1:8080/$1$2 redirect;
rewrite ^/((.*))$ http://127.0.0.1:8080/?$1$2;
Oba one spowodują przepełnienie bufora przy przetwarzaniu żądania „/++++++++++++++++++++++++++++++”.
Podobnie jak w poprzedniej luce, w tym przypadku obliczeniowa długość bufora może nie odpowiadać rzeczywistej liczbie zapisanych w nim danych — przy obliczaniu długości wszędzie nie uwzględniono możliwego Escapowania.
Opisane powyżej może prowadzić do awarii procesu roboczego nginx, a przy braku ALSR — do RCE. Można zauważyć, że mniejsze jest prawdopodobieństwo napotkania podatnych konstrukcji w konfiguracji niż ostatnim razem.
Błąd został naprawiony w wersjach 1.30.2 i 1.31.1 (komitar naprawy).
Źródło: linux.org.ru
