晓查 发自 凹非寺 
量子位 报道 | 公众号 QbitAI

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.2iPhone 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之前的字符长度。

比如下面这串代码:

输出结果并不显示%n,只是

但是这行代码会将%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的方式不能,但也不至于让你的手机彻底坏掉,解决方法并不复杂:

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

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

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

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

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

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

参考链接:
[1]https://www.bleepingcomputer.com/news/security/iphone-bug-breaks-wifi-when-you-join-hotspot-with-unusual-name/
[2]https://appleinsider.com/articles/21/06/19/bug-in-ios-can-break-iphone-wi-fi-using-rogue-hotspot-name
[3]https://9to5mac.com/2021/06/19/a-specific-network-name-can-completely-disable-wi-fi-on-your-iphone/

iPhone必崩溃bug曝光!这个WiFi水太深谁也把握不住相关推荐

  1. 《面试技巧》孩子,听叔一句劝,面试水太深,你把握不住。

    人世仙家本自殊,何须相见向中途.惊鸿瞥过游龙去,漫恼陈王一事无. 嗨,大家好,我是洛神,性别男.一个来自快乐星球的程序员. 欢迎大家专注我的公众号[程序员洛神],绝对让你有意外收获哟 前言 首先要先向 ...

  2. 听皮皮一句劝zIndex 的水太深,你把握不住!

    前言 本文基于 Cocos Creator 2.4.5 撰写. ???? 普天同庆 来了来了,<源码解读>系列文章终于又来了! ???? 温馨提醒 本文包含大段引擎源码,使用大屏设备阅读体 ...

  3. iPhone必崩溃bug曝光

    本文转载自搜狐网 iPhone又出现漏洞了,这个漏洞能让你手机一连WiFi就崩溃. 如果有人把WiFi名称(SSID)设置成一串特殊字符,那么你要小心了,因为你一旦尝试去连接这个WiFi,你的iPho ...

  4. 听叔一句劝,消息队列的水太深,你把握不住!

    很多人在做架构设计时往往会"过度设计",简单问题复杂化,上来就引一堆中间件,我想大概原因主要有下面两点: 为了秀(学)技术而架构 我们常说技术是为业务服务的,不能为了技术而技术,为 ...

  5. 网站渗透这块水太深,你把握不住!但你叔我能(十年经验分享)

    很多朋友问我,想搞网络安全,编程重要吗,选什么语言呢? 国内其实正经开设网络安全专业的学校很少,大部分同学是来自计算机科学.网络工程.软件工程专业的,甚至很多非计算机专业自学的.因此不像这三个专业,有 ...

  6. 【听哥一句劝,C++水很深,你把握不住啊!】C++提高班之 符与*符

    C++提高班之 &符与*符 像&和*这样的符号,既可以作为表达式中的运算符,也能作为声明的一部分出现,符号的上下文决定了符号的意义: int i = 27;int &r = i ...

  7. 响铃:二手车水太深,汽车之家“诚信联盟”能成“抽水机”吗?

    文|曾响铃 来源|科技向令说(xiangling0815) 瓜子.优信.人人车等几个互联网二手车品牌铺天盖地的宣传让二手车这个行当一时间又成了舆论焦点. 艾瑞数据显示,预计到2020年,中国二手车交易 ...

  8. 算法炒房三月亏20多亿!房地产巨头大翻车:房价水太深,AI也把握不住?

    明敏 丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI 就离谱! 一年前靠着一套算法营收30亿美元,一年后还是同样的算法,却造成资金大缺口,不得不裁员.变现手上资产. 没想到,炒房平台用上A ...

  9. 算法炒房三月亏20多亿!房地产巨头大翻车:房价水太深,AI根本把握不住

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 明敏 丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI 就 ...

最新文章

  1. 配置IPsec Tunnel With TACACS+ User Authentication
  2. python编程前面需要一个空格怎么做_初学python,不明白代码之间时空格的用处
  3. 主业失利,跨界捞金,飞科的算盘能如意吗?
  4. html自动按键,VBS脚本和HTML DOM自动操作网页
  5. 插入排序---希尔插入排序算法(Javascript版)
  6. Windows 安装 MongoDB 和 可视化工具Robo3T
  7. 计算机一级办公软件试题,计算机一级WPS模拟练习题及答案
  8. PAT乙级(1033 旧键盘打字)
  9. matlab单机带负荷系统模型,用MATLAB仿真实现电力系统静态稳定性分析
  10. linux很多python进程,Python多进程编程详解
  11. 搞不明白为什么大家都在学习 k8s
  12. vue组件,通过props父组件给子组件传值,WTF, 子组件报错undefined???
  13. matlab 彩色转为黑白,彩色图转为灰度图和黑白图方法
  14. 依赖函数检查 mysql_connect()_解决的方法:mysql_connect()不支持请检查mysql模块是否正确载入...
  15. jquery提示sucess
  16. 客户端浏览器一次http完整请求过程流程图(图文结合诠释请求过程)
  17. 撑不住了,豆瓣用户需要实名制了
  18. keep健身教程合集(阿里云盘)
  19. Mysql 数据库——Mysql 数据库管理
  20. 东软慧聚助力汽车“芯”节能减排

热门文章

  1. Java异常有多慢?
  2. 什么时候应该将花括号用于ES6导入?
  3. Python 面向对象、封装
  4. Scrapy框架的使用之Scrapy对接Selenium
  5. idea中的pom文件中的jar包下载不了,手动下载jar包的方法
  6. 集合框架之三种迭代的能否删除
  7. 能干掉苹果的中国黑客
  8. F2etest+UIRecorder(环境搭建)【1】
  9. em算法怎么对应原有分类_机器学习系列之EM算法
  10. python变量必须以字母和下划线_【转载】关于python中带下划线的变量和函数的意义...