历史上的今天
返回首页

历史上的今天

今天是:2025年06月24日(星期二)

正在发生

2021年06月24日 | iPhone必崩溃bug解密!这个Wi-Fi水太深

2021-06-24 来源:快科技

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

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

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


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

仅iPhone受影响

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


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

之后他就发现iPhone的WiFi功能彻底崩溃了。

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

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

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

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


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

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


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

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

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

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


一串字符为何让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中。


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

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

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

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

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

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

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

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

解决方法

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

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

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

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

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

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

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


推荐阅读

史海拾趣

Chengdu Sino Microelectronics Technology Co Ltd公司的发展小趣事

在集成电路设计领域,技术的突破是赢得市场的关键。成都华微科技始终坚持以技术研发为核心,不断投入巨资进行技术研发和创新。经过多年的努力,公司在可编程逻辑器件、系统级芯片、存储器和模数/数模转换器(AD/DA)芯片等领域取得了重大突破,产品性能达到了国内领先水平。这些技术突破不仅为公司赢得了市场的认可,也提升了中国集成电路设计行业的国际地位。

长江连接器(CJT)公司的发展小趣事

随着技术的不断积累和市场的不断扩大,长江连接器开始积极拓展国内外市场。公司通过与国内外知名企业的合作,将产品广泛应用于消费类电子、电气电子、薄膜开关、LED显示器屏/灯饰、家用电器、电脑及电脑周边、通讯设备等领域。同时,长江连接器注重品牌形象的塑造和推广,通过参加各类行业展会、举办技术交流会等方式提升品牌知名度和美誉度。

General Instrument Corp公司的发展小趣事
设计时考虑了低功耗特性,适合便携式设备和电池供电应用。
意瑞(COSEMITECH)公司的发展小趣事

在保持核心技术优势的同时,意瑞半导体还不断扩大其产品线,涉足更多的领域,如物联网等。公司致力于提供从芯片设计到系统集成的一揽子解决方案,以满足不同客户的需求。此外,公司还积极申请专利和集成电路布图设计专有权,累计申请近20项专利发明和39项集成电路布图设计专有权,进一步巩固了其在行业中的技术领先地位。

Component General Inc公司的发展小趣事

Component General Inc公司的创立,标志着电子行业中一颗新星的升起。自XXXX年成立以来,公司始终致力于射频/微波设计领域的研发与生产。起初,公司只有几名创始人和一些基础的研发设备,但他们凭借着对技术的热情和执着,成功地开发出了首款高功率电阻器,这为公司后续的发展奠定了坚实的基础。

Atlanta Micro公司的发展小趣事

随着技术的不断进步,Atlanta Micro不断推出创新产品,其中最为引人注目的是其开发的一款高性能RF模块。这款产品采用了先进的材料和技术,具有更高的频率稳定性、更低的噪声和更长的使用寿命。这一创新不仅提升了产品的性能,也满足了客户对更高品质产品的需求,进一步巩固了Atlanta Micro在市场上的地位。

问答坊 | AI 解惑

EVC关于删除字体资源问题

请问各位大侠,在进行WINCE的应用编程中,加入自定义的字体资源时用AddFontResource,释放时用RemoveFontResource。 但是这只能是在同一个程序进程中进行的。如果是在一个进程中调用了AddFontResource,在另一个进程中用RemoveFontResource进行释 ...…

查看全部问答>

请问,如何将已知地址的内容保存到文本文件中,重谢!~

已知:x = (s32)*(vs16 *)0x08000002      y = (s32)*(vs16 *)0x08000004      z = (s32)*(vs16 *)0x08000006 x,y,z内容时刻变化,如何将x,y,z的值保存到test.txt中。谢谢大家…

查看全部问答>

我在Dev C++中调试ucosII,但出现不包含头文件oscpu.h?

我在Dev C++中调试ucosII,但编译出错,出现不包含头文件oscpu.h?但我明明已经在工程中添加了此头文件啊?为什么? 还有,在一个头文件:includes.h中,我写进了可能用到的其它头文件,然后在主程序test.c中包含#include \"includes.h\",然而,编译报错,说没 ...…

查看全部问答>

SD卡的加密和解密

有谁做过,在WINCE,对SD卡的加密或解密程序?请发上来学习学习.非常感谢!…

查看全部问答>

请问各位高手,vxworks的一些变量,如STATUS,UINT32等,是在哪定义的????

我下载了vxworks的一些代码,但里面没有STATUS,UINT32等变量的定义, 请问各位高手,它们是在哪定义的???? 在工具tornado里有定义吗? 谢谢各位大侠!!!!! …

查看全部问答>

PCB基础知道介绍

http://www.yingjiecn.com/new_page_77.htm…

查看全部问答>

24c256读写失败

24C256读写失败24C256读写失败程序停止在了while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));测试i2c引脚都为低电平//------------------------EEPROM 24C256 API---------------------------void  &nbs ...…

查看全部问答>

请教USB如何实现RTS流控?

我准备用STM32的USB,当下位机的缓冲接近满的时候需要通知PC不再发数据。串口是通过RTS等线来实现, USB怎么做?另外看了一下USB虚拟串口的例程,好像没有涉及到这个问题。…

查看全部问答>

ARM 嵌入式

刚入手arm嵌入式,谁能提供点指引啊???…

查看全部问答>

上海知名外企13--19万招聘DSP开发工程师

统招本科 硕士优先(本科2年左右 硕士1年左右) 英文要求能读写即可 工作地点:上海西藏北路    面试:不出意外只需一轮 岗位职责:Responsibility: 1)The team members having following profile/ competence are highly apprec ...…

查看全部问答>