Pwn2own 2022 Tesla 利用链 (ConnMan 堆越界写 RCE)
Pwn2own 2022 Tesla 利用链 (ConnMan 堆越界写 RCE)
- Opening the doors and windows 0-click RCE on the Tesla Model3
- HEXACON2022 - 0-click RCE on the Tesla Model 3 by David Berard & Vincent Dehors
漏洞分析
ConnMan 处理 WIFI Portal 时的堆越界写,这部分协议特性称作:WISPR
WISPR 特性和漏洞:
Exploit 使用的漏洞为 CVE-2022-32292, count 和 pos 的计算有问题导致会修改相邻内存块中的 \x0a --> \x00
漏洞利用
堆布局原语:利用 http header 作为内存申请和释放原语
信息泄露
思路: byte 越界写 --> 劫持指针 --> DOUBLE FREE --> 1'st free & realloc with dhcp --> 2'st free && write libc ptr to dhcp mem --> leak.
-
通过布局让 receive_buffer 后面跟着一个 hashtable.values 指针数组,利用漏洞修改指针的 \x0a --> \x00,让两个指针指向同一块内存。
-
-
然后用 dhcp hostname 占位重叠内存。
-
利用 hashtable.values 的引用释放 hostname 所在内存,将块放到 unsorted bin --> 写入 libc 地址到 hostname
-
-
dhcp 返回 hostname 给攻击者
代码执行
方案一 (LIBC 2.29)
构造重叠堆块,然后劫持 tcache next 指针,任意地址写。
方案二 (LIBC 2.34)
劫持其他函数指针.
发送 CAN 报文
connman 可以用 raw socket 发送 can 报文,实现特定功能。