Java中的命令注入漏洞

时间:2017-06-06 11:04:20

标签: java validation security process sonarqube

我正在尝试从代码运行Microsoft Rdp应用程序。

我有以下伪代码和SonarQube抱怨Command Injection Vulnerability

String rdpFilePath = myObject.getRdpFilePath() // get path of .rdp settings file 
ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.command("mstsc", rdpFilePath).start();

SonarQube问题解释如下:

-Potential Command Injection-
The highlighted API is used to execute a system command. 
If unfiltered input is passed to this API, it can lead to arbitrary command execution.

如何过滤我的输入以及如何解决此安全问题?

1 个答案:

答案 0 :(得分:1)

您的样本非常安全。在执行mstsc之前,您应该在此处添加的一件事是检查,rdpFilePath文件是否存在。

如果您将未经过滤的用户输入作为command方法的第一个参数,则存在安全问题(有时,如果要运行的程序也允许运行命令,则下一个参数也可能容易受到攻击) 。在这种情况下,用户可以在系统上执行任意命令。