【发布时间】:2022-01-11 19:57:37
【问题描述】:
我们目前正在对我们的网络应用进行安全漏洞评估。为此,我们一直在使用 OWASP 的 ZAP 工具进行自动化渗透测试。我们从 ZAP 收到的警报之一是整数溢出错误,描述如下:An integer overflow condition exists when an integer, which has not been properly checked from the input stream is used within a compiled program.
实际报告如下:
上面列出的API的方法签名如下:
@GetMapping(value = "/list")
public ResponseEntity<PaginatedResponse> getUserList(
@RequestParam(name = "searchQuery", defaultValue = "") String searchString,
@RequestParam(defaultValue = "1") int pageNumber,
@RequestParam(defaultValue = "100") int pageSize,
@RequestParam(name = "sort_by",required = false) String sortBy,
@RequestParam(name = "descending",defaultValue = "false") boolean isDescending)
我们将 Spring Boot 用于我们的 REST API,pageSize 和 pageNumber 参数是传递给 PageRequest 用于分页目的的值。
我已尝试添加检查以查看输入值是否介于 Integer.MIN_VALUE 和 Integer.MAX_VALUE 之间,但由于转换值的环绕行为,结果值仍有可能是有效整数大于 Java 中整数变量的整数限制。
另外需要注意的是,该工具还将一个整数值传递给一个期望为布尔值的变量(上面屏幕截图中的descending),我认为这也必须以某种方式解决。
也许有一些方法可以在绑定发生之前发现这样的问题?
【问题讨论】:
标签: java spring-boot integer-overflow zap spring-mvc-test