iPhone 又出现诡异的 Bug 了!
安全研究人员@Carl Schou 在推特上公布了自己的发现,当 iPhone 连接经过特殊构造的 SSID(无线网络名称)时,会导致 iPhone 无线网络功能出现异常。
这个特殊的 SSID 为 %p%s%s%s%s%n。
小编尝试将无线路由器的 SSID 修改为这个名称,使用 iOS 14.6 系统的 iPhone 12 mini 测试。
结果与 Carl Schou 描述的一致,无线局域网功能无法开启,无法正常上网,需要用到 WiFi 功能的隔空投送操作也无法进行。
不过小编使用已经升级 iOS 15 测试版的 iPhone 连接这个网络,会直接提示无法连接,没有引发异常。
iPhone 连接这个奇葩的 SSID 出现 Bug,可能的原因是 iPhone 对 SSID 名称错误的解析导致。
学习过编程的小伙伴应该了解,“%”在 C 等语言中不仅仅表示百分号,它还有格式化字符串的作用,iPhone 连接“%p%s%s%s%s%n”的 SSID 后,系统代码内没有将其理解为普通字符串,而是理解成代码进行解析,这就会导致任意的内存写入和缓冲区溢出,从而破坏内存数据。而 iOS 看门狗机制会终止该进程,导致 Wi-Fi 功能被禁用。
目前已经有工程师定位到会引起 Bug 的代码:
解决方法
经过测试发现,无法通过重启 iPhone 来恢复正常,目前唯一有效的方法是还原 iPhone 网络设置。
在系统设置-通用-还原中,点击还原网络设置,输入 iPhone 密码会自动重启,进入系统后无线网络功能便恢复正常。
需要注意的是,还原网络设置会清除以前连接过的 Wi-Fi 和密码、蜂窝网络设置等。
iPhone 出现诡异的 Bug 这已经不是第一次了,最近的一次是在 2020 年,一组由意大利国旗 Emoji 和信德语组成的文字会引起 iOS 系统闪退或死机。
当时这个 Bug 被许多人利用来恶搞,不仅影响到了所有的 iPhone,连 iPad、Apple Watch 也未能幸免。
这次出现的特殊 WiFi 名称导致 iPhone 无线网络被禁用的 Bug,苹果应该会在下一个 iOS 系统更新中进行修复,在此之前大家看到类似名称(含有多个%百分号)的 WiFi 尽量不要加入。