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的参数转义逻辑不一致,导致了安全隐患。
- 建议编程语言在处理命令行参数时增加漏洞缓解措施,以防止类似问题的发生。
➡️