CVE-2019-8604 analysis
info
1 | Available for: macOS Sierra 10.12.6, macOS High Sierra 10.13.6, macOS Mojave 10.14.4 |
zdi的描述:
1 | This vulnerability allows remote attackers to escape the sandbox on affected installations of Apple Safari. An attacker must first obtain the ability to execute low-privileged code on the target system in order to exploit this vulnerability. |
还是zdi的描述详细,苹果的描述真的是不怎么可信。
vuln
两种找到这个洞的方式,靠diff或者沿着这个描述尝试挖。
我首先试了试diff,因为我用的是 10.14.3
和10.14.6
,变化有点大,diff真的不好使。
所以我选择了第二种方式。 既然是直接获取了长度并使用,那就先确定该服务使用的ipc方式,然后找获取数据的函数的xref,然后一个一个看,没一会儿就能看到这个可疑的地方了:
10.14.3
1 | char __fastcall sub_100053185(__int64 a1, __int64 a2, __int64 a3) |
copy的length可控,dst是根据用户的length分配的,但是source不一定有那么大,length又没有check,所以就越界读了。
patch by diff
10.14.6
1 | char __fastcall sub_10004405C(__int64 a1, __int64 a2, __int64 a3) |
取了要copy的data的长度,并且检查了用户传递来的size是不是小于等于这个值,之后再拷贝。