使用相对路径执行命令¶
ID: java/relative-path-command
Kind: problem
Security severity: 5.4
Severity: warning
Precision: medium
Tags:
- security
- external/cwe/cwe-078
- external/cwe/cwe-088
Query suites:
- java-security-extended.qls
- java-security-and-quality.qls
当使用相对路径执行命令时,运行时使用 PATH 环境变量来查找要运行的可执行文件。因此,任何可以更改 PATH 环境变量的用户都可以导致软件运行不同的恶意可执行文件。
建议¶
在大多数情况下,只需使用具有绝对路径而不是相对路径的命令。
在某些情况下,可执行文件的位置在不同的安装中可能不同。在这种情况下,请考虑使用某种形式的配置指定关键可执行文件的位置。使用此方法时,请注意配置系统本身不会受到恶意修改的攻击。
示例¶
class Test {
public static void main(String[] args) {
// BAD: relative path
Runtime.getRuntime().exec("make");
// GOOD: absolute path
Runtime.getRuntime().exec("/usr/bin/make");
// GOOD: build an absolute path from known values
Runtime.getRuntime().exec(Paths.MAKE_PREFIX + "/bin/make");
}
}