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");
       }
   }

在经修正的代码示例中,提供了完全限定的路径,消除了恶意访问的可能性。

相关检查器

安全培训

应用程序安全培训材料由 Secure Code Warrior 提供。