
Chi l’avrebbe mai detto che un pezzetto di codice scritto quasi vent’anni fa potesse ancora avere il potere di far saltare in aria un server moderno?
Mentre noi siamo impegnati a lottare con i driver di una vecchia stampante 3D o a cercare di far girare un progetto Godot senza far esplodere la GPU, nel mondo del networking è successo il finimondo. È spuntato fuori un exploit chiamato «Nginx-Rift», che sfrutta una vulnerabilità critica (CVE-2026-4usc) nel modulo rewrite di Nginx. La cosa che fa quasi svenire, se non fosse già troppo impegnati a debuggare il nostro ultimo script Python, è che il bug risale al 2008. Sì, avete letto bene. Un errore nel calcolo della dimensione del buffer che dormiva tranquillo per quasi due decenni.
Il succo della faccenda è questo: il motore di script di Nginx fa un doppio passaggio. Il primo serve a calcolare quanto spazio serve per il buffer, il secondo a copiare i dati. Il problema? Nel primo passaggio, se c’è un punto interrogativo nella stringa, il sistema non si accorge che deve espandere alcuni byte. Risultato? Nel secondo passaggio, Nginx espande i dati, va oltre i limiti del buffer (classico heap buffer overflow) e scrive dove non dovrebbe. Se sei abbastanza bravo (o abbastanza cattivo) da orchestrare un po’ di «heap feng shui» tramite i corpi delle richieste POST, puoi dirottare i puntatori e ottenere una shell remota. In pratica, un comando semplicissimo e sei dentro il sistema.
Dal punto di vista tecnico, è una roba da manuale, quasi poetica nella sua crudeltà. Vedere un exploit che usa la corruzione di un puntatore di pulizia di un pool per invocare la funzione system() mi ricorda le vecchie glorie del reverse engineering degli anni ’90. Però, ammettiamolo, c’è qualcosa di profondamente inquietante nel sapere che stiamo usando software che nasconde trappole mortali ereditate da un’epoca pre-cloud.
Cosa significa per noi che amiamo smanettare con i server e i container? Se avete un’istanza di Nginx in produzione, smettetela di leggere questo post e andate ad aggiornare. Le versioni affette vanno dalla 0.6.27 alla 1.30.0. Se siete sulla 1.31.0 o superiori, siete (per ora) al sicuro.
In un mondo dove l’hype dell’IA cerca di convincerci che tutto è automatizzato e perfetto, Nginx-Rift ci ricorda che la realtà è fatta di codice scritto da umani, con i loro errori, le loro stanchezze e i loro bug dimenticati in un angolo del repository. Quindi, meno hype e più patch, ragazzi. E tenete sempre un occhio ai vecchi moduli: potrebbero decidere di tornare di moda proprio quando meno ve lo aspettate.
Source: New Nginx Exploit
