
CVE-2019-2215 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो Android binder driver में एक use-after-free कमजोरी है, जो कमजोर उपकरणों पर स्थानीय विशेषाधिकार वृद्धि को सक्षम करता है।
निम्नलिखित समस्या android-msm-wahoo-4.4-pie शाखा में https://android.googlesource.com/kernel/msm (और संभवतः अन्य) में मौजूद है:
binder ड्राइवर में /drivers/android/binder.c पर binder_thread संरचना के wait सदस्य का use-after-free है।
जैसा कि upstream कमिट में वर्णित है:
“binder_poll() thread->wait वेट्क्यू को पास करता है जिस पर काम के लिए सोया जा सकता है। जब कोई थ्रेड जो epoll का उपयोग करता है, BINDER_THREAD_EXIT का उपयोग करके स्पष्ट रूप से बाहर निकलता है, तो वेट्क्यू मुक्त हो जाता है, लेकिन इसे संबंधित epoll डेटा संरचना से कभी नहीं हटाया जाता है। जब प्रक्रिया बाद में बाहर निकलती है, तो epoll क्लीनअप कोड वेटलिस्ट तक पहुँचने का प्रयास करता है, जिसके परिणामस्वरूप use-after-free होता है।”
निम्नलिखित proof-of-concept KASAN के साथ कर्नेल बिल्ड में UAF क्रैश दिखाएगा (प्रारंभिक upstream bugreport https://lore.kernel.org/lkml/[email protected]/ से):
#include <fcntl.h>
#include <sys/epoll.h>
#include <sys/ioctl.h>
#include <unistd.h>
#define BINDER_THREAD_EXIT 0x40046208ul
int main()
{
int fd, epfd;
struct epoll_event event = { .events = EPOLLIN };
fd = open("/dev/binder0", O_RDONLY);
epfd = epoll_create(1000);
epoll_ctl(epfd, EPOLL_CTL_ADD, fd, &event);
ioctl(fd, BINDER_THREAD_EXIT, NULL);
}
यह समस्या दिसंबर 2017 में 4.14 LTS कर्नेल [1], AOSP android 3.18 कर्नेल [2], AOSP android 4.4 कर्नेल [3], और AOSP android 4.9 कर्नेल [4] में पैच की गई थी, लेकिन Pixel 2 नवीनतम सुरक्षा बुलेटिन के साथ स्रोत कोड समीक्षा के आधार पर अभी भी असुरक्षित है।
स्रोत कोड समीक्षा के आधार पर जो अन्य उपकरण असुरक्षित दिखाई देते हैं वे हैं (जब तक अन्यथा न कहा जाए, 8.x रिलीज़ का संदर्भ लेते हुए):
हमारे पास सबूत है कि इस बग का उपयोग जंगल में किया जा रहा है। इसलिए, यह बग 7 दिनों के प्रकटीकरण की समय सीमा के अधीन है। 7 दिन बीत जाने या पैच व्यापक रूप से उपलब्ध होने के बाद (जो भी पहले हो), बग रिपोर्ट सार्वजनिक रूप से दिखाई देगी।
पुष्टि की गई कि यह proof-of-concept Pixel 2 पर build walleye_kasan-userdebug 10 QP1A.191105.0035899767 के साथ काम करता है, जिससे KASAN क्रैश होता है। Proof of concept C कोड और new.out संलग्न हैं। KASAN कंसोल आउटपुट संलग्न है।
मुझे TAG और बाहरी पार्टियों से एक Android एक्सप्लॉइट के बारे में तकनीकी जानकारी प्राप्त हुई जो NSO समूह को जिम्मेदार ठहराया जाता है। इन विवरणों में बग और एक्सप्लॉइट पद्धति के बारे में तथ्य शामिल थे, जिनमें शामिल हैं लेकिन इन्हीं तक सीमित नहीं:
इन विवरणों का उपयोग करके, मैंने निर्धारित किया है कि उपयोग किया जा रहा बग लगभग निश्चित रूप से इस रिपोर्ट वाला है, क्योंकि मैंने पैच की तुलना करके अन्य संभावित उम्मीदवारों को खारिज कर दिया। इस बग और इसे पहचानने की पद्धति की अधिक विस्तृत व्याख्या एक आगामी ब्लॉग पोस्ट में लिखी जाएगी जब मुझे समय मिलेगा।
हमारे पास वर्तमान में एक्सप्लॉइट का कोई नमूना नहीं है। नमूनों के बिना, हम न तो समयरेखा की पुष्टि कर पाए हैं और न ही पेलोड की।
यह बग एक स्थानीय विशेषाधिकार वृद्धि भेद्यता है जो एक असुरक्षित डिवाइस से पूरी तरह समझौता करने की अनुमति देती है। यदि एक्सप्लॉइट वेब के माध्यम से वितरित किया जाता है, तो इसे केवल एक रेंडरर एक्सप्लॉइट के साथ जोड़ा जाना चाहिए, क्योंकि यह भेद्यता सैंडबॉक्स के माध्यम से सुलभ है।
मैंने एक स्थानीय एक्सप्लॉइट proof-of-concept संलग्न किया है ताकि यह प्रदर्शित किया जा सके कि स्थानीय रूप से चलने पर इस बग का उपयोग मनमाना कर्नेल रीड/राइट प्राप्त करने के लिए कैसे किया जा सकता है। CVE-2019-2215 का शोषण करने के लिए केवल अविश्वसनीय ऐप कोड निष्पादन की आवश्यकता है। मैंने Pixel 2 पर चल रहे POC का एक स्क्रीनशॉट (success.png) भी संलग्न किया है, जो Android 10 पर सुरक्षा पैच स्तर सितंबर 2019 (google/walleye/walleye:10/QP1A.190711.020/5800535:user/release-keys) के साथ चल रहा है।
Android से विक्रेता का बयान:
"यह मुद्दा Android पर उच्च गंभीरता के रूप में रेट किया गया है और संभावित शोषण के लिए स्वयं एक दुर्भावनापूर्ण एप्लिकेशन की स्थापना की आवश्यकता है। वेब ब्राउज़र के माध्यम से जैसे कोई अन्य वेक्टर, एक अतिरिक्त एक्सप्लॉइट के साथ जंजीर की आवश्यकता होती है। हमने Android भागीदारों को सूचित कर दिया है और पैच Android Common Kernel पर उपलब्ध है। Pixel 3 और 3a डिवाइस असुरक्षित नहीं हैं जबकि Pixel 1 और 2 डिवाइस इस मुद्दे के लिए अक्टूबर अपडेट के हिस्से के रूप में अपडेट प्राप्त करेंगे।"