CVE-2024-24576 Windows 下多语言命令注入漏洞分析

💡 原文中文,约21100字,阅读约需51分钟。
📝

内容提要

Flatt Security Inc.的RyotaK披露了Windows下多个编程语言的命令注入漏洞,其中Rust语言的漏洞编号为CVE-2024-24576。漏洞是由于Windows下cmd.exe对命令行参数的特殊解析逻辑导致的。PHP、Python等语言也受到影响。文章还分析了漏洞的原因和补丁分析,并提到了Python版本的漏洞分析。

🎯

关键要点

  • Flatt Security Inc.的RyotaK披露了Windows下多个编程语言的命令注入漏洞,Rust语言的漏洞编号为CVE-2024-24576。
  • 该漏洞源于Windows下cmd.exe对命令行参数的特殊解析逻辑,影响Rust、PHP、Python等多种语言。
  • 漏洞存在于Rust for Windows版本低于1.77.2,攻击者可以通过控制传递给子进程的参数执行任意命令。
  • 漏洞的CWE分类包括CWE-78(操作系统命令注入)和CWE-88(命令中的参数分隔符未正确处理)。
  • PoC测试展示了如何在Rust中构建和触发该漏洞,攻击者可以通过特定参数执行命令。
  • 补丁分析显示Rust在1.77.2版本中修复了make_bat_command_line函数的处理逻辑,避免了参数注入问题。
  • Python同样存在类似的命令注入问题,测试代码表明Python的subprocess模块未能有效处理.bat文件的参数。
  • Windows的CreateProcess函数在处理命令行参数时存在特殊逻辑,可能导致注入漏洞。
  • cmd.exe的命令行参数解析逻辑与Rust的参数转义逻辑不一致,导致了安全隐患。
  • 建议编程语言在处理命令行参数时增加漏洞缓解措施,以防止类似问题的发生。
➡️

继续阅读