Kort na de ontdekking 18-jarige potentiƫle RCE werd nog een ontdekt, CVE-2026-9256, deze keer heeft het zelfs langer bestaan - 21 jaar, beginnend met versie 0.1.17, uitgebracht begin 2005.
Voor het exploiteren van de kwetsbaarheid is het nodig dat er in de serverconfiguratie een rewrite-directief aanwezig is, waarbij:
- in het eerste argument overlap heeft tussen de geselecteerde parameters van de reguliere expressie,
- in het tweede argument twee of meer van hen worden gebruikt, maar geen variabelen worden gebruikt,
- terwijl ofwel het type "redirect" is opgegeven, of de parameters in het tweede argument na het vraagteken komen.
Voorbeelden:
rewrite ^\/((.*))$ http:\/\/127.0.0.1:8080\/$1$2 redirect;
rewrite ^\/((.*))$ http:\/\/127.0.0.1:8080\/?$1$2;
Beide zullen buffer overflow krijgen bij het verwerken van het verzoek "\/++++++++++++++++++++++++++++++".
Net als bij de vorige kwetsbaarheid, kan in dit geval de berekende buffergrootte niet overeenkomen met het werkelijke aantal gegevens dat erin is geschreven - bij de berekening van de lengte werd op sommige plaatsen geen rekening gehouden met mogelijke escape-teken.
Het bovenstaande kan leiden tot het crashen van het werkproces van nginx, en bij afwezigheid van ALSR kan het leiden tot RCE. Als verzachtende omstandigheid kan worden opgemerkt dat de kans om kwetsbare constructies in de configuratie te tegenkomen deze keer nog kleiner is dan de vorige keer.
De fout is opgelost in versies 1.30.2 en 1.31.1 (commit van de oplossing).
Bron: linux.org.ru
