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);
- Linux/Unix环境下,使用Java的
- 验证修复结果:修改完成后重新运行Checkmarx扫描,确认漏洞被清除;同时手动测试文件相关功能,确保权限设置符合安全要求且功能正常。
内容的提问来源于stack exchange,提问作者suresh kumar
相关产品推荐
相关产品推荐

