不受控制的格式字符串错误

连接到恶意的Wi-Fi网络会扰乱你的iPhone

世界上最安全的消费者操作系统被花园多样化的编程错误所咬伤。

智能手机Wi-Fi设置的特写照片。

iOS中有一个错误,当设备加入使用笨蛋名称的网络时,禁用Wi-Fi连接,这是一个周末披露的研究员。

通过连接到Wi-Fi网络使用名称“%p%s%s%s%s%n”(引号不包括在内),iphone和ipad将失去加入该网络或任何其他网络的能力,逆向-]工程师Carl Schou说在Twitter上公布

它没有长时间为巨魔资本化:

没有恶意

Schou,谁是黑客资源的拥有者秘密的俱乐部起初,他认为恢复Wi-Fi功能并不容易。最终,他发现用户可以通过打开Settings > General > reset > reset network Settings来重置网络功能。

苹果的代表没有回复通过电子邮件提出的问题,这些问题包括是否计划修复这一漏洞,以及这一漏洞是否影响了macOS或其他苹果产品。

Schou在一则网络消息中说,这个漏洞是由iOS Wi-Fi守护进程中的内部日志功能引起的,它使用了格式表达式中的SSID。这种情况使得在某些情况下,未经授权的格式字符串可能被注入高度戒备的苹果操作系统的敏感部分。然而,他和其他安全专家表示,这个漏洞被恶意利用的可能性很小。

他解释说:“在我看来,真实世界的威胁是最小的,因为你被SSID的长度和格式表达式本身所限制。”“您可能会将其转化为在日志程序中披露信息,但我认为执行代码根本不可能。”

一种快速分析由外部研究人员的错误同意,可能无法利用错误来执行恶意代码。该分析还发现,该错误似乎源于IOS日志记录组件中的漏洞,该组件使用concat函数在将SSID字符串转换为日志文件之前,将SSID字符串转换为格式字符串。

因为字符串未回应IOS的敏感部分,所以黑客不太可能在恶意地滥用测井功能。除此之外,漏洞利用需要一个人积极加入包含可疑名称的网络。

研究人员写道:“就可利用性而言,它没有回声,其他参数似乎也无法控制。”“因此,我不认为这个案子是可利用的。毕竟,要触发这个漏洞,你需要连接到那个WiFi, SSID对受害者是可见的。一个钓鱼式的Wi-Fi门户页面可能会更有效。”

但...

并非所有的研究人员都得出了相同的结论。例如,来自安全公司AirEye的研究人员,该技术可用于绕过坐在网络的周边的安全设备来阻止未经授权的数据进入或退出。

AirEye公司的研究员阿米查伊•舒尔曼写道:“我们发现,尽管iPhone最新的格式字符串漏洞被认为是良性的,但其潜在影响远远超出了任何开玩笑的范围。”“如果你负责组织的安全,你应该意识到这个漏洞,因为相关的攻击可以影响公司数据,同时绕过常见的安全控制,如NAC,防火墙和DLP解决方案。”

Shulman还表示,MacOS受到同样突发的影响。ARS无法立即核实这一索赔。Schou说他没有测试麦克斯,但其他人报告他们无法在操作系统上重现错误。

真正的故事

Schou告诉我,不是每次iOS设备连接到恶意的SSID时就会发生网络崩溃。“这是不确定性的,有时候你足够幸运,Wi-Fi守护进程没有坚持SSID就崩溃了,”他解释道。这个漏洞至少从3月份发布的iOS 14.4.2开始就存在了,可能在那之前几年就已经存在了。

他说,他是在把一部iPhone连接到他的一个无线路由器时发现这个漏洞的。休乌说:“我的所有设备都以各种注射技术命名,以与没有对输入进行消毒的旧设备相混淆。”“显然,还有最新的iOS系统。”

坠机是由研究人员所说的不受控制的格式字符串错误。当损坏的用户输入是以C和C样式语言编写的某些功能中的格式字符串参数出现漏洞。在某些情况下,使用格式令牌(例如%s和%x)可以在某些情况下打印到存储器。该错误最初被认为是无害的。最近,研究人员已经认识到使用%N格式令牌编写恶意代码的可能性。

关于这个bug,最令人惊讶的是它竟然存在。有各种各样的编程指导方针可以防止这些类型的格式字符串缺陷。这个可以说是世界上最安全的消费者操作系统在2021年未能充分实施这些技术,这才是真正的故事。

88读者评论

  1. 引用:
    关于这个bug,最令人惊讶的是它竟然存在。有各种各样的编程指导方针可以防止这些类型的格式字符串缺陷。这个可以说是世界上最安全的消费者操作系统在2021年未能充分实施这些技术,这才是真正的故事。


    对于不是程序员的人来说,这种疏忽有多严重?
    207个帖子|注册
  2. 它可能会令人惊讶的是,它存在于现代C程序中(在那里通常很明显,您正在进行这一点,采用这种类型的功能是有限的,语言本身是编译的),但常规错误类别包含像SQL注射攻击的东西也是流行的Web语言,因此它可能是代码中最常见的缺陷。

    在向代码提供用户数据时一定要小心。
    |注册了4536个帖子
  3. 谢谢你的易懂的文章。到目前为止,其他的科技“记者”都在滔滔不绝地胡说八道。

    也就是说,这将向您展示XKCD是如何完全地将世界包裹起来的。

    小鲍比表确实。
    5667帖子|挂号的
  4. Ben4Jammin写道:
    引用:
    关于这个bug,最令人惊讶的是它竟然存在。有各种各样的编程指导方针可以防止这些类型的格式字符串缺陷。这个可以说是世界上最安全的消费者操作系统在2021年未能充分实施这些技术,这才是真正的故事。


    对于不是程序员的人来说,这种疏忽有多严重?


    非常令人震惊的。任何可接受用户输入数据(直接或在这种情况下的应用程序和网站)的软件(应用程序和网站)都应在程序使用之前通过清洁功能来擦洗清洁功能。
    541个帖子|注册
  5. Ben4Jammin写道:
    引用:
    关于这个bug,最令人惊讶的是它竟然存在。有各种各样的编程指导方针可以防止这些类型的格式字符串缺陷。这个可以说是世界上最安全的消费者操作系统在2021年未能充分实施这些技术,这才是真正的故事。


    对于不是程序员的人来说,这种疏忽有多严重?


    非常令人震惊的。这根本不应该存在。现代静态分析应该抓住这一点。

    这表明操作系统可能容易受到缓冲区溢出或信息泄露的影响。
    63帖子|挂号的
  6. 引用:
    “这是不确定性的,有时你足够幸运,Wi-Fi守护进程没有坚持(在)SSID就崩溃了。”

    这个句子不需要[in]这个词。持久化SSID意味着保存它。
    |注册了3814个帖子
  7. Ben4Jammin写道:
    引用:
    关于这个bug,最令人惊讶的是它竟然存在。有各种各样的编程指导方针可以防止这些类型的格式字符串缺陷。这个可以说是世界上最安全的消费者操作系统在2021年未能充分实施这些技术,这才是真正的故事。


    对于不是程序员的人来说,这种疏忽有多严重?

    这可能是日志记录的一个进展,它最初是puts()(不采用运行时格式),然后他们想要额外的文本并将其移动到printf()。

    有些程序员确实总是使用printf(),但它有这个问题,所以这通常是一个新程序员的错误。大多数文本注入问题都是程序员新犯的错误,而且数量非常多。

    除非这个人不是新来的,而且真的应该知道得更好,否则它更多的是一个代码审查问题。

    错误本身也是一个内存问题,就好像可以添加格式说明符,也可以通过C的变量功能如何工作,从而可以将其读取超出其界限。我不会将其写入无关紧要。

    最后一次编辑Cerberusti.2021年6月21日星期一下午4:23

    |注册了4536个帖子
  8. Ben4Jammin写道:
    引用:
    关于这个bug,最令人惊讶的是它竟然存在。有各种各样的编程指导方针可以防止这些类型的格式字符串缺陷。这个可以说是世界上最安全的消费者操作系统在2021年未能充分实施这些技术,这才是真正的故事。


    对于不是程序员的人来说,这种疏忽有多严重?

    极。

    这是非常简单的,因为如果你使用字符串格式化函数,绝对没有理由生成格式化字符串。基本上,他们必须执行printf(concat(“Wifi SSID=”,SSID))而不是执行printf(“Wifi SSID=”,SSID)。

    但是,它是公平的,它可能并不是那么明显 - 最有可能发生的事情是他们使用了一个不能使其清除它支持Printf样式格式的函数。例如,像nslog.。一些开发人员可能并不知道他们可以使用printf样式格式,因为日志记录函数名称没有指示它和它附近的其余代码。
    47个帖子|挂号的
  9. 有人甚至如何找到这种错误?

    我对几年前的锁屏密码错误也有类似的感觉。人们只是坐在那里尝试数百万个随机值,希望引起bug吗?
    1031帖子|挂号的
  10. 这似乎是巨魔的完美方式将是Wifi Squatters,只需通过设置一个*不安全的* wifi与那个ssid并观看所有邻居尝试连接(显然将其设置为未实际的路线,因此成功连接的Android用户仍然无法到达任何地方)
    167帖子|挂号的
  11. 我困惑。这跟阿斯的黄金日有什么关系?/秒
    1031帖子|挂号的
  12. FOOFOO22.写道:
    有人甚至如何找到这种错误?

    我对几年前的锁屏密码错误也有类似的感觉。人们只是坐在那里尝试数百万个随机值,希望引起bug吗?

    这是在文章中解决的。

    引用:
    他说,他是在把一部iPhone连接到他的一个无线路由器时发现这个漏洞的。“所有设备都以各种注射技术命名,以便与未经清理输入的旧设备混淆休乌说:“。“显然,还有最新的iOS系统。”
    (粗体)
    1527帖子|挂号的
  13. kyuu.写道:
    FOOFOO22.写道:
    有人甚至如何找到这种错误?

    我对几年前的锁屏密码错误也有类似的感觉。人们只是坐在那里尝试数百万个随机值,希望引起bug吗?

    这是在文章中解决的。

    引用:
    他说,他是在把一部iPhone连接到他的一个无线路由器时发现这个漏洞的。“所有设备都以各种注射技术命名,以便与未经清理输入的旧设备混淆休乌说:“。“显然,还有最新的iOS系统。”
    (粗体)


    仍然这是一串字符。为什么他使它与更长或更短的长度相比?
    1031帖子|挂号的
  14. FOOFOO22.写道:
    kyuu.写道:
    FOOFOO22.写道:
    有人甚至如何找到这种错误?

    我对几年前的锁屏密码错误也有类似的感觉。人们只是坐在那里尝试数百万个随机值,希望引起bug吗?

    这是在文章中解决的。

    引用:
    他说,他是在把一部iPhone连接到他的一个无线路由器时发现这个漏洞的。“所有设备都以各种注射技术命名,以便与未经清理输入的旧设备混淆休乌说:“。“显然,还有最新的iOS系统。”
    (粗体)


    仍然这是一串字符。为什么他使它与更长或更短的长度相比?


    因为他无法将Bobby Tables的全名放入允许的wifi名称字符列表中。

    (我并不声称这是真的)
    2785帖子|挂号的
  15. Ben4Jammin写道:
    引用:
    关于这个bug,最令人惊讶的是它竟然存在。有各种各样的编程指导方针可以防止这些类型的格式字符串缺陷。这个可以说是世界上最安全的消费者操作系统在2021年未能充分实施这些技术,这才是真正的故事。


    对于不是程序员的人来说,这种疏忽有多严重?


    它是#1Owasp十大名单

    (批准它是Web应用程序而不是操作系统中最重要的事情列表,但仍然是)
    43帖子|挂号的
  16. “最终,他发现用户可以通过打开设置>通用>重置>重置网络设置来重置网络功能”

    这将是我尝试的第一件事,如果我根本无法访问任何网络。
    |注册了257个帖子
  17. (忍者在Sep332)

    最后一次编辑Foxyshadis.在星期八君21日,2021年4:59下午

    4531帖子|挂号的
  18. 写道:
    Ben4Jammin写道:
    引用:
    关于这个bug,最令人惊讶的是它竟然存在。有各种各样的编程指导方针可以防止这些类型的格式字符串缺陷。这个可以说是世界上最安全的消费者操作系统在2021年未能充分实施这些技术,这才是真正的故事。

    对于不是程序员的人来说,这种疏忽有多严重?

    非常令人震惊的。任何可接受用户输入数据(直接或在这种情况下的应用程序和网站)的软件(应用程序和网站)都应在程序使用之前通过清洁功能来擦洗清洁功能。

    这个SSID是完全有效的,在这个上下文中引入一个清除函数来清除SSID实际上是一个错误。解决方案是不要将SSID解释为格式字符串,这样做确实是相当过分的。
    1005帖子|注册
  19. Ben4Jammin写道:
    引用:
    关于这个bug,最令人惊讶的是它竟然存在。有各种各样的编程指导方针可以防止这些类型的格式字符串缺陷。这个可以说是世界上最安全的消费者操作系统在2021年未能充分实施这些技术,这才是真正的故事。


    对于不是程序员的人来说,这种疏忽有多严重?


    这是很糟糕的。基本上,程序员没有意识到SSID是用户输入,也没有做基本的清理工作。

    实际上,它是更糟糕的是而不是用户输入敌人输入,不管出于什么原因,他们决定盲目地相信它。

    一个可能的解释是,附加到无线网络的基本代码已经存在了非常长的时间。该代码可能已经写了几十年前,然后从来没有真正考虑过。90年代的程序员试图安全,但尚未发明很多攻击技巧。我不记得听到格式字符串错误,直到嗯,2000年代初?也许以后?谁写了这段代码可能没有知道潜在的漏洞,然后没有人触摸它后来看到了疏忽。

    最后一次编辑星期一6月21日,2021年5:00

    |注册了7372个帖子
  20. papatroll写道:
    Ben4Jammin写道:
    引用:
    关于这个bug,最令人惊讶的是它竟然存在。有各种各样的编程指导方针可以防止这些类型的格式字符串缺陷。这个可以说是世界上最安全的消费者操作系统在2021年未能充分实施这些技术,这才是真正的故事。


    对于不是程序员的人来说,这种疏忽有多严重?


    非常令人震惊的。这根本不应该存在。现代静态分析应该抓住这一点。

    这表明操作系统可能容易受到缓冲区溢出或信息泄露的影响。

    也许吧,但是原创者会在这上面花点功夫,试图找到一个更大的突破,而且很多人都没有成功。最有可能的是,这是一个在审查中没有发现的一次性错误,这将令人尴尬,但没有用处。
    4531帖子|挂号的
  21. 我想知道当你输入“robert')时会发生什么;删除表学生; - ”作为密码......
    549帖子|挂号的
  22. jdvorak写道:
    引用:
    这个可以说是世界上最安全的消费者操作系统在2021年未能充分实施这些技术,这才是真正的故事。

    是操作系统可以说是最安全的,还是运行该操作系统的设备被如此锁定,以至于后者获得了荣誉?

    有区别吗?
    1005帖子|注册
  23. 写道:
    Ben4Jammin写道:
    引用:
    关于这个bug,最令人惊讶的是它竟然存在。有各种各样的编程指导方针可以防止这些类型的格式字符串缺陷。这个可以说是世界上最安全的消费者操作系统在2021年未能充分实施这些技术,这才是真正的故事。


    对于不是程序员的人来说,这种疏忽有多严重?


    这是很糟糕的。基本上,程序员没有意识到SSID是用户输入,也没有做基本的清理工作。

    实际上,它是更糟糕的是而不是用户输入敌人输入,不管出于什么原因,他们决定盲目地相信它。

    一个可能的解释是,附加到无线网络的基本代码已经存在了非常长的时间。该代码可能已经写了几十年前,然后从来没有真正考虑过。90年代的程序员试图安全,但尚未发明很多攻击技巧。我不记得听到格式字符串错误,直到嗯,2000年代初?也许以后?谁写了这段代码可能没有知道潜在的漏洞,然后没有人触摸它后来看到了疏忽。

    它在日志代码中,所以它存在了几十年的可能性是零。最有可能的是,它通过“为将来的故障排除添加额外的日志”来进行审查,虽然通常应该三思而行地查看字符串格式化,但几乎没有人会太过认真地考虑日志代码。
    4531帖子|挂号的
  24. 克里斯__写道:
    Ben4Jammin写道:
    引用:
    关于这个bug,最令人惊讶的是它竟然存在。有各种各样的编程指导方针可以防止这些类型的格式字符串缺陷。这个可以说是世界上最安全的消费者操作系统在2021年未能充分实施这些技术,这才是真正的故事。


    对于不是程序员的人来说,这种疏忽有多严重?


    它是#1Owasp十大名单

    (批准它是Web应用程序而不是操作系统中最重要的事情列表,但仍然是)

    编程的第一个诫命:你应该消毒用户输入。
    489帖子|挂号的
  25. Foxyshadis.写道:
    写道:
    Ben4Jammin写道:
    引用:
    关于这个bug,最令人惊讶的是它竟然存在。有各种各样的编程指导方针可以防止这些类型的格式字符串缺陷。这个可以说是世界上最安全的消费者操作系统在2021年未能充分实施这些技术,这才是真正的故事。


    对于不是程序员的人来说,这种疏忽有多严重?


    这是很糟糕的。基本上,程序员没有意识到SSID是用户输入,也没有做基本的清理工作。

    实际上,它是更糟糕的是而不是用户输入敌人输入,不管出于什么原因,他们决定盲目地相信它。

    一个可能的解释是,附加到无线网络的基本代码已经存在了非常长的时间。该代码可能已经写了几十年前,然后从来没有真正考虑过。90年代的程序员试图安全,但尚未发明很多攻击技巧。我不记得听到格式字符串错误,直到嗯,2000年代初?也许以后?谁写了这段代码可能没有知道潜在的漏洞,然后没有人触摸它后来看到了疏忽。

    它在日志代码中,所以它存在了几十年的可能性是零。最有可能的是,它通过“为将来的故障排除添加额外的日志”来进行审查,虽然通常应该三思而行地查看字符串格式化,但几乎没有人会太过认真地考虑日志代码。


    为什么要在几十年中记录代码?这是最初创建该功能时写入的事情。

    我的意思是,是的,当然,更多的可以粘在后面,或修改,但我打赌在第一个发布中有核心日志代码。

    最后一次编辑星期一6月21日,2021年5:12 PM

    |注册了7372个帖子
  26. Ben4Jammin写道:
    引用:
    关于这个bug,最令人惊讶的是它竟然存在。有各种各样的编程指导方针可以防止这些类型的格式字符串缺陷。这个可以说是世界上最安全的消费者操作系统在2021年未能充分实施这些技术,这才是真正的故事。


    对于不是程序员的人来说,这种疏忽有多严重?


    忘记在地铁一整天工作时使用手套?
    |注册了3469个帖子
  27. Chaos215bar2.写道:
    写道:
    Ben4Jammin写道:
    引用:
    关于这个bug,最令人惊讶的是它竟然存在。有各种各样的编程指导方针可以防止这些类型的格式字符串缺陷。这个可以说是世界上最安全的消费者操作系统在2021年未能充分实施这些技术,这才是真正的故事。

    对于不是程序员的人来说,这种疏忽有多严重?

    非常令人震惊的。任何可接受用户输入数据(直接或在这种情况下的应用程序和网站)的软件(应用程序和网站)都应在程序使用之前通过清洁功能来擦洗清洁功能。

    这个SSID是完全有效的,在这个上下文中引入一个清除函数来清除SSID实际上是一个错误。解决方案是不要将SSID解释为格式字符串,这样做确实是相当过分的。


    我更多地使用SQL,但更好的实践似乎总是参数化,而不是无害化。当攻击者想到一些您没有预料到的东西时,清除总是有可能使您错过一些东西,并且有可能破坏那些本来是有效的输入。像从所有字符串中删除DROP这样简单的操作可能看起来是一个清理SQL输入的好主意,但显然最终可能会破坏有效的输入,但会删除部分单词,甚至只是改变某人的论坛帖子的意思。
    3534帖子|挂号的
  28. Jeromeyers2.写道:
    除非您将iPhone放入飞机模式,否则这一切都陷入了WiFi,因为您无法现实地关闭WiFi。简单地以最明显的方式“关闭”WiFi,它实际上会警告你,它只会停留24小时。但更加陷入困境是这样的事实:如果移动一点点,它会自行重新打开。可爱的经验在高速公路上旅行。基本上,iPhone坚持使用WiFi,无论它是否能够保护自己。


    如果您想关闭WiFi即可进入设置 - > WiFi并单击切换,它将关闭它。锁定屏幕小部件确实只能断开与WiFi网络接近的连接,而不是关闭WiFi,它会告诉您何时触及它。这是一个有意的设计变化,因为它更像是人们似乎想要的东西。禁用WiFi关闭AirDrop,AirPlay,我相信许多其他依赖WiFi作为其功能的一部分的东西,这可能对最终用户可能并不明显。
    3534帖子|挂号的
  29. 我发现没有什么可以阻止您在SSID中使用Unicode。

    剧透: 显示
    图像


    不幸的是,它并没有工作,我希望。iOS和Android显示并连接罚款。Windows没有正确显示它,但仍然连接。如果你试图连接到它,我的Kindle Paperwhite的WiFi会崩溃。我不得不将其超出网络范围,重新启动,并将其从已保存的网络列表中删除,以便再次工作。
    |注册了6849个帖子
  30. Jeromeyers2.写道:
    除非您将iPhone放入飞机模式,否则这一切都陷入了困境,因为您无法现实地关闭WiFi


    阅读手册会很有帮助:

    https://support.apple.com/guide/iphone/ ... 0 / IOS / 14.0
    1538帖子|挂号的
  31. 写道:
    任何可接受用户输入数据(直接或在这种情况下的应用程序和网站)的软件(应用程序和网站)都应在程序使用之前通过清洁功能来擦洗清洁功能。

    绝对地。然而,典型的擦洗功能/方法认为,%s是无害的。

    它对擦洗此处少,它更多地址是使用用户输入的字符串作为格式字符串。这从未有必要。
    有105个帖子在|注册
  32. 是否有人足够愚蠢地通过这样的名字连接到WiFi网络?

    我相信这样的名字即使是最容易受骗的人也会产生怀疑。
    280个帖子|注册
  33. 薄荷写道:
    克里斯__写道:
    Ben4Jammin写道:
    引用:
    关于这个bug,最令人惊讶的是它竟然存在。有各种各样的编程指导方针可以防止这些类型的格式字符串缺陷。这个可以说是世界上最安全的消费者操作系统在2021年未能充分实施这些技术,这才是真正的故事。


    对于不是程序员的人来说,这种疏忽有多严重?


    它是#1Owasp十大名单

    (批准它是Web应用程序而不是操作系统中最重要的事情列表,但仍然是)

    编程的第一个诫命:你应该消毒用户输入。


    这里的输入(SSID)实际上是有效的,但是被错误地处理了。
    280个帖子|注册
  34. thetripod.写道:
    是否有人足够愚蠢地通过这样的名字连接到WiFi网络?

    我相信这样的名字即使是最容易受骗的人也会产生怀疑。


    “可用的Wi-Fi网络”通知弹出窗口可能不会因让人们连接到随机的东西而受到伤害。

    通知确实给了你SSID;但是,鉴于用户倾向只需点要地单击了若干人的东西“嘿,我闻到这里闻到了一些互联网!”势必抓住某人;特别是如果他们没有足够便宜的数据计划(相对于他们的资源),以统一“在怀疑时,不要”姿态。
    |注册了7491个帖子
  35. Chaos215bar2.写道:
    jdvorak写道:
    引用:
    这个可以说是世界上最安全的消费者操作系统在2021年未能充分实施这些技术,这才是真正的故事。

    是操作系统可以说是最安全的,还是运行该操作系统的设备被如此锁定,以至于后者获得了荣誉?

    有区别吗?

    是的。一个是关于操作系统本身,而另一个是关于生态系统。在比较iSS时可以使用不同的指标。如果可以达成这样的指标作为比较的基础,那么我们可以获得可接受的答案。但我担心让人们同意构成有效度量的内容几乎是不可能的。所以我们留下了意见。
    1532个帖子|注册
  36. 这让我想起了众所周知的XKCD卡通。

    图像
    2001帖子|挂号的

你必须置评。

通道ARS Technica