不久前,苹果在WWDC21 全球开发者大会首日便隆重推出了号称“创造更多非凡方式发挥iPhone效能”的iOS 15。然而,就在众多果粉还没来得及更新和体验最新版的iOS时,老版本iOS 14就被爆出了新bug。

 


SSID咒语之:网络连接断开术


如果你的手机再也用不了Wi-Fi功能了,你会怎么办?或许你会和小编一样感叹:”连不上网络的手机只是一块轻薄的板砖”。

几天前,一位叫Carl Schou的安全工程师就发现了这个问题。当Carl连接个人Wi-Fi热点时,竟然发现他的iPhone的Wi-Fi功能死活打不开了!?他打开一次,Wi-Fi就迅速关闭一次,即使万能的重启也没有任何作用。 

无论怎么尝试,Carl手机的Wi-Fi都像被魔咒下了禁制一样,永远处于关闭状态。

图片


经过研究,Carl发现导致Wi-Fi功能凌乱的原因是,他之前曾经将家里的无线网络名称设置为“%p%s%s%s%s%n”,随后当他用自己的iPhone来连接Wi-Fi时,就出现了iPhone自动重启、且重启后无法再打开无线网络功能。

Carl第一时间就尝试把无线网络名称修改为正常的名称,但他的iPhone依旧无法正常使用Wi-Fi功能,只要一点击Wi-Fi开关就会自动关闭。

随后他又尝试将现有的14.4.2 的iOS版本升级为 iOS 14.6,但还是没有解决WiFi开关问题。

最终他不得不确认,导致WiFi功能失调的这句咒语就是:%p%s%s%s%s%n。

Carl在推文中写道:“在使用SSID ' %p%s%s%s%s%n'加入我的个人WiFi后,我的iPhone永久禁用了它的Wi-Fi功能。重新启动或更改SSID都无法修复它。”

image.png

SSID是Service Set Identifier的缩写,意思是:服务集标识,简单点说就是你给你的无线网络取的名称。可是,难道一个别出心裁的热点名就能把iOS的Wi-Fi功能搞崩掉? 

Carl的尝试是在iOS版本14.4.2的iPhone XS上运行的,而经过其他研究人员在iOS版本14.6的iPhone上进行的测试证实,在连接到以这句咒语命名的无线网络后,iPhone的无线功能也会中断。

在尝试连接到这个SSID的多个测试中,iPhone的Wi-Fi设置逐渐运行不稳定,最终导致iPhone的无线连接中断。

在某些测试中,连接到SSID会失败,但仍然导致iPhone无法再访问常规无线网络。 还有一些测试重现了Carl的结果,即iPhone的Wi-Fi设置被禁用,无法再启用。

上述的测试结果表明,这不是Carl的iPhone独有的问题,而是一个iOS普遍存在的漏洞。该漏洞意味着如果心怀不轨的人在公共区域设置恶意Wi-Fi热点(大多无需密码),那连接到这些热点的iPhone设备都将失灵。

而且这个问题是iPhone独有的,在Android设备上并不会出现类似Bug:

image.png


“%p%s%s%s%s%n”,为什么这句神奇的咒语“只对iPhone可见”呢?

这还要从iOS的开发语言说起,iOS的开发语言是Swift、Objective-C、C、C++,Objective-C是扩充C的面向对象编程语言。Swift是苹果公司发布的,一种结合了C和Objective-C优点的,新的编程语言,用于编写iOS和macOS应用,不难看出,C语言是iOS开发的基础。 

在C和C风格的语言中,“%”+字母的格式代表着着格式字符,用以指定输出项的数据类型和输出格式。如:

  • %d:输出整型数据;

  • %s:输出字符串;

  • %f:输出实数。

因此,当Wi-Fi热点名称中存在带有“%”符号的字符串时,iOS可能会错误地将“%”后面的字母解释为字符串格式说明符,认为其具有特殊的含义,由语言编译器将其处理为变量名或命令,而不仅仅是文本。 

执行了此行意义不明的命令的iOS可能因此“怀疑机生”而崩溃了。

 


iPhone经典Bug:实现真正意义上的“一秒变砖”

 

这也不是iOS第一次被爆出涉及WiFi功能的Bug了。

早在2015年,以色列安全公司Skycure就发现了一项iOS 8的漏洞,即黑客可通过一个虚假的Wi-Fi热点对iOS设备发动攻击。如果基于iOS 8的iPhone或iPad遭到攻击,大部分连接到互联网的应用都无法使用,一启动就会崩溃,甚至还会开启无限重启模式。 

不仅iOS 8在热点连接上有如此大的安全隐患,随后发布的iOS又整出了“新活”。

不知道大家还记不记得苹果最出圈的“1970”BUG,在iOS 9上,只要你把设备时间设置为1970年1月1号然后重启它,就会彻彻底底变成一块砖头,甚至刷机也解决不了。当年消息一出,无数网友身体力行的尝试,最终用一块块“砖头”证明:面对Bug,没有例外。

这个Bug直到iOS 9.3才被苹果修复,但事情还没有结束。之后又有安全研究员指出,他们发现了一个1970的“变种”Bug,只要iOS设备连接上了一个Wi-Fi热点,设备就可能会变砖。

这个漏洞利用了iOS中的两个弱点。第一个是iOS设备会通过辨认SSID来自动连接到已知的Wi-Fi热点,这就意味着你的iPhone和iPad都有可能会自动连接到伪装的恶意Wi-Fi热点中。第二个弱点是iOS设备会通过网络时间协议(NTP)服务器不断检查设备的时间和日期设置是否正确。所以攻击者只要伪装Wi-Fi热点并标注为“attwifi”,攻击者的NTP 服务器就会伪装成 time.apple.com 并发送“1970.1.1”日期设置到用户的设备上,达成“一秒变砖”成就。

据说,该漏洞和此前的“1970” Bug 不完全一样。收到报告之后,苹果在iOS 9.3.1中修复了该漏洞,但运行iOS 9.3.1之前版本的设备仍存在危险。 

奈何修复有尽,而Bug不绝。这次在Carl独特的小举动下,这个一秒”搞崩“网络连接的漏洞终于浮出了水面。Carl表示,但此次事件并不是他有意为之,用字符串和说明符命名他的Wi-Fi热点,只是他一向命名设备的习惯罢了。

Carl在社交媒体发布他的发现之后,网友们纷纷表示“正在去修改热点名的路上”。但好奇归好奇,如果Wi-Fi功能真的禁用,又该如何拯救崩溃的iPhone呢? 

目前解决办法是:虽然重新启动iPhone解决不了问题,但是这个错误不是永久性的,iPhone用户可以在“设置”中,选择“常规”,在常规下选择重置,进入重置页面之后选择重置WiFi功能并确认即可。接着设备将重新启动并将所有网络设置重置为出厂默认设置。重启后输入密码,则可以再次重新配置WiFi设置。

好的不说了,我要去重置自己的Wi-Fi设置了