关键漏洞信息 漏洞标题 Title: cmake 4.1.20250725-gb5cce23 and other recent versions of the 4.x series. assertion failure 漏洞描述 Description: CMakeForEach 断言失败漏洞 漏洞总结 在对 CMake 4.1.20250725-gb5cce23 进行模糊测试期间,在 CMake foreach 命令处理中发现了一个严重的断言失败漏洞。该漏洞发生在第 112 行 "cmForEachCommand.cxx" 中的 "cmForEachFunctionBlocker::ReplayItems" 函数中,其中断言检查由于意外迭代变量计数而失败,导致程序通过 "SIGABRT" 终止。 技术细节 漏洞类型: 断言失败 受影响的函数: 'cmForEachFunctionBlocker::ReplayItems' 源文件: 'cmForEachCommand.cxx' 行号: 112 信号: SIGABRT (6) 组件: CMake Core 漏洞机制及根本原因 此断言失败漏洞是由 foreach 命令处理逻辑中迭代变量计数验证不当引起的。根本问题在于 "cmForEachFunctionBlocker::ReplayItems" 函数,其中断言只需要一个迭代变量,但遇到不同的计数。 在以下情况下会出现此漏洞: 1. CMake 处理包含 foreach 构造的格式错误的 CMakeLists.txt 文件 2. foreach 命令解析器遇到语法错误或参数格式错误 3. 解析器创建一个具有意外迭代变量计数的 foreach 函数阻塞器 4. 当调用 "ReplayItems" 时,断言 "Unexpected number of iteration variables" &; &, this->IterationVarsCount == 1' 失败 5. 程序立即终止 SIGABRT