Kurz nach der Entdeckung 18-jähriger potenzieller RCE wurde eine weitere entdeckt, CVE-2026-9256, die diesmal noch länger bestand – 21 Jahre, beginnend mit Version 0.1.17, die Anfang 2005 veröffentlicht wurde.
Um die Schwachstelle auszunutzen, muss in der Serverkonfiguration die Direktive rewrite vorhanden sein, bei der:
- im ersten Argument sich überdeckende benannte Parameter des regulären Ausdrucks vorhanden sind,
- im zweiten zwei oder mehr von ihnen verwendet werden, aber keine Variablen verwendet werden,
- wobei entweder der Typ "redirect" angegeben ist oder die Parameter im zweiten Argument nach dem Fragezeichen stehen.
Beispiele:
rewrite ^/((.*))$ http://127.0.0.1:8080/$1$2 redirect;
rewrite ^/((.*))$ http://127.0.0.1:8080/?$1$2;
Beide werden bei der Verarbeitung der Anfrage „/+"++++++++++++++++" ein Pufferüberlauf erleiden.
Wie bei der vorherigen Schwachstelle kann die berechnete Pufferlänge von der tatsächlichen Anzahl der darin geschriebenen Daten abweichen – bei der Längenberechnung wurde nicht überall auf mögliche Escapierungen geachtet.
Das oben Beschriebene kann zum Absturz des nginx-Arbeitsprozesses führen, und bei fehlendem ALSR zur RCE. Als mildernder Umstand ist zu beachten, dass die Wahrscheinlichkeit, auf verwundbare Konstrukte in der Konfiguration zu stoßen, geringer ist als beim letzten Mal.
Der Fehler wurde in den Versionen 1.30.2 und 1.31.1 behoben (Commit zur Fehlerbehebung).
Quelle: linux.org.ru
