SV.EXEC.PATH
不受信任的搜索路径
当应用程序使用短路径或相对路径搜索关键资源时,会出现 SV.EXEC.PATH 错误,该路径可能指向不受应用程序直接控制的资源。
漏洞与风险
使用短路径或相对路径可能让攻击者运行自己的程序,访问未授权的数据文件,或以预期以外的方式修改配置。如果应用程序使用搜索路径来查找关键资源(例如程序),则攻击者可以修改该搜索路径以指向恶意程序,从而导致目标应用程序运行恶意程序。
缓解与预防
调用其他程序时,请使用完全限定的路径名指定这些程序。
调用其他程序前,先删除或限制所有环境设置。这包括 PATH 环境变量。
使用前检查搜索路径,并删除所有可能不安全的元素,例如当前工作目录或临时文件目录。
漏洞代码示例
复制
public class Test{
static public void main(String[] args) throws IOException {
Runtime.getRuntime().exec("calc.exe"); // No full path specified.SV.EXEC.PATH detected
}
}
在以上示例中,该程序并未给 make 指定绝对路径,并且在调用 Runtime.exec() 之前未清除其环境。Klocwork 报告第 3 行出现 SV.EXEC.PATH 错误,这表示“使用短路径或相对路径创建了新进程”。
修正代码示例
复制
public class Test {
static public void main(String[] args) throws IOException {
Runtime.getRuntime().exec("c:\\windwows\\system32\\calc.exe");
}
}
在经修正的代码示例中,提供了完全限定的路径,消除了恶意访问的可能性。