CodeQL是GitHub代码扫描背后的静态分析引擎,它可以发现并修复代码中的安全问题。我们最近发布了CodeQL 2.26.1,它提高了Go、Java/Kotlin和JavaScript/TypeScript的框架覆盖率,并减少了Rust分析中的误报。模型即数据流摘要现在使用完全限定的字段名称,例如MyNamespace:: MyStruct:: myField。
不合格的字段名称仍受支持,但将在12个月内删除。我们改进了日志/日志包的建模,包括slog.Logger方法、With、WithGroup、Attr和Value。这扩大了使用结构化日志记录的应用程序的覆盖范围。我们为org.apache.poi添加了源、接收器和流摘要模型。
我们添加了对Angular的@ HostListener ('window: message',...)和@ HostListener ('document: message',...)装饰器的支持。CodeQL现在将修饰方法的事件参数识别为客户端远程流源。改进的日志/日志建模扩展了go/log-injection和go/clear-text-logging查询的覆盖范围。
Java/path-injection查询现在将使用@ javax.validation.constraints.Pattern验证的输入识别为净化,从而减少误报。现在, java/ssrf查询将Spring WebFlux的WebClient.UriSpec.uri方法的第一个参数视为请求伪造接收器,这可能会产生其他有效警报。js/missing-origin-check查询现在分析用@ HostListener声明的Angular消息事件处理程序。
Rust/hard-coded-cryptographic-value查询现在将算术、按位和字符串追加操作视为障碍。当代码将硬编码常量与非常量数据相结合时,例如在递增随机数或将变量数据附加到常量前缀时,这会减少误报。有关更改的完整列表,请参阅2.26.1版的完整更新日志。