
CVE-2016-7608: IOFireWireFamily में बफ़र ओवरफ़्लो
IOFireWireFamily-overflow, CVE-2016-7608 के लिए एक proof-of-concept एक्सप्लॉइट है, जो IOFireWireUserClient में एक बफर ओवरफ़्लो है
जिसे macOS Sierra 10.12.2 में ठीक किया गया था। यह भेद्यता
फायरवायर पोर्ट वाले उपकरणों पर denial of service या संभवतः मनमाना कोड निष्पादन उत्पन्न करने के लिए
ट्रिगर की जा सकती है।
AppleFWOHCI::updateROM विधि OSData तर्क की लंबाई की जाँच नहीं करती है, इससे पहले कि वह bcopy करे
उसकी सामग्री को AppleFWOHCI_IOMemoryBlock32::create का उपयोग करके आवंटित निश्चित-आकार वाले मेमोरी क्षेत्र में।
एक्सप्लॉइट को IOFireWireUserClient के एक उदाहरण का उपयोग करके ट्रिगर किया जा सकता है। विधि को कॉल करना
localConfigDirectory_Create एक का हैंडल देता है। मनमाना डेटा
विधि का उपयोग करके इस निर्देशिका ऑब्जेक्ट में जोड़ा जा सकता है, जो
32-बिट पैरामीटर की सीमाओं से परे डेटा के आकार को प्रतिबंधित नहीं करती है। अंत में,
एक्सप्लॉइट को कॉल करके ट्रिगर किया जा सकता है, जो अंततः
को कॉल करता है। एक ऑब्जेक्ट बनाता है जो संकलित
ROM का प्रतिनिधित्व करता है, जिसमें पहले जोड़ा गया उपयोगकर्ता-नियंत्रित डेटा भी शामिल होता है। फिर यह ऑब्जेक्ट को
को पास करता है, जो डेटा को द्वारा इंगित
मेमोरी क्षेत्र में कॉपी करता है। यह में का उपयोग करके आवंटित 4096-बाइट मेमोरी क्षेत्र है।
यदि को 4096 से अधिक बाइट्स पास किए जाते हैं,
तो लेखन इस आवंटन को अगले
पृष्ठों पर ओवरफ्लो कर देगा।
IOLocalConfigDirectorylocalConfigDirectory_addEntry_BuffersizelocalConfigDirectory_PublishIOFireWireController::UpdateROMUpdateROMOSDataOSDataAppleFWOHCI::updateROMfpNextConfigROMAppleFWOHCI::setupAsyncAppleFWOHCI_IOMemoryBlock32::createlocalConfigDirectory_addEntry_Bufferव्यवहार में, ओवरफ्लो हुए बफर के बाद का पृष्ठ आमतौर पर अनमैप्ड होता है, जिससे ओवरफ्लो पर kernel panic होता है।
IOFireWireFamily-overflow कोड सार्वजनिक डोमेन में जारी किया गया है। शिष्टाचार के रूप में मैं अनुरोध करता हूं कि यदि आप इस कोड का संदर्भ देते हैं या उपयोग करते हैं, तो इसका श्रेय मुझे दें।