2020-9 android kernel vulnerability

qualcomm:https://www.qualcomm.com/company/product-security/bulletins/september-2020-bulletin
google:https://source.android.com/security/bulletin/2020-09-01
ps:莫名的这个月开源代码补丁特别少

0x00 CVE-2020-11124

发生位置

diagchar_core.c的diag_remove_client_entry函数

补丁

https://source.codeaurora.org/quic/la/kernel/msm-4.14/commit/?id=20205d9cd7980b2ae61696de971d729566c5f7cd

触发方法:

漏洞简介说的是在client超过限制的最大值时会再分配client_map,不怎么清楚这个,但是从补丁的位置可以判断,如果尝试两次diag_remove_client_entry同一个file,那么可以在判断pid的值成功之后,利用race condition可以在kfree(diagpriv_data)之前提前释放diagpriv_data,造成UAF。

漏洞成因

在进行pid判断时没有对当前driver->client_map增加互斥锁,导致可能被篡改。

修复方法

增加互斥锁

时间

2016-12-05至2020-02-26

是什么:

字符驱动接口。用来根据配置文件查询android usb gadget

0x01 CVE-2020-3656

发生位置

mhi_main.c的mhi_process_cmd_completion()函数

补丁

https://source.codeaurora.org/quic/la/kernel/msm-4.14/commit/?id=e98a048a50f022181e008c60fea0c9cdee83e05a

触发方法:

貌似无法控制当前的命令通道标识,但是当前命令通道标识大于控制器最大支持的标识数,会造成越界访问,同时由于是mhi_chan,所以会出现特定位置的越界写。

漏洞成因

没有对读取命令的通道标识符进行范围的判断。

修复方法

增加对chan 的范围判断。

时间

2018至2020-01-30

是什么:

Modem Host Interface在命令处理时的函数

0x02 CVE-2020-3674

发生位置

adsprpc.c的fastrpc_device_ioctl()函数

补丁

https://source.codeaurora.org/quic/la/kernel/msm-4.14/commit/?id=ef44a87dc872a945d31eb9199895e460646ac946

触发方法:

尝试对fastrpc进行ioctl调用FASTRPC_IOCTL_GETPERF,这里会将fperf最后的struct hlist_node结构体也暴露给用户空间。

漏洞成因

在copy_to_user时长度过长,导致内核地址泄露。

修复方法

修改源长度减小struct hlist_node,确保在结构体最后的struct hlist_node不会被泄露。

时间

2017-08-17至2019-12-09

是什么:

数字信号处理服务

0x03 CVE-2020-0402

发生位置

fs文件夹下的多个文件

补丁

https://android.googlesource.com/kernel/common/+/dcf23ac3e846ca0cf626c155a0e3fcbbcf4fae8a%5E%21/#F0

触发方法:

创建一个文件写锁,用线程a来解锁当前的文件写锁,同时线程b又尝试增加一个新的文件锁到当前这个文件上。如果线程b先增加了文件锁,然后a线程进入抢占b线程,把当前等待的新文件锁fl_blocker 置为null,此时b线程继续执行到locks_delete_block会发现fl_blocker 被置为null,所以直接退出报错,所以新的文件锁被释放,最后a执行完了释放文件写锁,企图唤醒在等待的新的文件锁,触发了UAF。

漏洞成因

该漏洞说修复上一次修复的不足。为了修复上诉的race condition漏洞,删除了对于waiter->fl_blocker等于null的判断。

修复方法

将对fl_blocker字段的判断改为直接显示的对fl_blocked_member链表为空进行判断。

时间

2018-11-30 至2020-03-18

是什么:

linux kernel中的文件锁操作相关,fcntl()

0x04 CVE-2020-0402

发生位置

fs文件夹下的多个文件

补丁

https://android.googlesource.com/kernel/common/+/dcf23ac3e846ca0cf626c155a0e3fcbbcf4fae8a%5E%21/#F0

触发方法:

两次触发list_add就好了,比较合适的函数是uvc_scan_chain,直接在内部就进行了三次list_add,但是uvc_scan_chain函数貌似只在uvc_probe()中被调用到,也就是只在函数注册时作为一个回调函数被调用,调用不可控。

漏洞成因

没有对uvc_entity 中的chain的新增节点做存在性判断,会导致同一个节点在uvc_entity 的chain中存在两次,即会有指针指向自己。

修复方法

增加对新增节点的前后指针的判断,如果不为空则直接视为是当前节点已经入列。

时间

2009-07-01至2019-11-08

是什么:

uinput驱动

©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页