vgic_its_invalidate_cache()xa_for_each()xa_erase()vgic_put_irq()GITS_CTLREnableLPIsजबकि गेस्ट-टू-होस्ट एस्केप दुर्लभ हैं, वे हाइपरवाइजर बग का सबसे खतरनाक वर्ग हैं क्योंकि वे उस आइसोलेशन सीमा को तोड़ देते हैं जिस पर क्लाउड कंप्यूटिंग निर्भर करती है। पिछले सार्वजनिक KVM एस्केप x86 को लक्षित करते थे, आमतौर पर QEMU या AMD-विशिष्ट कोड के माध्यम से । ITScape पहला कार्यशील एक्सप्लॉइट है जो स्वयं इन-कर्नेल KVM कोड के माध्यम से एक अप्रिविलेज्ड arm64 गेस्ट VM से ब्रेकआउट का प्रदर्शन करता है — किसी यूज़रस्पेस एमुलेटर बग की आवश्यकता नहीं है
।
Graviton, Ampere Altra, या मल्टी-टेनेंट वर्कलोड वाले किसी भी arm64 KVM होस्ट को चलाने वाले क्लाउड प्रदाताओं के लिए, एक गेस्ट यह कर सकता है:
कमजोर कोड LPI ट्रांसलेशन कैश अमान्यकरण पथ (invalidation path) में स्थित है। जब कर्नेल को कैश एंट्रीज को फ्लश करने की आवश्यकता होती है, तो यह xa_for_each() के साथ XArray के माध्यम से पुनरावृति (iterate) करता है और प्रत्येक एंट्री पर रेफरेंस काउंट जारी करने के लिए vgic_put_irq() को कॉल करता है। समस्या यह है कि xa_for_each() ऐसी एंट्रीज लौटाता है जो पहले से ही एक समवर्ती ऑपरेशन द्वारा मिटाई जा चुकी हो सकती हैं — जैसे कि एक अलग vCPU से जारी DISCARD ITS कमांड। अमान्य लूप अभी भी उस पहले से हटाई गई एंट्री पर संदर्भ छोड़ता है, जिससे डबल-पुट और अंततः 'यूज़-आफ्टर-फ्री' होता है
।
उसी कोड में एक पिछली भेद्यता, CVE-2024-26598, ने लॉक छोड़ने से पहले vgic_its_check_cache() के अंदर रेफकाउंट बढ़ाकर LPI ट्रांसलेशन कैश हिट पथ में UAF को आंशिक रूप से संबोधित किया था। उस फिक्स ने अमान्यकरण पथ को कवर नहीं किया, जिससे रेस एक अलग ट्रिगर अनुक्रम के माध्यम से शोषण योग्य बनी रही
।
अपस्ट्रीम फिक्स vgic_its_invalidate_cache() को संशोधित करता है ताकि vgic_put_irq() केवल xa_erase() द्वारा लौटाए गए मान पर कॉल किया जाए, न कि इटरेटर द्वारा छुई गई हर एंट्री पर। कमिट संदेश में लिखा है: "KVM: arm64: vgic-its: Drop the translation cache reference only for the erased entry"
।
चूंकि xa_erase() परमाणु रूप से (atomically) पुरानी एंट्री को हटाता और लौटाता है — या यदि एंट्री पहले ही हट चुकी थी तो NULL लौटाता है — यह फिक्स सुनिश्चित करता है कि रेफरेंस काउंट ठीक एक बार घटाया जाए, जिससे डबल-फ्री विंडो समाप्त हो जाती है। पैच जून 2026 की शुरुआत में अपस्ट्रीम कर्नेल में शामिल हुआ और लगभग 8-10 जून, 2026 को तेजी से 6.x स्थिर श्रृंखला में खींच लिया गया
। Red Hat, SUSE और Debian सहित प्रमुख वितरणों ने अपनी समर्थित कर्नेल शाखाओं के लिए बैकपोर्टेड फिक्स जारी किए हैं
।
ह्यूनवू किम ने 9-10 जून, 2026 के आसपास GitHub पर सार्वजनिक रूप से एक कार्यशील एक्सप्लॉइट जारी किया। रिपॉजिटरी में पूर्ण स्रोत कोड, चरण-दर-चरण पुनरुत्पादन निर्देश और शोषण तकनीक का तकनीकी विवरण शामिल है । एक्सप्लॉइट एक साथ DISCARD कमांड और LPI ट्रांसलेशन कैश लुकअप जारी करने वाले vCPU थ्रेड्स का समन्वय करके रेस को ट्रिगर करता है, जो होस्ट कोड निष्पादन के लिए 'यूज़-आफ्टर-फ्री' को सटीक रूप से लैंड करता है।
एक विश्वसनीय PoC की सार्वजनिक उपलब्धता का मतलब है कि सामान्य एक्सप्लॉइट स्कैनर और वास्तविक दुनिया के हमलावर न्यूनतम प्रयास से इस कमजोरी को हथियार बना सकते हैं, जिससे खुलासे और सक्रिय हमलों के बीच की खिड़की कम हो जाती है।
यदि आप मल्टी-टेनेंट arm64 KVM इंफ्रास्ट्रक्चर — AWS Graviton, Ampere Altra, या कोई समान प्लेटफ़ॉर्म — संचालित करते हैं, तो इसे तत्काल आपातकालीन पैच चक्र के रूप में लें।
Comments
0 comments