CVE-2026-85012:AWS CodeCatalyst Blueprints SDK 命令注入修复
AWS 发布重要安全公告:CodeCatalyst Blueprints SDK 旧版本在重合成阶段处理 ownership 文件时存在命令注入风险,直接使用者需升级。

CVE-2026-85012:CodeCatalyst Blueprints SDK 用户需要升级
AWS 于 2026 年 9 月 3 日发布重要安全公告,披露 CVE-2026-85012。问题存在于 @amazon-codecatalyst/blueprints.blueprint npm 包的蓝图重合成框架:旧版本读取项目中的 .ownership-file 时,会把本地合并策略的 owner 字段通过 shell 传给操作系统命令,缺少有效校验。能够向项目仓库提交内容的攻击者,可能利用 shell 元字符在执行重合成的环境中运行命令。
AWS 将受影响范围列为 0.3.155 及更早版本,修复版本为 0.3.156。公告同时区分了托管 CodeCatalyst 服务与直接使用开源 npm 包的场景,团队应先确认自己的使用方式,再决定处置动作。
漏洞触发条件与影响边界
Blueprints 是用于生成和维护软件项目的可复用模板。重合成会把蓝图的新版本重新应用到现有项目,并依据 .ownership-file 判断哪些文件可以修改。漏洞位于本地合并策略 owner 字段的处理路径;当不可信仓库内容能够进入重合成环境时,攻击输入可能借助 shell 解释改变原命令。
可执行命令的权限等于重合成环境当时拥有的权限与凭据。因此,风险评估不能只看代码仓库,还要检查任务运行器、环境变量、云凭据、制品令牌和网络访问范围。具有提交权限并不应自然获得构建环境中的广泛权限,最小权限与短期凭据仍是必要防线。
托管服务与 npm 包用户的区别
AWS 公告指出,使用 Amazon CodeCatalyst 托管服务本身无需采取行动。服务中的重合成运行在按项目隔离的环境,凭据范围受限,并有服务端校验阻止不符合允许形式的本地合并命令,包括使用旧蓝图版本的情况。
直接消费 npm 包、维护分支版本或把相关代码集成到自建流水线的团队则不同。AWS 表示升级到 0.3.156 或更高版本是唯一缓解方式。新版本移除 owner 字段的 shell 解释,直接执行命令,并对允许形式进行校验。维护派生代码的团队还要确认修复已经合并,而不是只修改包声明。
如何确认项目是否受影响
先在 lockfile、软件物料清单和制品缓存中搜索完整包名,确认实际解析版本,而不是只查看 package.json 中的范围。还要检查自动化任务、内部模板仓库和长期分支,因为它们可能使用不同锁定文件。若存在 0.3.155 或更早版本,升级后重新生成锁文件,并在干净环境安装验证。
随后检查哪些仓库会触发蓝图重合成、谁拥有提交权限、任务使用哪些凭据,以及 .ownership-file 的历史变化。审计目标是发现异常字段和可疑重合成执行,但没有异常记录不能替代升级。站内的Linux 安全基线可用于收紧运行主机,OpenSSH 用户证书教程则适合减少长期管理凭据。
升级与验证步骤
在隔离分支把依赖提升至 0.3.156 或更高版本,更新 lockfile,执行项目测试与一次受控重合成。确认生成文件符合预期,并检查运行器日志中没有意外 shell 调用。然后重新构建制品并部署,避免旧缓存继续提供受影响版本。
若组织维护 fork,应对照上游修复检查两点:owner 字段不再经过 shell 解释,输入只接受明确允许的命令形式。不要仅用字符串过滤若干元字符代替结构化参数执行,因为不同 shell 和平台可能有不同解释规则。
事件带来的供应链提醒
CVE-2026-85012 展示了配置文件如何跨越数据与命令边界。仓库内文件通常被视为代码的一部分,但自动化系统若把字段直接交给 shell,就会扩大提交者权限。构建和生成工具应使用参数数组调用子进程,对输入建立允许列表,并把任务放在低权限、短生命周期环境。
本次公告的处置重点很明确:托管 CodeCatalyst 用户按 AWS 说明无需动作,直接包用户升级,派生代码同步修复,并审查重合成环境的权限。完成后应把依赖扫描和锁文件核对纳入持续流程,避免相同组件从旧分支或缓存重新进入生产。


