CodeQL 2.27.4不再读取SEMMLE_TYPESCRIPT_HOME,前端扫描需检查配置

作者:纸飞机时间:2026-11-10 17:37:35浏览:385

CodeQL 2.27.4的JS/TS提取器忽略SEMMLE_TYPESCRIPT_HOME并使用自带编译器,还修正__proto__误报、数据流模型和CWE标签。升级时需核查CLI与部署环境。

CodeQL 2.27.4给JavaScript/TypeScript扫描带来一项配置兼容性变化:提取器不再支持SEMMLE_TYPESCRIPT_HOME环境变量,而是始终使用自带的TypeScript编译器。依赖该变量指定编译器的工作流,升级时需要重新检查;同版还修正了查询误报、数据流模型与CWE标签。

GitHub CodeQL

先排查提取器:环境变量设置将被忽略

官方完整变更日志把SEMMLE_TYPESCRIPT_HOME调整列为破坏性变化。无论旧配置指向哪个TypeScript目录,2.27.4的JavaScript/TypeScript提取器都会忽略该变量。若团队过去通过它影响扫描环境,就应把这一行为纳入升级验证,而不是继续假定自定义目录有效。

这项改变针对CodeQL提取器使用的编译器,不能直接推导为项目自身的TypeScript构建配置被修改。实际升级检查可分开观察项目构建和CodeQL扫描,确认各自的配置与输出。

再核对查询:__proto__误报与CWE分类有调整

js/invalid-prototype-value查询不再报告对象字面量中计算型__proto__属性的误报。语言库还为String.prototype.trimStart、trimEnd和normalize增加了污点传播步骤,并修正Array.prototype.flatMap的流摘要:thisArg参数应流向回调的this,而不是其索引参数。

报告分类方面,js/redos、js/polynomial-redos、js/regex-injection、js/regex-injection-more-sources、js/server-crash与js/loop-bound-injection移除了CWE-730标签。原因是MITRE禁止将该类别用于漏洞映射,相关查询的其他CWE标签仍然保留。这是元数据修正,不代表这些检测全部停用。

跨语言仓库仍需一起复核告警

同一仓库如果还包含Java/Kotlin、Rust或C/C++代码,也会受到准确性改进影响。Java/Kotlin扩展了对JDK、Apache Commons Lang和Text、Guava、OWASP Java Encoder、Spring Framework中日志清理器及条件的识别,路径注入分析也补充了子串判断和字符串替换、删除操作。

Rust降低了分配大小、日志注入及明文日志查询的部分误报。C/C++修正std::byte*缓冲区有意指针运算的可疑缩放误报,不再对标有[[maybe_unused]]的相应变量报告未使用,并新增cpp-code-quality套件。CWE-730标签调整也覆盖C#、Java/Kotlin、Python、Ruby和Swift的部分查询。

CodeQL 扫描分析结果

最后检查CLI输出、pack和部署方式

CLI把Java虚拟机警告与初始化错误改写到标准错误,避免污染JSON等机器可读标准输出。codeql pack bundle和codeql pack publish则在解析符号链接后检查文件边界;最终指向pack根目录外的文件会被排除,并显示警告。CI中的结果解析脚本和自定义查询包都值得据此检查。

版本日志日期为2026年11月2日,GitHub于11月4日发布产品公告。GitHub.com上的code scanning自动部署新CodeQL版本,本版功能也将包含在GHES 3.24中;较旧GHES可手动升级CodeQL。云端部署与企业自建、本地CLI的升级节奏不同,需要分别确认,不能只凭仓库页面变化认定整个环境已更新。

作者最新文章