时隔多年,一串特殊字符依旧能让iPhone崩溃

想必各位 PWN 友这几天已经被 iPhone 的新 bug 刷屏了,不知道有没有勇士亲自动手验证。PWN 君亲测一番之后,现在正在让手机还原网络设置……

新 bug 的详情是这样的,一位名叫Carl Schou 的安全工程师向来喜欢以格式化字符串(%)为自己的各种设备命名,目的是发现设备的一些问题。这一天,他恰巧发现了一个问题,那就是自己的 iPhone 连接自家名为“%p%s%s%s%s%n”的 Wi-Fi 导致手机 Wi-Fi 功能彻底崩溃,重启以及改 Wi-Fi 名都无济于事。最后不得不在手机“设置”的通用选项中选择“还原网络设置”,代价是丢失手机曾保存的所有 Wi-Fi 网络及密码。

格式字化符串的锅

根据分析,这个 bug 主要是格式化字符串“%”导致的。在 计算机语言中(C、C++等),“%”多用来处理特殊的变量名或命令。“%”后面的不同字母代表不同的命令。根据 OWASP 关于“格式化字符串攻击”的介绍,常用于攻击的参数如下表:

在这次的 Wi-Fi bug 事件中,iPhone 没有将“%”开头的这串字母当作 Wi-Fi 名字,而是识别成了特殊字符串,导致一些内部库执行命令,触发 Wi-Fi 拒绝服务。不过也不用过度恐慌,虽然这个 bug 可能会被人恶作剧,但还不至于被恶意利用对手机进一步攻击。相比之下,钓鱼攻击可能来得更快更直接。

详细技术分析可查看

https://blog.chichou.me/2021/06/20/quick-analysis-wifid/

这并不是特殊字符串导致手机或其他设备崩溃的第一个案例。早在 2000 年,就有人发现了字符串 bug。iPhone 面世后,直接或间接利用字符串漏洞、特殊字符组合破解或轰炸 iPhone 及其他苹果产品的研究成果(攻击案例)几乎每年都会出现。

那些投向苹果设备的“字符炸弹”

—2020年—

有人发现一组由意大利国旗 Emoji 和信德语(Sindhi language)组成的文字会引起 iOS 系统闪退或死机。这个 Bug 被许多人恶搞,iPhone、iPad、Apple Watch 都未能幸免。

—2018年2月—

有用户发现,如果通过手机的iMessage、WhatsApp、脸书、谷歌邮箱等任何软件接收或者预览一个泰卢固语字符消息,软件就会立刻崩溃,导致手机进入不断关机状态。

—2018年1月—

有研究人员发现代号为“chaiOS”的漏洞。如果 iPhone 和 Mac 用户点击链接(https://t.co/Ln93XN51Kq),会出现死机、自动重启等问题。为了不引发更大问题,研究员在发布漏洞后很快就将链接指向的页面删除掉,如今页面已经失效。而用户只要升级系统就能避开漏洞。

—2017年—

YouTube 频道 EverythingApplePro 发布消息表示,向使用 iOS10 系统的 iPhone 手机发送“彩虹旗”文本(白旗emoji+数字0+彩虹emoji +不会显示的字符),会让手机短暂死机。

—2016年—

有人创建了 CrashSafari.com 的网站,当用户被诱导点击链接后,浏览器会崩溃,甚至设备也会重启。iPhone、iPad、Mac 都可能中招。同年,还有用户发现,一个 5S 长的视频就能让 iPhone 崩溃。

—2015年—

有用户发现,向 iPhone 发送以下信息,会直接让手机死机。大量用户在网上抱怨、交流。还有人用来“报复”前任。

—2013年—

iPhone 爆发阿拉伯字符串漏洞,特殊字符串会导致应用闪退、手机崩溃。根据分析,是当时 iOS 系统的WebCore / Coretext 在处理字符时出现了问题。

—2012年—

Chonic Dev-Team 发布了 Corona 越狱工具,在 iPhone 不完全越狱的基础上实现完美越狱。Corona 利用的就是 iPhone在设置 IPSec 连接时使用的“racoon”二进制文件中的格式化字符串错误,给 racoon 代码字符添加越狱所需有效载荷,再结合其他进程实现越狱。

“字符炸弹”闪避术

仔细看来,这些“轰炸”大多用于恶作剧,不会造成更进一步的安全问题。基本每一个问题都伴随着苹果升级系统而解决。不过,利用“格式化字符串”漏洞,的确有可能实现将任意代码写入随机或特定的设备内存中,最终实现代码注入和执行。对于企业来说,这也可能是一个潜在风险。

事实上,很多“格式化字符串”bug 大多是因为原来的代码安全验证不足。如果在编译时选择验证格式化字符串,可以解决将外部数据(字母)识别为格式化字符串的问题。

另外,目前{fmt} (格式化命令)以及C++20std::format都采用默认的编译时检查以及运行时验证相结合的模式,去避免可能产生的格式化字符串bug。

对于普通用户来说,最直接的安全建议就是,不随便点击陌生链接,不随便连 Wi-Fi,尤其是这种名字奇奇怪怪的 Wi-Fi。当然,如果你想要体验一下手机崩溃的酸爽,建议用一个闲置的手机尽情尝试,说不定顺手发现了什么新 bug 呢~

参考来源:

https://threatpost.com/iphone-wi-fi-weird-network/167075/

更多关于“格式化字符串攻击”的研究分析资料可查看:

https://www.zverovich.net/2021/06/22/preventing-format-string-bugs.html

https://cs155.stanford.edu/papers/formatstring-1.2.pdf

文章来源:GeekPwn

标签: