我们有一个遗留的 C 代码,用于允许权限较低的用户以升级的权限运行自定义脚本。这设置了 SUID 位。此代码将 PATH env 限制为特定文件夹,然后使用system()api 使用受限 shell 执行脚本:
/bin/bash -r -c "script <arg>"
Run Code Online (Sandbox Code Playgroud)
由于路径受到限制,它只能执行该特定文件夹中的脚本。
现在知道了使用system()api命令注入的所有陷阱,可以采取哪些措施来避免命令注入?这在各种脚本等的许多地方使用,所以不想做一个全新的实现来避免任何回归。