Nowa luka w module rewrite nginx

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

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster