
#CVE-2022-31630 - Proof of Concept Exploit per PHP 7.4.33
Avviso: questo codice è stato creato solo per scopi educativi e di test in un ambiente di laboratorio isolato. L'utilizzo su altri sistemi senza autorizzazione è illegale e irresponsabile.
📋 Descrizione
CVE-2022-31630 è una vulnerabilità di lettura Out-of-Bounds (OOB) nell'estensione GD di PHP, in particolare nella funzione imageloadfont(). Questa vulnerabilità consente a un attaccante che può controllare il file font caricato dall'applicazione PHP di leggere dati oltre i limiti del buffer allocato, il che può causare:
· Denial of Service (crash) · Information Disclosure (divulgazione del contenuto della memoria sensibile)
Questa vulnerabilità interessa le versioni di PHP:
· 7.4.x precedenti alla 7.4.33 · 8.0.x precedenti alla 8.0.25 · 8.1.x precedenti alla 8.1.12
PHP 7.4.33 è la prima versione che ha ricevuto la patch per questa CVE. Pertanto, il codice exploit in questo repository mostrerà la differenza di comportamento tra la versione vulnerabile (≤ 7.4.32) e la versione già patchata (≥ 7.4.33).
🔬 Dettagli tecnici
La vulnerabilità risiede nella mancanza di validazione dell'input durante la lettura dell'header dei file font GD (.gdf). I file font hanno un header con la seguente struttura:
· 2 byte: magic number (0x01BE) · 2 byte: numero di caratteri (nchars) · 2 byte: larghezza di ogni carattere in pixel (width) · 2 byte: altezza di ogni carattere (height) · 2 byte: numero di byte per carattere (char_offset)
Se il valore di width viene impostato a un valore molto grande (ad esempio 65535), PHP alloca un buffer troppo piccolo per memorizzare i dati bitmap del font. Quando la funzione imagechar() legge successivamente un carattere da quel font, accede a memoria oltre i limiti del buffer, causando una lettura OOB.
🚀 Modalità di utilizzo
📚 Riferimenti
· CVE-2022-31630 su NVD · Commit della patch in php-src · PHP Release Announcements
Creato per scopi educativi riguardanti