Author: geneblue
Blog: https://geneblue.github.io/
环境
1 | 金立f103 |
分析
1 | drivers/misc/mediatek/m4u/mt6735/m4u.c |
1 | static long MTK_M4U_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) |
MediaTek 6735 处理的驱动 /proc/m4u
的 ioctl
接口存在一个任意地址写一字节漏洞,该漏洞通过
MTK_M4U_T_CONFIG_TF
命令即可触发,主要是因为
m4u_enable_tf
函数没有对输入参数做校验。
m4u_enable_tf
对应的汇编代码如下:
1 | m4u_enable_tf_ |
FFFFFFC000D9B4B8 + 0x30 * X0 + 0xc = W1(one byte)
ptmx_fops = 0xFFFFFFC000EB1380
覆盖 ptmx_fops 表地址,覆盖一个字节: 0xee ffffffee00eb1380 崩溃日志见 log1.txt
该任意地址覆盖只能间隔性(0x30)覆盖一个字节, 64位内核暂时找不到好的利用方式。