---
id: "CVE-2026-89066"
kind: "vulnerability"
aliases: ["CVE-2026-89066"]
title: "projen: shell metacharacters in project config run commands on developer machines"
severity: "high"
cvss: 8.4
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["aws", "ci", "developer-tooling", "javascript", "lab-disclosure", "package", "projen", "typescript"]
not_affected_if: ["no-untrusted-config-input", "projen-0.103.0-or-later"]
published_at: "2026-09-11T16:17:49+00:00"
first_seen_at: "2026-10-24T19:12:58+00:00"
updated_at: "2026-10-25T05:29:37+00:00"
sources: [{"source": "lab", "url": "https://aws.amazon.com/security/security-bulletins/rss/2026-108-aws/", "first_seen_at": "2026-10-24T19:12:58+00:00"}, {"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-89066", "first_seen_at": "2026-10-24T19:23:38+00:00"}]
---

# projen: shell metacharacters in project config run commands on developer machines

projen, a tool that generates project configuration, puts project configuration values and repository file names into generated task definitions without escaping shell metacharacters. An attacker who controls those values can run arbitrary commands on a developer workstation or CI runner when the tasks run.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed version with `npx projen --version` or by reading `projen` in `package.json`; versions below `0.103.0` are affected.
- Look for `.projen/tasks.json` in the repository and review it for shell metacharacters (such as `;`, `|`, `$(`, backticks) in task commands.
- Review project configuration values named in the advisory (LambdaFunctionOptions.entrypoint, AddBundleOptions, JestOptions.extraCliOptions, PytestOptions.testMatch, ReleaseOptions.artifactsDirectory) for shell metacharacters.

## Fix

- Upgrade `projen` to `0.103.0` or later.
- Re-run `npx projen` to regenerate `.projen/tasks.json`, then commit the regenerated file, since upgrading alone does not fix the committed task definitions.
- Until upgraded, remove shell metacharacters from the listed configuration values and file names.

## Timeline

- 2026-10-24T19:12:58+00:00 lab https://aws.amazon.com/security/security-bulletins/rss/2026-108-aws/ — AWS: CVE-2026-89065 and CVE-2026-89066: Issue with projen - Path traversal and OS command injection
- 2026-10-24T19:23:38+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-89066

## Documents

- [advisory] AWS: CVE-2026-89065 and CVE-2026-89066: Issue with projen - Path traversal and OS command injection https://aws.amazon.com/security/security-bulletins/rss/2026-108-aws/

## From the sources

CVE-2026-89065 and CVE-2026-89066: Issue with projen - Path traversal and OS command injection

### CVE-2026-89065 and CVE-2026-89066: Issue with projen - Path traversal and OS command injection

Bulletin ID: 2026-108-AWS Scope: AWS Content Type: Important (requires attention) Publication Date: 09/11/2026 09:00 AM PDT

Description:

projen is an open-source tool for defining and synthesizing software project configurations as code. AWS identified two issues in projen affecting the generated file manifest cleanup component and the task synthesis component.

- CVE-2026-89065 — Relative path traversal in the generated file manifest cleanup component in projen before 0.101.37 might allow context-dependent attackers to recursively delete files and directories outside the project directory, via crafted entries in the version-controlled generated file manifest (.projen/files.json) that is consumed during project synthesis. The corrected containment check is automatically applied by the projen runtime the next time it is run.
- CVE-2026-89066 — Improper neutralization of special elements used in an OS command in the task synthesis component in projen before 0.103.0 might allow context-dependent attackers to execute arbitrary commands on a developer workstation or continuous integration runner via shell metacharacters in project configuration values and repository file names that are interpolated into generated task definitions in .projen/tasks.json.

Impacted versions:

- All projen versions before 0.101.37 (CVE-2026-89065)
- All projen versions before 0.103.0 (CVE-2026-89066)

Resolution:

- CVE-2026-89065 has been addressed in projen version 0.101.37. Upgrading to 0.101.37 or later is sufficient; re-synthesis is not required.
- CVE-2026-89066 has been addressed in projen version 0.103.0. After upgrading, you must re-synthesize your project to regenerate .projen/tasks.json with the corrected task definitions. Upgrading alone is not sufficient because the generated task definition file is committed to the repository.

We recommend upgrading to the latest version and ensuring any derivative code is patched to incorporate the new fixes.

Workarounds:

- CVE-2026-89065: Review the version control history of .projen/files.json for entries that escape the project directory and remove them prior to running projen.
- CVE-2026-89066: Audit project configuration values — including LambdaFunctionOptions.entrypoint, AddBundleOptions fields, JestOptions.extraCliOptions, PytestOptions.testMatch, ReleaseOptions.artifactsDirectory, and other properties listed in the advisory — for shell metacharacters and remove or escape them prior to running projen.

References:

- CVE-2026-89065
- GHSA-7p65-6x86-v7f3
- CVE-2026-89066
- GHSA-q6g4-h6vc-vqm8 

 Please email aws-security@amazon.com with any security questions or concerns.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
