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

Spring Boot接口用@GetMapping触发Checkmarx关键资源权限分配漏洞咨询

解决Spring Boot API中Checkmarx检测出的「关键资源权限分配错误」漏洞

我们基于Spring Boot框架开发集成Swagger的API项目,使用Checkmarx工具做漏洞检测时,发现使用@GetMapping、@PostMapping注解的资源方法被标记为存在「关键资源权限分配错误(Incorrect Permission Assignment For Critical Resources)」漏洞。Checkmarx报告明确指出:src/main/java/com/test/codes/controller/UserDataController.java第202行创建的文件存在潜在危险权限。

相关代码示例

@RestController
@RequestMapping("/test")
@Tag(name = "User Details")
public class UserDataController {

    private static final Logger LOGGER = ESAPI.getLogger(UserDataController.class);
    
    @Operation(summary = "Get Details", tags = { "User Details" })
    @GetMapping(path = "/v1.3/userData")
    public ResponseEntity<UserDataResponseV3> getUserDataV3(
            @RequestParam(value = "changeFromDate", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:Ss.SSS") LocalDate changeFromDate,
            @RequestParam(value = "changeToDate", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:Ss.SSS") LocalDate changeToDate) {
        LOGGER.info(Logger.EVENT_SUCCESS,
                "Request processing for UserDataController.getUserDataV3() execution Started");

        LOGGER.debug(Logger.EVENT_SUCCESS, "userData Criteria-> from " + changeFromDate + " to {}" + changeToDate);

        
        LOGGER.info(Logger.EVENT_SUCCESS,
                "Request processing for UserDataController.getUserDataV3() execution Ended");

        return new ResponseEntity<>(userData, HttpStatus.OK);
    }
}

漏洞修复方案

  • 定位问题点:提供的代码片段中未显式包含文件创建逻辑,但Checkmarx的检测指向第202行,说明该方法内部或调用的下游服务中存在文件创建操作,且创建时未设置安全的权限(比如默认赋予了过宽的读写权限,如777)。
  • 设置安全文件权限:在执行文件创建的代码位置,显式指定最小必要权限:
    • Linux/Unix环境下,使用Java的PosixFilePermissions设置权限:
      // 设置仅文件所有者可读写,同组用户可读,其他无权限
      Set<PosixFilePermission> safePermissions = PosixFilePermissions.fromString("rw-r-----");
      FileAttribute<Set<PosixFilePermission>> fileAttr = PosixFilePermissions.asFileAttribute(safePermissions);
      Files.createFile(Paths.get("your-file-path"), fileAttr);
      
    • Windows环境下,通过File类的方法限制权限:
      File file = new File("your-file-path");
      file.createNewFile();
      // 仅允许所有者读写,其他用户无权限
      file.setReadable(true, true);
      file.setWritable(true, true);
      file.setExecutable(false, false);
      
  • 验证修复结果:修改完成后重新运行Checkmarx扫描,确认漏洞被清除;同时手动测试文件相关功能,确保权限设置符合安全要求且功能正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 19:00:53