
यह CVE-2025-38352 के लिए एक प्रूफ ऑफ कॉन्सेप्ट है, जो Linux कर्नेल के POSIX CPU टाइमर्स कार्यान्वयन में एक कमजोरी है। सितंबर 2025 एंड्रॉइड बुलेटिन में उल्लेख किया गया है कि इस कमजोरी का उपयोग सीमित, लक्षित शोषण में जंगल में किया गया है।
यह रिपॉजिटरी केवल प्रूफ-ऑफ-कॉन्सेप्ट (PoC) रखती है जो भेद्यता को ट्रिगर करता है।
मैंने इस भेद्यता के लिए एक पूर्ण शोषण लिखा है। आप नीचे दिए गए लिंक में विवरण पा सकते हैं।
https://github.com/farazsth98/chronomaly

PoC वास्तव में इस बात पर निर्भर करता है कि CPU समय getpid सिस्टम कॉल द्वारा कैसे उपभोग किया जाता है।
इसके लिए, मैंने यह सुनिश्चित किया है कि PoC को जितना संभव हो सके सिस्टम-अज्ञेयवादी बनाया जाए - अर्थात, यह आपके सिस्टम पर काम करना चाहिए भले ही getpid सिस्टम कॉल मेरे सिस्टम की तुलना में अधिक/कम समय का उपयोग करता हो।
यह CVE-2025-38352 के लिए एक PoC है, जो Linux कर्नेल के POSIX CPU टाइमर्स कार्यान्वयन में एक रेस कंडीशन भेद्यता है। सितंबर 2025 Android बुलेटिन में उल्लेख किया गया है कि इस भेद्यता का सीमित, लक्षित शोषण वास्तविक दुनिया में किया गया है।
यह LTS 6.12.33 के लिए लिखा गया है, और कर्नेल कॉन्फिग में CONFIG_POSIX_CPU_TIMERS_TASK_WORK को बंद करने की आवश्यकता है। इसके अतिरिक्त, मैंने पूर्ण प्रीएम्प्शन (CONFIG_PREEMPT=y) भी चालू किया क्योंकि Android कर्नेल यही उपयोग करता है।
जब रेस जीत ली जाती है, तो यह struct k_itimer के use-after-free की ओर ले जाता है।
परीक्षण वातावरण स्थापित करने के बारे में अधिक जानकारी के लिए, कृपया ऊपर दिए गए ब्लॉग पोस्ट को देखें, विशेष रूप से "Testing Environment TL;DR सेक्शन"।
नोट: इस PoC के काम करने के लिए किसी पैच की आवश्यकता नहीं है (यह इसलिए डाल रहा हूँ क्योंकि मेरे पिछले PoC को लगभग 500ms mdelay की आवश्यकता थी 😅)।
PoC ने हमेशा मेरे लिए 100 रीट्राई के भीतर ट्रिगर किया है (यह वास्तव में 60 से अधिक रीट्राई तक कभी नहीं पहुंचा है)। विश्वसनीयता में कुछ स्थानों पर सुधार किया जा सकता है IMO, लेकिन मैं बाद में उस पर काम करूंगा।
profiler_patch.diff फ़ाइल में handle_posix_cpu_timers() में कुछ प्रोफाइलिंग कोड लागू करने के लिए एक पैच है। यह रेस विंडो बढ़ाने का तरीका निकालने में उपयोगी है, क्योंकि यह firing सूची पुनरावृत्ति द्वारा उपयोग किए गए निष्पादन समय की मात्रा प्रिंट करता है यहाँ।
दिए गए Makefile के साथ कंपाइल करें और इसे /poc के साथ चलाएं।
यदि आप प्रोफाइलर चलाना चाहते हैं, तो इसे PoC की तरह ही कंपाइल करें।
यदि आपके कोई प्रश्न हैं तो मुझे Twitter या कहीं और संपर्क करें।