我正在尝试从代码运行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.
如何过滤我的输入以及如何解决此安全问题?
答案 0 :(得分:1)
您的样本非常安全。在执行mstsc
之前,您应该在此处添加的一件事是检查,rdpFilePath
文件是否存在。
如果您将未经过滤的用户输入作为command
方法的第一个参数,则存在安全问题(有时,如果要运行的程序也允许运行命令,则下一个参数也可能容易受到攻击) 。在这种情况下,用户可以在系统上执行任意命令。