Java 此代码如何容易受到命令注入CWE 7的攻击?

Java 此代码如何容易受到命令注入CWE 7的攻击?,java,Java,如何缓解命令注入的此漏洞 protected String runcmd(String cmd) { String line; StringBuilder ret = new StringBuilder(); try { Process p = Runtime.getRuntime().exec(cmd); BufferedReader input = new BufferedReader(

如何缓解命令注入的此漏洞

protected String runcmd(String cmd) {
    String line;
    StringBuilder ret = new StringBuilder();
    try {
        Process p = Runtime.getRuntime().exec(cmd);
        BufferedReader input =
            new BufferedReader(
            new InputStreamReader(p.getInputStream()));
        while ((line = input.readLine()) != null) {
            ret.append(line);
        }
        input.close();
        p.waitFor();

我认为这实际上取决于您没有提到的几个参数,比如这段代码何时执行,运行java应用程序的用户的权限等等

例如,考虑下面的内容。您正在web应用程序的上下文中运行这段代码,而web应用程序本身是以管理权限运行的。假设
runcmd
方法可以通过用户输入获取
cmd
参数来执行


由于您没有对传入的参数执行任何类型的验证,恶意用户可能会以您不希望的方式插入命令以与您的基础系统交互。

您认为代码易受攻击的原因是什么?您是否已识别出特定的漏洞,如果已识别,您是否可以显示您尝试修复该漏洞的解决方案?我在SDN控制器源代码上使用VCG static analyzer,这表示为软件漏洞。我希望其他成员对这一发现进行反馈,以帮助我解决这一问题code@RichieThomas正如我在下面的回答中提到的,这可能有一些潜在的漏洞,但这完全取决于一般设置和此代码运行的上下文。我在SDN控制器源代码上执行的VCG静态分析工具表明了这一点。根据VCG和CWE的说法,这是一个漏洞。你能帮我解释一下这段代码中的漏洞是什么吗