欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iPhone必崩溃bug曝光!这个Wi-Fi水太深:附解决方法

程序员文章站 2022-05-18 12:47:51
iphone又出现漏洞了,这个漏洞能让你手机一连wifi就崩溃。如果有人把wifi名称(ssid)设置成一串特殊字符,那么你要小心了,因为你一旦尝试去连接这个wifi,你的iphone就会&ldquo...

iphone又出现漏洞了,这个漏洞能让你手机一连wifi就崩溃。

如果有人把wifi名称(ssid)设置成一串特殊字符,那么你要小心了,因为你一旦尝试去连接这个wifi,你的iphone就会“中招”。

就像下面这样,从此你的iphone再也连不上wifi了,即使手动打开也会自动关闭:

iPhone必崩溃bug曝光!这个Wi-Fi水太深:附解决方法

而且就算重启iphone也不管用,必须还原手机的网络设置才能让wifi功能恢复正常。

仅iphone受影响

发现这一漏洞的是一位叫做carl schou的安全工程师,他把自己家的wifi设置成了以下名称:%p%s%s%s%s%n

iPhone必崩溃bug曝光!这个Wi-Fi水太深:附解决方法

(温馨提示:千万不要自己手贱尝试,也不要去危害其他iphone用户。)

之后他就发现iphone的wifi功能彻底崩溃了。

每次他尝试再次开启wifi时,系统都会迅速关闭,即便他重新启动设备,或把家里的wifi改成一个正常的名称也不行。

carl首先是在他ios版本14.4.2的iphone xs上测试发现的,之后他又在最新的14.6系统上进行了同样的测试,漏洞依旧存在。

carl首先在twitter上反馈了这一问题,其他多位网友看到他的描述后也复现了该漏洞。

iPhone必崩溃bug曝光!这个Wi-Fi水太深:附解决方法

而且据这位网友反馈,问题不仅是wifi不能用,连airdrop也打不开了。

iPhone必崩溃bug曝光!这个Wi-Fi水太深:附解决方法

当然,这个问题也不是完全不能修复,具体的修复方法我们后面再提。

如果你是android用户,则完全不必担心,因为有人尝试用android手机连接同样名称的wifi,问题没有出现。

iPhone必崩溃bug曝光!这个Wi-Fi水太深:附解决方法

另外,量子位亲测,该wifi名称对mac无影响。看来这个漏洞应该是iphone独有的。

虽然wifi也不是不能靠重置解决,但一些网友认为,这个“可怕的”漏洞应该引起高度的重视。

因为像这样的漏洞可能会被黑客利用,比如在公共场合设置在流氓wifi,就可以让附近所有iphone崩溃。

而且这很可能是一个特权提升漏洞,会导致溢出错误,从而破坏了plist。(plist是苹果用来储存用户设置的文件)。

iPhone必崩溃bug曝光!这个Wi-Fi水太深:附解决方法

一串字符为何让iphone崩溃

看到schou推文的其他安全工程师认为,是iphone对wifi名称的解析问题导致了这个错误。

问题就处在名称里的“%”符号上。

如果你学会c、c++语言,那么应该对这个符号有所了解:%叫做“格式化字符串”(format string),用来处理特殊的变量名或命令。

比如“%3d”就是将变量以3位整型数方式输出。

再回到“%p%s%s%s%s%n”这串特殊字符,%p代表输出指针,%s代表输出字符串,%n的含义稍微复杂一些,代表输出%n之前的字符长度。

比如下面这串代码:

printf(“geeks for %ngeeks”, &c);输出结果并不显示%n,只是

geeks for geeks但是这行代码会将%n之前的字符数统计下来,存放在变量c中。

iPhone必崩溃bug曝光!这个Wi-Fi水太深:附解决方法

如果我们再加一句printf(“%d”, c);就会发现输出结果为10。(空格也算一个字符)

iphone会将未经过滤的wi-fi名称(ssid)传递给一些执行格式化字符串的内部库,这会导致任意的内存写入和缓冲区溢出,从而破坏内存数据。而ios看门狗会终止该进程,导致wi-fi禁用。

所以iphone没有把“%p%s%s%s%s%n”理解成普通文字,而是当成了特殊字符串来处理。iphone的错误日志也记录下了这一事件。

iPhone必崩溃bug曝光!这个Wi-Fi水太深:附解决方法

至于为何要把wifi改成这个奇怪的名字,carl说,他的所有设备都以格式化字符串命名,以此来发现那些有问题的设备。

其实,这也不是iphone第一次遭遇特殊字符串的攻击。

之前最出名的莫过于2018年的“死亡短信”,只要给iphone发送一段有特殊泰卢固语字符的短信,用户就再也无法打开短信app,因为只要一点击,iphone就会自动重启。

iphone微信也会受到此类攻击的影响。

之后iphone在ios 11.3修复了此漏洞,但类似的字符串攻击方式频频出现,几乎每隔一段时间就会出现,防不胜防。

解决方法

这个bug尽管用重启iphone的方式不能,但也不至于让你的手机彻底坏掉,解决方法并不复杂:

打开iphone上的“设置”,选择“通用”

进入最下方的“还原”选项

选择“还原网络设置”,输入你的手机密码

iPhone必崩溃bug曝光!这个Wi-Fi水太深:附解决方法

等网络还原完成后,你的iphone就会恢复正常。不用担心手机资料丢失,此操作只会让iphone“忘记”之前保存的wifi密码,其他不受影响。

如果你今后看到wifi名称里有“%”号一定要多加小心了,它可能是恶作剧,也可能是黑客的阴谋。

希望苹果能在下次ios更新中修复这个漏洞吧。

iPhone必崩溃bug曝光!这个Wi-Fi水太深:附解决方法

- the end -