0x41con 这两天在巴塞罗那举办。
会棍博主又双叒叕因为一些莫名其妙的原因放了鸽子,掐指一数错过的会怕是比一般人去过的还多了。
0x41con 是一个邀请制的纯技术会议。没有听过这个会议的读者可移步前情提要:小众黑客会议 0x41con
不过按 0x41 的风格,严禁拍照录影,只会在结束的当天拍一张全员马赛克的合影;材料不公开,除非作者自己想发。所以去了也没什么好写的。
也正是因为严格控制人数和不允许拍照,时常有主流商业会议(某帽:你报我身份证号吧)上不会出现的内容。一些 speaker 甚至直接扔 0day,看到那些标题为 [redacted] 的基本上就是了。
简单回顾一下去年的。
去年只有几个议题有公开的材料。
The First Dance 是关于 iOS 的内核的一些研究。作者弄了个网站 kernel.rw,说是会放出来,至今没有更新
Coverage-guided binary fuzzing with revng and LLVM libFuzzer 其实是作者的硕士毕业论文,这有一个pdf:
https://antoniofrighetto.com/master_thesis.pdf
I Don’t talk about Darwin, no, no, no.. 这位作者大家应该不陌生,*OS Internals 系列的作者,近几年弃坑 Darwin 去搞 Android 了,他的新书应该也快完工了。
去年唯一一篇放出来的演讲材料:
http://newosxbook.com/bonus/0x41-16.pdf
到了今年的日程安排:
不去血亏,只能晚上一个人躲在被窝里听《水星记》。
有个别议题不是独家。
星加坡 STAR Labs 的群友的 iOS Fuzzing Techniques (Mach BSD IOKit and Firmwares),和个把月前在 OffensiveCon 上讲的目测不会差太远:
UNEARTHING VULNERABILITIES IN THE APPLE ECOSYSTEM: THE ART OF KIDFUZZERV2.0
而 OffensiveCon 这版的录像和 slides 几周前已经公布
https://www.youtube.com/watch?v=oML1h3ic__0
为了防止潜在的版权问题,不搬运到视频号
https://github.com/star-sg/Presentations/blob/9d014dc/Offensivecon%202023/Unearthing%20Vulnerabilities%20in%20the%20Apple%20Ecosystem%20The%20Art%20of%20KidFuzzerV2.0.pdf
而 An Exploit Dev's Guide to NSPredicates 这篇之后会在 BlackHat USA 讲,对应 Apple's Predicament: NSPredicate Exploits on iOS and macOS
https://www.blackhat.com/us-23/briefings/schedule/#apples-predicament-nspredicate-exploits-on-ios-and-macos-32451
这篇关于 NSPredicate 的研究,基本上就是把我几年前那篇 See No Eval: Runtime Dynamic Code Execution in Objective-C 提到的一些没实现的设想和遗漏掉的一些东西转化成真实的案例了。
Trellix 之前有发过一篇博客公开了一部分细节:
https://www.trellix.com/en-us/about/newsroom/stories/research/trellix-advanced-research-center-discovers-a-new-privilege-escalation-bug-class-on-macos-and-ios.html
FORCEDENTRY 的 pdf 漏洞在图片格式上模拟 CPU 的位运算等原语,把图片格式变成了图灵完备的“CPU”,令人啧啧称奇。其实除了 JBIG2,FORCEDENTRY 还用了两外两个 Objective-C 的特性,一共三种不同的“图灵完备”代码执行技术。
一处是和 Google Porject Zero 学的 SLOP - A Userspace PAC Workaround(https://bugs.chromium.org/p/project-zero/issues/detail?id=1933),用来过 PAC 执行初始的 Objective-C 调用。
接下来就是执行一个 NSExpression,用来触发 CommCenter NSXPC 服务的一个纯逻辑的反序列化漏洞。Java 的逻辑反序列化不知道养活了多少工作岗位,iOS Objective-C 的似乎就这一个孤品。路径藏的很深,我之前顺着这个思路不知道看了多少遍都没找到(不要为自己菜找借口)。
BlackHat 这篇则是找了一个效果拔群的特性绕过。在我之前的文章里已经提到了一个非公开 API NSPredicateVisitor 用来做白名单检测。在处理反序列化的时候可以直接修改一个对象 flag,然后我原文里提到的这些当时没搞定的潜在攻击场景就可以直接抄作业了:
这短短的几句话启发了多少个 bug。
这个 CoreFoundation 的特性太过逆天,相当于自带了一个 jspatch。逻辑漏洞的向量,纯数据的代码执行,代码签名、PAC 甚至至今没有上线的 MTE 在它面前都被降维打击。
Apple 已经在上面修修补补了两年多,还是没能很好解决。这个功能系统自己也在用,删又不能删。也不能怪这个特性,十几年前设计的时候谁能未卜先知到以后移动安全的种种场景呢?
p.s. 公众号后台有一些私信,10 天没上线,现在已经过期无法回复