
मूल-कारण विश्लेषण और CVE-2026-64747 के लिए पहुंच-क्षमता PoC, जो AppleAVE2 कर्नेल एक्सटेंशन में एक बफर ओवरफ्लो है। इसमें रिवर्स किया गया IOKit वायर प्रोटोकॉल, ओवरफ्लो गणित, और कॉन्फ़िगर पथ को चलाने वाला एक यूज़रस्पेस PoC शामिल है।
CVE-2026-64747 के लिए रूट-कॉज़ विश्लेषण और macOS रीचैबिलिटी प्रूफ-ऑफ-कॉन्सेप्ट,
AppleAVE2 वीडियो एन्कोडर कर्नेल एक्सटेंशन (com.apple.driver.AppleAVE2) में एक बफर ओवरफ्लो,
जिसे macOS 26.6 (kext 905.40.1) में ठीक किया गया।
AppleAVE2 — प्रभाव: एक ऐप कर्नेल विशेषाधिकारों के साथ मनमाना कोड निष्पादित कर सकता है। एन्कोडर के वर्क-बफर आकार गणना में बफर ओवरफ्लो को बेहतर बाउंड्स जाँच के साथ संबोधित किया गया।
यह रिपॉजिटरी AppleAVE2UserClient के पूरी तरह से रिवर्स किए गए IOKit वायर प्रोटोकॉल का दस्तावेजीकरण करती है (सत्र बनाएँ → कॉन्फ़िगर करें → प्रति-फ्रेम प्रोसेस), सटीक ओवरफ्लो स्थान (HEVC 10-बिट मल्टीपास पथ में एक 32-बिट LRB वर्क-बफर आकार कैलकुलेटर), और एक यूज़रस्पेस PoC जो यूज़र क्लाइंट खोलता है, कॉन्फ़िगर पथ को कर्नेल के वैलिडेशन स्टैक के माध्यम से चलाता है, और कमजोर (905.36.1) और ठीक (905.40.1) बिल्ड के बीच अंतर प्रदर्शित करता है।
टियर (ईमानदार): रीचैबिलिटी + पूर्ण प्रोटोकॉल RE + विश्लेषणात्मक रूप से सिद्ध ओवरफ्लो गणित। RCE नहीं, कोई लाइव ओवरफ्लो प्रदर्शित नहीं — लैब होस्ट ठीक किया गया kext चलाता है, और एक हार्डवेयर क्षमता गेट (दोनों बिल्ड में मौजूद) कमजोर कैलकुलेटर चलने से पहले ओवरफ्लो करने वाले आयामों को अस्वीकार कर देता है। ओवरफ्लो को ट्रिगर करने के लिए एक लक्ष्य की आवश्यकता होती है जिसकी क्षमता तालिका आवश्यक आयामों को स्वीकार करती है (FIRE_READY.md §5-6 देखें)।
| फ़ाइल | क्या |
|---|
poc_ave2_reach.c | IOKit यूज़रस्पेस PoC: AppleAVE2UserClient खोलता है, एक सत्र बनाता है, रिवर्स किए गए स्ट्रक्चर के साथ कॉन्फ़िगर चलाता है। कोई एंटाइटलमेंट आवश्यक नहीं। |
ave2_wire.h | रिवर्स किया गया वायर फॉर्मेट: सेलेक्टर नंबर, स्ट्रक्चर आकार, और हर महत्वपूर्ण फील्ड ऑफसेट (चौड़ाई/ऊँचाई, encType, views/layers, chroma, बिट डेप्थ) |
WIRE_FORMAT.md | वायर-फॉर्मेट संदर्भ: डिस्पैच टेबल लेआउट, PAC क्वर्क, प्रति-सेलेक्टर अनुबंध |
FIRE_READY.md | ओवरफ्लो गणित (मोड-5 LRB कैलकुलेटर), इसे ट्रिगर करने के लिए सटीक इनपुट, पैच्ड-होस्ट रन साक्ष्य, और शेष अज्ञात |
evidence/ | पैच्ड-होस्ट रन से ioreg कैप्चर + कर्नेल लॉग (वैलिडेशन-स्टैक प्रगति) |
clang -O0 -g -arch arm64 -framework IOKit -framework CoreFoundation \
-o poc_ave2_reach poc_ave2_reach.c
./poc_ave2_reach # रूट आवश्यक नहीं; सेवा यूज़र संदर्भ से खुलती है
AppleAVE2 का एन्कोडर 32-बिट अंकगणित और कोई ओवरफ्लो जाँच के साथ एक LRB (लुकासाइड रेफरेंस बफर) वर्क-बफर आकार की गणना करता है। HEVC 10-बिट मल्टीपास पथ में (कैलकुलेटर param_2 = 5 के साथ आह्वानित), 64656×8080 जैसे आयाम (जो ड्राइवर के w*h ≤ 0x1FFE0000 क्लैम्प को पास करते हैं) घटक योग 0x80000000 बनाते हैं — साइन बिट सेट। कमजोर कैलकुलेटर नंगे 32-बिट योग लौटाता है; आकार डाउनस्ट्रीम में नकारात्मक माना जाता है, एक अंडरसाइज़्ड DART/IOMMU बफर आवंटित किया जाता है, और एन्कोडर DMA उसके पार लिखता है → कर्नेल हीप/DART भ्रष्टाचार → कर्नेल कोड निष्पादन। ठीक किया गया कैलकुलेटर प्रति-घटक साइन जाँच और एक 64-बिट योग जाँच जोड़ता है और LRB size overflow लॉग करता है।
__const अनुभाग से डिकोड की गई (स्ट्राइड 0x18 की पंक्तियाँ = {func, inSize<<32, outSize<<32}, एक PAC पॉइंटर क्वर्क के साथ)।IOServiceOpen को type=1 का उपयोग करना चाहिए (type=0 → create अस्वीकृत)।IOConnectCallAsyncStructMethod से गुजरना चाहिए (सिंक पथ वैलिडेशन से पहले IO_Config:337 गेट पर अस्वीकृत है)।शैक्षिक और रक्षात्मक अनुसंधान उद्देश्यों के लिए। बग वर्तमान macOS में पैच किया गया है; केवल अपने स्वामित्व वाले हार्डवेयर पर परीक्षण करें।