0x01-前言
2023年9月26日mosec在上海召开。借助BaijiuCon的机会,Numen Cyber 研究员@avboy1337 向参会者总结了绕过v8沙箱的思路,并演示了CVE-2023-21674从untrust权限提升到System权限的漏洞验证视频和一个最新版Android系统上触发的越界写漏洞演示视频。
2023年8月4日,我们公开了Chrome最新版v8 sandbox绕过。其本质是利用Function对象中的native指针未包装,实现劫持代码执行。
2023年9月20日,Man Yue Mo的Issue 1452137(CVE-2023-3420)公开,从公开的exp中可以看到,是用了JIT的function对象,本质也是使用的Function对象中的native指针劫持。经测试后发现在Chrome 116.0.5845.180版本之后,Function对象的指针劫持已经失效。至少在Function对象附近没有发现native指针。
在撰写exp时,Chrome render进程获得了相对读写能力后,借助ignition可实现控制rip,google 2023年 CTF中对该方法进行了提示。Numen研究员认为,如果想彻底对v8sbx进行封装,恐怕不得不考虑ignition中类似return等字节码处理。
实际上我们只要在v8相对读写范围内能够实现代码劫持,即可稳定绕过v8sbx,经过进一步尝试,发现最新版Chrome v8sbx绕过。
从①和②可以看到,对象位于v8相对读写内,高地址相同,同时内存区域属于可读可写。从③可以看到,我们能够实现控制rip。我们会在合适的时候将该方法尽快公开。
0x02 - web3钱包插件
由于Chrome的使用之广,影响之深远,web2作为web3的基础,某些特性直接影响了web3的安全基线。
这里仅以钱包安全为例(或者私钥等key的处理基于垃圾收集算法的场景)。由于底层采用了垃圾回收,引擎在间歇性扫描对象的过程中,没有在用户切换处理私钥或助记符的gui界面后立刻清理内存,导致私钥残留在内存中。实际上,一般并不仅仅是残留内存中,多数钱包还会将该私钥泄漏到主进程。
这里我们简单片面地描述钱包的安全基线:当黑客进入目标机器后,由于钱包的高度安全,黑客无法获取私钥密码助记符等关键信息。
然而,当钱包的设计基于垃圾回收算法时候,这个安全基线一般很难保证。上半年我们测试了多个插件钱包,几乎全部存在该漏洞。
甚至更坏的情况是:当黑客攻击目标用户浏览器时,多进程通信处于异常的时候,部分进程会卡死在系统中不会退出,此时多款存在私钥助记符泄漏的钱包,在与其他进程通信过程中将其长期保存在了僵尸进程中,黑客可不费吹灰之力将财产盗走。
私钥泄漏
助记符泄漏
0x03 - 小结
Numen安全团队建议,我们在处理基于私钥key、助记符等信息时,需要针对性处理关键信息的交互,尤其是当基于v8组件(chrome/electron/CEF等)甚至基于垃圾回收算法时,应考虑到密钥残留问题。由于Chrome主进程与子进程自动通信,子进程与服务器通信不得不经过主进程,只要关键信息没有加密,则很难不泄漏到主进程。
0x04 - 参考链接
https://twitter.com/numencyber/status/1706699102141178324
关于 Numen Cyber
Numen Cyber 是链上威胁检测与防御的先驱,团队成员拥有在亚马逊、华为、百度、奇虎360等众多知名大厂与 OKlink,知道创宇,成都链安等知名 Web3 主体安全岗位从业经历。
拥有 Web2+Web3 多重安全技能储备的 Numen Cyber 旗下拥有 ImmunX 和 Leukocyte 两款安全产品,分别可在应用层和物理层为 Web3 项目提供保护。其中 ImmunX 包含安全策略开放市场和合约防火墙等独创功能,可以为 Web3 生态提供一站式全方位的保护;Leukocyte 则是保护服务器安全,实时检测黑客针对服务器的各种攻击并自动阻断、报警。
目前 Numen Cyber 的合作伙伴包括不限于 Binance,Cobo,Suiet 等,也包括中国移动、中国电信、中国联通,以及阿里云、腾讯、华为、亚马逊、微软等。
Numen 官网
GitHub
https://twitter.com/@numencyber
Medium
https://medium.com/@numencyberlabs