CVE-2026-15895 Overview
CVE-2026-15895 is an OS command injection vulnerability in the npm package loading component of AWS jsii-diff versions prior to 1.131.0. The flaw allows context-dependent attackers to execute arbitrary operating system commands by supplying crafted package specifiers to the npm: source argument. The vulnerability is classified under CWE-78: Improper Neutralization of Special Elements used in an OS Command. AWS addressed the issue in jsii-diff v1.131.0. The tool is used in the JSII ecosystem to compare API surfaces of published JSII assemblies, so it is frequently invoked in developer and CI/CD workflows.
Critical Impact
Attackers who can influence the npm: source argument passed to jsii-diff can execute arbitrary commands with the privileges of the invoking user or build agent.
Affected Products
- AWS jsii-diff versions prior to 1.131.0
- Developer workstations invoking jsii-diff against untrusted package specifiers
- CI/CD pipelines that run jsii-diff as part of JSII assembly validation
Discovery Timeline
- 2026-07-15 - CVE-2026-15895 published to NVD
- 2026-07-15 - AWS releases Security Bulletin 2026-057 and jsii v1.131.0
- 2026-07-15 - Last updated in NVD database
Technical Details for CVE-2026-15895
Vulnerability Analysis
The vulnerability resides in the npm package loading component of jsii-diff. When a user passes a package specifier using the npm: source argument, the tool constructs and invokes an underlying shell command to fetch or resolve the referenced package. The specifier is incorporated into that command without adequate neutralization of shell metacharacters, enabling command injection.
Successful exploitation yields arbitrary command execution in the context of the process invoking jsii-diff. In developer environments this typically means the local user account. In automated pipelines it means the build agent, which often holds cloud credentials, package registry tokens, and source repository write access.
The attack requires user action to invoke jsii-diff against an attacker-controlled specifier. Common exploitation paths include tricking a maintainer into diffing a malicious package version, or supplying a poisoned specifier via a pull request that a CI job then processes.
Root Cause
The root cause is improper neutralization of special elements used in an OS command ([CWE-78]). The npm: source argument is concatenated into a shell invocation instead of being passed through a safe argument-array API or validated against an allowlist of package specifier syntax.
Attack Vector
The attack vector is local and requires user interaction. An attacker crafts a package specifier containing shell metacharacters such as backticks, $(), or ;. When a victim runs jsii-diff with the npm: source argument set to that specifier, the injected command runs alongside the intended npm operation. Refer to the AWS Security Bulletin 2026-057 for authoritative technical details.
Detection Methods for CVE-2026-15895
Indicators of Compromise
- Execution of jsii-diff processes with npm: arguments containing shell metacharacters such as ;, |, &, backticks, or $(...)
- Unexpected child processes spawned by jsii-diff or its Node.js runtime, such as sh, bash, curl, or wget
- Outbound network connections from build agents shortly after jsii-diff invocations
- Access to cloud credential files or environment variables from a process tree rooted at jsii-diff
Detection Strategies
- Inventory installed versions of jsii-diff across developer endpoints and CI runners; flag any version below 1.131.0
- Alert on command lines invoking jsii-diff where the npm: argument contains shell metacharacters
- Monitor process ancestry for shell interpreters or network utilities spawned as descendants of jsii-diff
Monitoring Recommendations
- Ingest process execution telemetry from build agents into a centralized SIEM and retain command-line arguments
- Track npm registry fetch activity correlated with jsii-diff invocations to identify anomalous package specifiers
- Review CI/CD job logs for jsii-diff runs triggered by external contributors or untrusted branches
How to Mitigate CVE-2026-15895
Immediate Actions Required
- Upgrade jsii-diff to version 1.131.0 or later on all developer workstations and CI/CD runners
- Audit recent jsii-diff invocations for suspicious npm: arguments and investigate any matching build agents
- Rotate credentials, tokens, and SSH keys stored on build agents that ran vulnerable jsii-diff versions against untrusted inputs
Patch Information
AWS released the fix in jsii-diff v1.131.0. See the GitHub JSII Release v1.131.0 notes and AWS Security Bulletin 2026-057 for release details. Upgrade using the standard npm workflow for your project.
Workarounds
- Avoid invoking jsii-diff with npm: source arguments derived from untrusted input such as pull requests or third-party submissions
- Restrict jsii-diff execution in CI to trusted branches and validated package specifiers
- Run jsii-diff inside ephemeral, network-restricted containers with no long-lived credentials mounted
# Upgrade jsii-diff to the patched version
npm install -g jsii-diff@1.131.0
# Verify installed version
jsii-diff --version
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

