Apache 2.4.67: patch per CVE-2026-23918, double-free HTTP/2 critica

Apache HTTP Server 2.4.67 corregge CVE-2026-23918, una falla double-free nel gestore HTTP/2 con CVSS 8.8: due frame causano il crash, e in condizioni specifich…

Contenuto

Apache 2.4.67: patch per CVE-2026-23918, double-free HTTP/2 critica
Apache 2.4.67: patch per CVE-2026-23918, double-free HTTP/2 critica

La Apache Software Foundation ha rilasciato il 4 maggio 2026 la versione 2.4.67 di HTTP Server per chiudere CVE-2026-23918, una vulnerabilità double-free nel gestore HTTP/2 valutata 8.8 sullo scale CVSS. La falla consente un denial-of-service a barriera d'ingresso ridicolmente bassa — bastano una connessione TCP e due frame malformati — e apre a una potenziale esecuzione di codice remoto su piattaforme che usano l'allocator APR mmap, come le installazioni Debian e i container Docker ufficiali.

Per i team di infrastruttura che eseguono la versione 2.4.66 con HTTP/2 attivo, l'aggiornamento rappresenta una priorità operativa immediata e non differibile.

Punti chiave
  • La versione 2.4.66 è l'unica formalmente indicata come affetta: una sequenza HEADERS seguito da RST_STREAM inserisce due volte lo stesso puntatore h2_stream nell'array di cleanup spurge, generando il double-free.
  • Il DoS è banale e non richiede autenticazione né URL specifici: un singolo attaccante può crashare un worker con due frame HTTP/2 malformati.
  • I ricercatori hanno dimostrato RCE in laboratorio su x86_64 sfruttando, secondo l'analisi pubblicata dai ricercatori, il fatto che lo scoreboard Apache risiede a un indirizzo fisso anche con ASLR attivato, e utilizzando l'allocator APR mmap disponibile su Debian e container Docker.
  • La release 2.4.67 corregge cinque vulnerabilità in totale, ma CVE-2026-23918 è la più critica e riguarda esclusivamente il percorso di stream cleanup nel file sorgente h2_mplx.c.
"The first is denial of service, which is trivial: one TCP connection, two frames, no authentication, no special headers, no specific URL, and the worker crashes." — Bartlomiej Dmitruk, co-fondatore Striga.ai, via The Hacker News

Il meccanismo del double-free: come due frame HTTP/2 corrompono la memoria

Il bug risiede nel percorso di stream cleanup del file sorgente h2_mplx.c, componente centrale del gestore HTTP/2 in Apache. Quando un client invia un frame HEADERS seguito immediatamente da un RST_STREAM con codice errore non-zero, il server esegue due chiamate distinte che inseriscono lo stesso puntatore h2_stream nell'array di cleanup spurge. In condizioni normali, l'array dovrebbe contenere riferimenti unici; qui il duplicato passa inosservato perché entrambi i percorsi — la gestione della richiesta e la ricezione del reset — considerano lo stream come candidato alla pulizia.

Durante la fase di distruzione del pool, la prima chiamata a apr_pool_destroy libera la memoria associata allo stream, ma la seconda chiamata opera sullo stesso indirizzo già rilasciato, generando il double-free. Questa corruzione della memoria heap è sufficiente a provocare il crash del worker process, rendendo il servizio temporaneamente indisponibile per quel processo figlio. In un server con modello pre-fork o worker, il crash iterativo di più processi può degradare progressivamente la capacità di risposta dell'intero host.

Da DoS banale a RCE: perché lo scoreboard Apache piega l'ASLR

La stessa corruzione di memoria che causa il crash può, in scenari specifici, essere orientata verso l'esecuzione di codice. I ricercatori Bartlomiej Dmitruk e Stanislaw Strzalkowski hanno realizzato un proof-of-concept funzionante su architettura x86_64 in condizioni di laboratorio, sfruttando l'allocator APR basato su mmap. Su Debian e nei container Docker ufficiali questo allocator è la modalità predefinita, espandendo la superficie d'attacco ben oltre le installazioni custom.

Il cuore della tecnica è lo scoreboard di Apache, una struttura dati che mappa lo stato dei worker e risiede a un indirizzo fisso per l'intero ciclo di vita del processo server. Anche con l'Address Space Layout Randomization attivato a livello di sistema, lo scoreboard non viene randomizzato, fornendo agli attaccanti un ancoraggio stabile in memoria. Dmitruk ha precisato che "the scoreboard sits at a fixed address for the lifetime of the server, even with ASLR, which is what makes the RCE path practical".

Secondo l'analisi pubblicata dai ricercatori, la combinazione di un allocator mmap e di un indirizzo di memoria predicibile ha reso praticabile il percorso di RCE in laboratorio. Non è tuttavia confermato che la stessa catena di exploit funzioni al di fuori delle condizioni controllate descritte dai ricercatori, né che lo scoreboard venga utilizzato come contenitore attivo del payload.

Per i team che gestiscono container basati su Debian o Docker, la presenza dell'allocator mmap di default impone di trattare questi asset con priorità massima fino all'applicazione della patch.

Cronologia della divulgazione: da dicembre 2025 al rilascio del 4 maggio

La vulnerabilità è stata scoperta e segnalata alla Apache Security Team il 10 dicembre 2025 da Bartlomiej Dmitruk, co-fondatore di Striga.ai, e da Stanislaw Strzalkowski di ISEC.pl. Il giorno successivo, l'11 dicembre 2025, il fix è stato committato nel repository con revisione r1930444, ma la divulgazione coordinata è stata tenuta sotto embargo fino al 4 maggio 2026.

Questo ritardo di oltre quattro mesi tra il commit privato e il rilascio pubblico ha lasciato le installazioni 2.4.66 esposte per tutto l'intervallo, pur in assenza di un bollettino ufficiale consultabile dagli amministratori. Non è stato documentato se attacchi attivi siano stati rilevati durante questo periodo.

La release 2.4.67, pubblicata il 4 maggio, corregge in totale cinque vulnerabilità. Oltre a CVE-2026-23918, include CVE-2026-24072 di gravità moderata e tre flaw classificati di entità minore, ma la criticità operativa resta concentrata sulla falla double-free.

Cosa fare adesso

  1. Aggiornare immediatamente ad Apache HTTP Server 2.4.67 se la versione in esecuzione è la 2.4.66 e il protocollo HTTP/2 è attivo. La patch elimina la condizione di double-free nel percorso di stream cleanup di h2_mplx.c.
  2. Verificare l'allocator APR in uso sui sistemi Linux: se la piattaforma impiega l'allocator mmap di default — come avviene su Debian e nei container Docker ufficiali — il rischio di RCE dimostrato in laboratorio si trasferisce direttamente su questi asset, che vanno trattati come criticità massima e isolati se non aggiornabili tempestivamente.
  3. Se l'aggiornamento immediato non è fattibile per vincoli di manutenzione o dipendenze interne, valutare la disabilitazione temporanea del protocollo HTTP/2 come mitigazione di emergenza. Il trigger è strettamente dipendente dall'elaborazione di frame HTTP/2 malformati; senza HTTP/2, il percorso offensivo non è percorribile.
  4. Monitorare i log del server web alla ricerca di pattern anomali: connessioni singole che inviano un frame HEADERS seguito immediatamente da RST_STREAM con codice errore non-zero possono indicare probing pre-attacco o tentativi di DoS. Configurare allarmi su questa sequenza riduce il tempo di rilevamento.

Il vero pericolo di CVE-2026-23918 non sta in una complessità offensiva da APT, ma nella frizione tra una semplicità d'attacco imbarazzante e l'adozione diffusa del protocollo HTTP/2. Quando un server web può essere abbattuto con meno traffico di una richiesta legittima, la linea tra vulnerabilità critica e instabilità di sistema scompare del tutto. Per i team di infrastruttura, il tempo che intercorre tra la lettura di questo bollettino e l'applicazione della patch 2.4.67 è il margine difensivo principale.

Domande frequenti

Le versioni precedenti alla 2.4.66 sono vulnerabili?
Le fonti attuali indicano la 2.4.66 come unica versione affetta da CVE-2026-23918, ma non forniscono una ragione tecnica che escluda categoricamente il bug in release precedenti che contengano il codice vulnerabile in h2_mplx.c. L'aggiornamento rimane buona pratica per tutte le installazioni non aggiornate.
L'RCE è praticabile fuori dai laboratori dei ricercatori?
Non è confermato. Il proof-of-concept funzionante è stato dimostrato solo in condizioni di laboratorio su sistemi x86_64 con allocator APR mmap, tipici di Debian e container Docker. Non esistono evidenze di exploit in-the-wild né di riproduzione su piattaforme con allocator diversi.
Perché la patch è arrivata il 4 maggio 2026 se il fix era pronto da dicembre 2025?
La divulgazione coordinata prevede un embargo per permettere ai maintainer di preparare le release. Il commit interno è avvenuto l'11 dicembre 2025, ma la pubblicazione è stata sincronizzata al rilascio pubblico di Apache 2.4.67. Questa pratica è standard nella sicurezza open source, anche se lascia le installazioni esposte durante l'intervallo.

Le informazioni sono state verificate sulle fonti citate e aggiornate al momento della pubblicazione.

Fonti

Link utili

Apri l'articolo su DeafNews