命令注入漏洞场景:
在开发中,特定开发需求中引入对系统本地命令的支持,而未进行输入验证时,可能会导致命令注入漏洞
代码审计SINK点:
1、ProcessBuilder
2、Runtime.exec()
3、反射调用 ProcessImpl.start
安全编码规范:
1、限制执行权限:避免使用Runtime、ProcessBuilder等函数,即使使用这类函数也应确保执行命令的进程具有最小权限,避免提升到更高的权限级别。
2、避免直接拼接命令字符串:尽可能使用专门的API或库来处理系统任务,避免直接构建和执行命令字符串
3、输入验证:对所有用户输入进行严格验证,确保符合预期格式,建立白名单机制,仅允许合法的输入和命令类型
白名单:只允许执行ls、date命令