HeadlinesBriefing favicon HeadlinesBriefing.com

CVE-2025-13032: Avast एंटीवायरस सैंडबॉक्स एस्केप एक्सप्लॉइट

Hacker News •
×

Introduction यह ब्लॉग पोस्ट एवास्ट के शोध का दूसरा और अंतिम भाग है और CVE-2025-13032 के शोषण पर केंद्रित होगा, जिसे एवास्ट के kernel ड्राइवर में खोजा गया एक डबल-फेच वल्नेरेबिलिटी है। यह पोस्ट बग की पुनरावृत्ति करती है और हमें एक अद्यतन Windows 11 प्रणाली पर इसका शोषण करने की प्रक्रिया से गुजरती है। यदि आप इसे miss कर गए तो पहली भाग पढ़ें → https://www.safateam.com/intelligence-hub/research/technical-articles/cve-2025-13032-entering-and-breaking-the-avast-antivirus-sandbox-part-1

Bug Explanation वह बग जिसे हम शोषण करना चाहते हैं, एक डबल-फेच मुद्दा है जो kernel pool overflow की ओर ले जाता है। नीचे प्रस्तुत कोड स्निपेट उपयोगकर्ता द्वारा आपूर्ति की गई `_UNICODE_STRING` संरचना को कैप्चर करने के लिए supposed है, लेकिन उपयोगकर्ता इनपुट के `Length` क्षेत्र को multiple times fetch किया गया है, जिससे एक डबल-फेच समस्या परिणामस्वरूप होती है। पहली fetch एक बफर आवंटित करने के लिए की गई है जहां स्ट्रिंग की प्रतिलिपि बनाई जाएगी, और दूसरी fetch `memmove` करने के लिए की गई है आधारित retrieved value, जिससे यदि उपयोगकर्ता के बीच उन कार्यों में इसे बदलता है तो pool overflow परिणामस्वरूप होता है। डबल-फेच का शोषण करने के लिए, एक दूसरा thread एक तंग loop में चलता है, `_UNICODE_STRING` के shared `Length` field के बीच लगातार toggle करता है एक छोटे safe value और एक large malicious value (जैसे `0x1000`, allocated buffer से larger)। मुख्य thread vulnerable IOCTL को एक loop में कॉल करता है। जब timing align होती है — kernel `Length` को small के रूप में read करता है `ExAllocatePoolWithTag` कॉल के लिए, फिर `memmove` के लिए large के रूप में read करता है — allocated से अधिक bytes copy किए जाते हैं, जिससे pool overflow होता है। competition window narrow है लेकिन एक modest number of iterations के भीतर reliably जीत सकते हैं। हमारे लक्ष्य इस pool overflow का शोषण करके arbitrary kernel read/write primitive प्राप्त करना और local privilege escalation प्राप्त करना है। यह बग हमें अच्छे exploitation conditions देता है: overflow targets `PAGED_POOL`, दोनों allocation size और overflow size control में हैं, और content भी control में है। Paged Pool Windows kernel memory का एक region है जिसे objects और data के लिए उपयोग किया जाता है जिसे kernel या drivers की आवश्यकता होती है, लेकिन जिसे disk पर page out किया जा सकता है। इसका उपयोग high priority के साथ running करने वाले critical code द्वारा एक्सेस नहीं किए जाने वाले memory के लिए किया जाता है। The allocator groups allocations by size class, meaning same-sized objects tend to land close to each other in memory — the property that makes heap spraying viable. Since Windows 10 19H1 this is handled by the Segment Heap, which uses two backends: the LFH for small allocations, which picks free slots randomly within a size bucket, and the VS allocator for larger ones, which serves the first available chunk of the right size — each requiring a different spray strategy. We can also note that most Windows objects are stored in the paged ...