iPhone 连不上 WiFi,罪魁祸首竟是一串字符!

SegmentFault

共 1607字,需浏览 4分钟

 ·

2021-06-25 05:17

技术编辑:小魔丨发自 思否编辑部

公众号:SegmentFault



每到一个地方先找 WiFi,已经是无数现代人的习惯了。但是,遇到奇奇怪怪的 WiFi 名(SSID)可要谨慎了。最近就有人在使用 iPhone 手机连接 WiFi 时遇到了麻烦。


安全研究员 Carl Schou 在用 iPhone 手机尝试连接名称为 %p%s%s%s%s%n 的 WiFi 后,发现手机 WiFi 功能无法使用,手动打开 WiFi 也会自动关闭,重启手机或更改 WiFi 名都没用。



Carl Schou 首先在运行 iOS 14.4.2 版本的 iPhone XS 上测试发现了这一 bug,后来在 iOS 14.6 版本上的实验表明这一 bug 依然存在。


Carl Schou 在 Twitter 上公布这一 bug 后,很多网友在自己的 iPhone 手机上复现了这一问题,甚至有网友发现该 bug 还会影响 AirDrop 的正常使用。



不过,目前安卓手机用户并未受到该 bug 的影响。


虽然看似无厘头,但这个 bug 是真实存在的。有网友认为该 bug 应该得到更多关注,这有可能是权限提升漏洞,万一被利用,很多 iPhone 用户将受影响。


该 bug 被爆出后,许多安全研究员进行了分析,认为有可能是输入解析问题导致了该 bug。


当 WiFi 名称出现带有 % 的字符串时,iOS 可能会将 WiFi 名误认为字符串格式化说明符。


而在 C 和 C-style 语言中,字符串格式化说明符具备特定含义,常被语言编译器处理为变量名或命令,而不是文本。例如,命令 printf("geeks for %ngeeks", &c); 不会输出 %n,而是将 %n 前面的字符数存储在变量 c 中。%n 只是格式化说明符,不是真正的文本字符串。因此,该命令的输出是 geeks for geeks,不包含 %n。



同理,当 iPhone 试图连接 WiFi %p%s%s%s%s%n 时,iPhone 并未将这串字符理解为文本而是作为特殊字符串来处理,导致系统内存损坏,进而启动保护机制,强制将 WiFi 功能设定为关闭状态。


如何解决?


尽管重启手机没能解决该 bug,但实际上它的解决办法并不麻烦:

设置 > 通用 > 还原 > 还原网络设置(Settings > General > Reset > Reset Network Settings)



之后,你就可以重新配置网络设置了。


当然要想防患于未然,最好的办法是不要连接不安全的网络,尤其是 WiFi 名中包含 % 的无线网络。当然,目前只有 iPhone 用户要格外注意这一点。


参考链接:

https://www.bleepingcomputer.com/news/security/iphone-bug-breaks-wifi-when-you-join-hotspot-with-unusual-name/
https://www.zdnet.com/article/iphone-bug-makes-it-easy-for-someone-to-break-your-wi-fi-heres-the-fix-and-how-to-prevent-it/#ftag=RSSbaffb68
https://blog.chichou.me/2021/06/20/quick-analysis-wifid/
https://twitter.com/vm_call

- END -

浏览 125
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报