提醒一下大家,今天推荐的内容,部分是国内读者不应该看的——《中华人民共和国计算机信息网络国际联网管理暂行规定》第六条规定“计算机信息网络直接进行国际联网,必须使用邮电部国家公用电信网提供的国际出入口信道。任何单位和个人不得自行建立或者使用其他信道进行国际联网”,第十四条规定“违反本规定第六条、第八条和第十条的规定的,由公安机关责令停止联网,给予警告,可以并处 15000 元以下的罚款;有违法所得的,没收违法所得”。
今天来换一下口味,分享几个在野的Android漏洞利用。这两天在疯狂徒手搬家,搬离原来租的半个车库,抱歉拖更
Google的研究人员近日发了一个blog,表示找到了Android & IOS & 三星手机浏览器中的exploit chain。看完blog,感觉食之无味,那篇blog对于被利用的漏洞只是简单提了一下,并没有详细分析。本文就来尝试总结一下exploit chain中涉及到的部分有意思的漏洞。
blog链接:https://blog.google/threat-analysis-group/spyware-vendors-use-0-days-and-n-days-against-popular-platforms/
01
—
调用链简介
Google’s Threat Analysis Group (TAG) 一直监控Android和ios设备的安全状况,近日,TAG发布了一些文章,介绍了几条攻击链条,这些链条利用了CVE-2023-0266 、 CVE-2022-4262等n-day或是0-day漏洞
在2022年11月,TAG发现了一些影响Android和iOS的0-day漏洞的攻击链,这些攻击链通过短信发送的bit.ly链接(短链接,诈骗专用)传送给了意大利、马来西亚和哈萨克斯坦的用户。
当用户点击这些链接时,链接会将他们重定向到托管Android或iOS漏洞的页面,然后再将他们重定向到一些合法网站,比如意大利货运和物流公司BRT的货运跟踪页面或马来西亚的热门新闻网站。
这样,用户看到的就是正常的页面。
攻击者就能够不被察觉到地利用这些漏洞攻击。
02
—
ios调用链
iOS漏洞利用链针对的是iOS 15.1之前的版本,包含以下漏洞利用,其中包括一个0-day漏洞:
1. CVE-2022-42856: 这是一个攻击WebKit的远程代码执行漏洞,利用了JIT编译器内部的类型混淆问题(在被利用时为0-day漏洞)其中,WebKit是一个开源的Web浏览器引擎,被用于Apple Safari。
找到了这个漏洞的patch,但是并没有找到可用的exploit或是详细解析。
patch
https://github.com/WebKit/WebKit/commit/98940f219ba0e3eb6d958af483b73dd9cc75c28c#diff-90a5d15b3faae39b6e5075902ae5fd2e0b7f7f40bb0590f3e298e7715db048e5
patch 中提到,这个漏洞的成因是isNotInt32()函数,这个函数会过滤掉double 数据中是NaN的数据。但是JIT complier会认为isNotInt32()的返回值永远为False,就直接优化掉了包含isNotInt32() 的代码片段。这会导致程序在应当退出时不退出。
2. PAC Bypass:该调用链利用了一种PAC(Pointer Authentication Codes)绕过技术来绕过Apple对于指针权限的检测,在2022年3月,苹果在WebKit中删除了DYLD_INTERPOSE以修复此问题。
3. CVE-2021-30900:这是一个影响AGXAccelerator的沙箱逃逸和特权升级漏洞,苹果在iOS 15.1中修复了此漏洞。这个漏洞之前在GitHub上2020年发布的一个名为oob_timestamp的项目中被描述过。
这个漏洞的成因是类型size检测的过程中,漏掉了对于IOAccelKernelCommand结构体8-byte的header的检测,因此导致了out-of-bound write。
03
—
Android调用链
Android漏洞exploit chain针对使用ARM GPU且运行Chrome 106之前版本的手机用户。它包含三个漏洞,其中一个是0-day漏洞:
1. CVE-2022-3723:这是Chrome中的一种类型混淆漏洞,Avast在野外发现并在2022年10月修复,修复版本为107.0.5304.87。
2. CVE-2022-4135:这是一个仅影响Android的Chrome GPU沙箱绕过漏洞(在攻击时为0-day漏洞),在2022年11月修复。Project Zero的Sergei Glazunov协助分析了此漏洞利用并为此漏洞编写了根本原因分析报告。
这个漏洞的成因是out-of-bound access。正常情况下,level_infos会被设置成MaxLevelsForTarget(target)
然而一个函数将其设定成了了默认为1,并且缺少了大小检查
这就导致了后面out-of-bound访问的发生。
感觉这种漏洞很难用普通的静态分析检测出来,因为其中的自定义函数实在是太多太复杂了。
3. CVE-2022-38181:这是一个特权升级漏洞,由ARM在2022年8月修复。目前不清楚在报告给ARM之前攻击者是否已经利用了这个漏洞。
然而,虽然这些漏洞一直都有在野应用,TAG一直没能够找出完整的调用链条。近日,TAG发出blog,表示找到了在三星浏览器(使用Chrome 102版本)中的完整调用链条。
04
—
三星浏览器调用链
除了上述两条利用浏览器的通用利用链条,TAG也在三星浏览器中找到了一条利用链条
TAG找到的漏洞利用链是针对最新版本的三星浏览器的,该浏览器运行在Chromium 102上,没有使用chrome最新的版本。
调用链条如下:
1. CVE-2022-4262:这是Chrome中的一种类型混淆漏洞,已在2022年12月修复。
Chrome 的 V8 引擎可能会多次解析给定的 JavaScript 源字符串:由于字节码老化,现有的字节码可能会在一段时间不被使用后被清除掉。在这种情况下,如果函数后来再次被使用,它将会被重新编译。
然而,这种解析可能出现问题,例如下面这个函数
V8第一次解析时候,不知道要解析成一个“a = class b3“的赋值语句还是解析成“=>”的函数&参数a的默认值。
然而第二次解析的时候,V8就知道了这里应该解析成函数&参数,这就可能导致两次解析结果不同。
第一次和第二次编译生成的字节码应该是相同的,两者之间的任何不匹配可能会导致内存损坏,因为其他数据结构,如feedback vector,在重新解析时不会重新创建,并且与(第一次)字节码相关联。这就可能导致memory corruption。
2. CVE-2022-3038:这是Chrome中的一个沙箱逃逸漏洞,已在2022年8月修复,版本号为105,由Sergei Glazunov在2022年6月发现。
3. CVE-2022-22706:这是Mali GPU内核驱动程序中的漏洞,由ARM在2022年1月修复,并被标记为在野外使用。在交付时,最新的三星固件尚未包含此漏洞的修复。这个漏洞授予攻击者系统访问权限。
4. CVE-2023-0266:这是Linux内核声音子系统中的race condition漏洞,可以从系统用户处访问,为攻击者提供内核读取和写入访问权限(在攻击时为0-day漏洞)。
这个漏洞的成因是Android在2017年更新了64-bit的函数调用,却没有更新32-bit的函数调用。导致32-bit版本的函数调用会出现竞争关系。由于更新不及时,导致了这个cve的出现。
64-bit
32-bit
这个漏洞利用链还利用了多个内核信息泄漏的0-day漏洞,用于利用CVE-2022-22706和CVE-2023-0266。Google已向ARM和三星报告了这些漏洞,现在已修复为CVE-2023-26083(ARM)和CVE-2023-21492(三星)。
05
—
总结
看到了好多类型混淆漏洞,之前看到说这种漏洞实际上并不常见,也很少导致安全问题,但是看来还是存在相当数量的在野利用的。这种漏洞很多都和
不过类型混淆漏洞的成因有点杂,暂时看起来没能总结出其中的特性,不知道是否适合大规模程序分析,挖个坑,后面可能会看一些类型混淆漏洞的相关论文。
然后看到了几个很不错的漏洞解析网站:
google TAG
https://blog.google/threat-analysis-group/
google project zero
https://googleprojectzero.github.io/0days-in-the-wild/rca.html
project zero的blog
https://googleprojectzero.blogspot.com/
剩余参考链接:
CVE-2022-4262: Incorrect Bytecode Generation by JavaScript Parser
https://googleprojectzero.github.io/0days-in-the-wild//0day-RCAs/2022/CVE-2022-4262.html
CVE-2022-4135: Chrome heap buffer overflow in validating command decoder
https://googleprojectzero.github.io/0days-in-the-wild//0day-RCAs/2022/CVE-2022-4135.html
CVE-2022-3723: Logic Issue in Turbofan JIT Compiler
https://googleprojectzero.github.io/0days-in-the-wild//0day-RCAs/2022/CVE-2022-3723.html
Analyzing a Modern In-the-wild Android Exploit
https://googleprojectzero.blogspot.com/2023/09/analyzing-modern-in-wild-android-exploit.html
有关内容混淆漏洞的利用
https://nebelwelt.net/files/18SyScan360-presentation.pdf
CVE-2022-38181
https://github.blog/2023-01-23-pwning-the-all-google-phone-with-a-non-google-bug/
原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2023-09-27 Android 在野漏洞 Exploit 分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论