The curious case of shell commands, or how "this bug is required by POSIX"
a year ago
- #shell-scripting
- #system-calls
- #security
- 文章讨论了将命令执行委托给`system(3)`和`sh -c`的工具所引发的问题,这些做法可能导致shell注入漏洞。
- 文中重点指出了`ssh`、`watch`和`i3`等常见工具在处理命令和参数时的误导性行为。
- 文章详细分析了`system(3)`函数及其潜在影响,包括命令参数被错误处理的示例。
- 提出了解决方案和变通方法,例如正确引用和转义命令与参数,以及使用`exec --`避免命令被误解为选项。
- “耻辱墙”列出了存在不安全行为的工具和库,而“荣誉墙”则表扬了那些安全处理命令执行的工具。
- 讨论了`system(3)`实现中的一个严重缺陷:以连字符开头的命令可能被误解为选项,从而导致意外行为。
- 作者已向相关项目和标准组织报告了这些问题,强调需要更安全的默认设置和更好的文档说明。