
PHP getimagesize() CVE-2025-14177 - Generatore di exploit per perdita di memoria heap Catena di exploit completamente funzionante in Python
getimagesize()Solo per test di penetrazione autorizzati e ricerca sulla sicurezza.
| Campo | Valore |
|---|---|
| CVE | CVE-2025-14177 |
| CWE | CWE-524 (Uso di risorsa non inizializzata) |
| Gravità | MODERATA — CVSS 6.3 |
| Causa principale | php_read_stream_all_chunks() scrive blocchi successivi in buffer[0], sovrascrivendo i dati precedenti con memoria heap non inizializzata |
getimagesize("php://filter/.../resource=malicious.jpg", $info)
└─ php_read_stream_all_chunks()
├─ Chunk 1 (8KB) → memcpy(buffer+0, chunk1, 8192)
├─ Chunk 2 (8KB) → memcpy(buffer+0, chunk2, 8192) ← overwrites!
└─ $info['APP1'] = chunk2 + uninitialized heap garbage
Un JPEG malevolo trasporta un marcatore APP1 sovradimensionato (16KB) per forzare il percorso di lettura multi-blocco. Il campo APP1 restituito perde memoria heap che può contenere credenziali, token, dati di sessione o puntatori ASLR.
[1] RECON Find PHP app exposing getimagesize() output (APP1 field)
[2] PREP Craft malicious.jpg (APP1 = 16KB)
[3] EXPLOIT Upload → trigger getimagesize($file, $info)
[4] EXTRACT Parse $info['APP1'] for leaked heap data
[5] IMPACT Credential theft / token extraction / ASLR bypass
python3 CVE-2025-14177.py [mode]
./exploit_output/)exploit_output/
├── malicious.jpg # payload JPEG appositamente creato (APP1 = 16KB)
├── exploit_standalone.php # exploit PHP distribuibile
├── exploit_report.json # rapporto di analisi completo
└── test_cases.json # 3 scenari di test
| Caso | Vettore |
|---|---|
| 1 | Caricamento diretto → getimagesize($_FILES[...], $info) |
| 2 | Filtro stream + LFI (php://filter/read=.../resource=...) |
| 3 | URL immagine remota (/preview.php?url=attacker.com/malicious.jpg) |
$infogetimagesize() con wrapper php://filterAggiornare PHP alla versione corretta. Nessuna soluzione alternativa — la patch è obbligatoria.
php -v # verify version
Se l'aggiornamento è bloccato: rimuovere APP1 da $info prima di restituirlo al client, o disabilitare php://filter in allow_url_fopen.
Questo strumento è solo per test di sicurezza autorizzati. L'uso non autorizzato contro sistemi di cui non si possiede la proprietà o per i quali non si ha esplicita autorizzazione scritta è illegale.
| Modalità | Azione |
|---|
demo | Demo completa dell'exploit (predefinita) |
gen | Genera JPEG malevolo + codice exploit PHP |
test | Genera JSON per casi di test |
analyze | Genera JPEG + simula + analizza la perdita |
flow | Stampa diagramma del flusso dell'attacco |