我试图从我的应用程序在服务器上运行一些SSH命令,我得到CWE-78有人可以帮助减轻相同的错误:-*CWE-78:操作系统命令中使用的特殊元素的不正确中和(“操作系统命令注入”):详细信息:对java.lang.Runtime.exec()的调用包含一个命令注入漏洞。函数的参数是使用不受信任的输入构造的。如果允许攻击者指定命令的全部或部分,则可能使用执行进程的权限在服务器上执行命令。暴露水平取决于输入确认程序的有效性(如果有)。exec()的第一个参数包含来自变量executeCommandsArray的污染数据。受污染的数据源自对AnnotationVirtualController.vc_annotation_entry的早期调用。验证所有不受信任的输入,以确保它符合预期的格式,尽可能使用集中式数据验证例程。使用阻止列表时,请确保清理例程执行足够次数的迭代,以删除所有不允许字符的示例。大多数执行系统命令的API也有一个“安全”版本的方法,它接受字符串数组而不是单个字符串作为输入,这可以防止某些形式的命令注入 *
StringBuilder sb = new StringBuilder();
sb.append("cat *" );
String bashCommand= "/bin/sh";
String optionCommand = "-c";
String[] executeCommandsArray= new String[]
{bashCommand,optionCommand,sb.toString()};
Runtime run = Runtime.getRuntime();
Process pr = run.exec(executeCommandsArray);
int exitcode = pr.waitFor();
1条答案
按热度按时间vql8enpb1#
在正常化器内部传递字符串缓冲区