Command Injection Flaw in Amazon CodeCatalyst Blueprints SDK Lets Repository Users Run Arbitrary Commands
Amazon has published security bulletin 2026-095-AWS covering CVE-2026-85012, an operating system command injection flaw in the @amazon-codecatalyst/blueprints.blueprint npm package. Blueprints are reusable project templates that generate a software project, and this package is the open source framework blueprint authors build on, published from the aws/codecatalyst-blueprints repository on GitHub. All versions at or below 0.3.155 are affected, and the issue is fixed in 0.3.156. The weakness sits in the blueprint resynthesis framework, so teams that consume the package in their own build and automation environments carry the exposure. AWS states that no action is required for use of the Amazon CodeCatalyst service itself.
During resynthesis the framework reads the .ownership-file from the existing project to determine which files a blueprint is permitted to modify. In versions before 0.3.156 the owner field of a local merge strategy entry in that file was passed to an operating system command through a shell without any validation. A user with permission to commit to a repository in the project could place shell metacharacters in that field. The next resynthesis run would then hand those characters to the shell, executing arbitrary commands in the environment performing the operation with the privileges and credentials available to it.
This is a privilege boundary failure inside a development pipeline rather than an internet-facing flaw, so the risk is shaped by who holds commit rights on project repositories. Resynthesis environments commonly hold source-control tokens and cloud credentials, so a successful injection turns limited write access into code execution against wider build infrastructure. For the managed service, AWS applies server-side validation that rejects local merge strategy commands outside a restricted allowlisted form, including for blueprint versions published before 0.3.156. FIRST EPSS places the probability of exploitation in the next 30 days at 2.3 percent, and no exploitation in the wild has been reported.
Attack Surface
Supply Chain (Third-party vendors), Cloud Service
Tactics
Execution, Initial Access, Credential Access
Techniques
- T1059 – Command and Scripting Interpreter
- T1195.001 – Compromise Software Dependencies and Development Tools
- T1552 – Unsecured Credentials
SuperPRO's Threat Countermeasures Procedures
- Upgrade the @amazon-codecatalyst/blueprints.blueprint npm package to 0.3.156 or later in every blueprint project and build image; versions at or below 0.3.155 pass the owner field of a local merge strategy entry to a shell without validation (CVE-2026-85012).
- Search package-lock.json, yarn.lock and pnpm-lock.yaml across all blueprint repositories for @amazon-codecatalyst/blueprints.blueprint resolved below 0.3.156, bump the constraint and rebuild rather than relying on a cached node_modules tree.
- Inspect the .ownership-file in every project that is resynthesized outside the managed service and flag any local merge strategy entry whose owner field contains shell metacharacters such as ; | & ` $( or a newline; treat a match as a suspected intrusion attempt.
- Rotate any credentials reachable from a self-hosted resynthesis environment – AWS access keys, Git tokens, artifact registry credentials – if a malicious owner field is found in a project history.
- Run self-hosted resynthesis only in ephemeral containers using short-lived scoped credentials, mirroring the isolated per-project model AWS describes for the service, and remove long-lived AWS keys from those runners.
- Add a CI detection rule that alerts when the Node process executing blueprint resynthesis spawns a child shell (sh -c or bash -c) or network utilities such as curl, wget or nc, since the framework has no legitimate need for these during a merge strategy evaluation.
- Require pull request review and restrict direct commit rights on repositories containing a .ownership-file, as the flaw is reachable by any user able to commit to a repository in the project.