乐趣区

关于bug:iPhone-连不上-WiFi罪魁祸首竟是一串字符

每到一个中央先找 WiFi,曾经是有数现代人的习惯了。然而,遇到奇奇怪怪的 WiFi 名(SSID)可要审慎了。最近就有人在应用 iPhone 手机连贯 WiFi 时遇到了麻烦。

平安研究员 Carl Schou 在用 iPhone 手机尝试连贯名称为 %p%s%s%s%s%n 的 WiFi 后,发现手机 WiFi 性能无奈应用,手动关上 WiFi 也会主动敞开,重启手机或更改 WiFi 名都没用。

Carl Schou 首先在运行 iOS 14.4.2 版本的 iPhone XS 上测试发现了这一 bug,起初在 iOS 14.6 版本上的试验表明这一 bug 仍然存在。

Carl Schou 在 Twitter 上颁布这一 bug 后,很多网友在本人的 iPhone 手机上复现了这一问题,甚至有网友发现该 bug 还会影响 AirDrop 的失常应用。

不过,目前安卓手机用户并未受到该 bug 的影响。

尽管看似无厘头,但这个 bug 是实在存在的。有网友认为该 bug 应该失去更多关注,这有可能是权限晋升破绽,万一被利用,很多 iPhone 用户将受影响。

iPhone 为什么会呈现这样的 bug?

该 bug 被爆出后,许多平安研究员进行了剖析,认为有可能是输出解析问题导致了该 bug。

当 WiFi 名称呈现带有 % 的字符串时,iOS 可能会将 WiFi 名误认为字符串格式化说明符。

而在 C 和 C-style 语言中,字符串格式化说明符具备特定含意,常被语言编译器解决为变量名或命令,而不是文本。例如,命令 printf("geeks for %ngeeks", &c); 不会输入 %n,而是将 %n 后面的字符数存储在变量 c 中。%n 只是格式化说明符,不是真正的文本字符串。因而,该命令的输入是 geeks for geeks,不蕴含 %n。

同理,当 iPhone 试图连贯 WiFi %p%s%s%s%s%n 时,iPhone 并未将这串字符了解为文本而是作为非凡字符串来解决,导致系统内存损坏,进而启动爱护机制,强制将 WiFi 性能设定为敞开状态。

如何解决?

只管重启手机没能解决该 bug,但实际上它的解决办法并不麻烦:

设置 > 通用 > 还原 > 还原网络设置(Settings > General > Reset > Reset Network Settings)

之后,你就能够重新配置网络设置了。

当然要想防患于未然,最好的方法是不要连贯不平安的网络,尤其是 WiFi 名中蕴含 % 的无线网络。当然,目前只有 iPhone 用户要分外留神这一点。

参考链接:

  • https://www.bleepingcomputer….
  • https://www.zdnet.com/article…
  • https://blog.chichou.me/2021/…
  • https://twitter.com/vm_call
退出移动版