You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复MavenWrapperDownloader.java中的绝对路径遍历漏洞

Maven Wrapper 路径遍历问题修复指南

已修复版本说明

  • 原由takari维护的maven-wrapper项目已正式归档,后续迭代维护由Apache Maven项目组承接,当前3.2.0及以上版本的官方wrapper组件,已经在代码层面修复了MavenWrapperDownloader.java中的绝对路径遍历风险。
  • 可以直接通过Maven官方提供的wrapper生成命令,重新生成项目内的全套wrapper相关文件,直接替换存在风险的旧版本下载器代码,无需手动逐行修改旧文件。

旧版本代码手动修复方案

现有问题的核心风险是第50行代码直接将命令行传入的第一个参数作为文件操作的根目录,没有做任何合法性校验,一旦参数被恶意构造,就会让程序读取、写入系统任意路径下的文件。
结合代码现有逻辑,可以按照以下步骤修复:

  • 第一步:在初始化baseDirectory时,增加规范路径校验
    原问题代码:
    File baseDirectory = new File(args[0]);
    
    修正后代码:
    // 定义程序运行时的预期合法基准目录(即当前工作目录)
    File expectedBaseDir = new File("").getAbsoluteFile();
    File baseDirectory = new File(args[0]);
    // 校验传入的根目录必须落在预期基准目录范围内
    if (!baseDirectory.getCanonicalPath().startsWith(expectedBaseDir.getCanonicalPath() + File.separator)) {
        throw new SecurityException("检测到非法工作目录参数,禁止路径遍历");
    }
    
  • 第二步:在读取wrapper配置文件的逻辑中,二次校验最终文件路径的合法性
    现有逻辑代码:
    File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
    String url = DEFAULT_DOWNLOAD_URL;
    if(mavenWrapperPropertyFile.exists()) {
    
    补充校验逻辑:
    File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
    // 解析最终文件的规范路径,确认没有跳出合法根目录
    String canonicalPropFilePath = mavenWrapperPropertyFile.getCanonicalPath();
    if (!canonicalPropFilePath.startsWith(baseDirectory.getCanonicalPath() + File.separator)) {
        throw new SecurityException("检测到路径遍历风险,终止配置读取流程");
    }
    String url = DEFAULT_DOWNLOAD_URL;
    if(mavenWrapperPropertyFile.exists()) {
    
  • 校验路径时必须拼接系统路径分隔符File.separator作为匹配后缀,避免出现前缀混淆的误判——比如合法目录是/work/project/maven,恶意构造的路径是/work/project/maven-evil,如果只做单纯的字符串前缀匹配,就会将恶意路径误判为合法。
  • 选用getCanonicalPath()做校验的核心原因是,该方法会自动解析路径中的.、..这类相对路径跳转符号,比单纯的字符串校验可靠性高很多。

轻量替代修复方案

如果需要最小化改动代码,也可以直接在解析args[0]参数时增加前置过滤:

  • 检测传入参数中是否包含..路径跳转符号、是否以系统路径分隔符开头,一旦命中就直接抛出安全异常终止程序
  • 强制将传入的路径参数做归一化处理,限定所有文件操作都必须落在当前工作目录范围内,不允许直接指向系统其他位置的绝对路径

内容的提问来源于stack exchange,提问作者marhg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.24 12:27:03