请问Rust标准库中的Command组件是如何处理cmd.exe以及批处理脚本参数的?
请问Rust标准库中的Command组件是如何处理cmd.exe以及批处理脚本参数的?
嘿,这个问题我刚好有印象!之前Rust官方发布过安全公告,说标准库的Command API在处理传给cmd.exe和.bat批处理文件的参数时存在疏漏——如果有人传入构造过的恶意参数,是有可能触发任意shell代码执行的。
举个简单的场景你就懂了:比如你本来想用Command调用一个批处理脚本,传个正常的参数,结果因为Command当时对参数的转义处理不到位,恶意参数里的特殊字符(比如分号、&这类cmd.exe的命令分隔符)没被正确处理,直接被cmd.exe当成了新的命令执行,这就很危险了。
不过好在这个问题已经在Rust 1系列的版本里被修复啦!现在的Command组件会更严谨地处理这类参数,对cmd.exe和批处理脚本的参数做了针对性的转义和校验,避免恶意参数注入的情况发生。
内容来源于stack exchange
相关产品推荐
相关产品推荐

