{"id":"GHSA-q6g4-h6vc-vqm8","kind":"vulnerability","aliases":["GHSA-q6g4-h6vc-vqm8"],"related":[],"title":"CVE-2026-89065 and CVE-2026-89066: Issue with projen - Path traversal and OS command injection","description":"CVE-2026-89065 and CVE-2026-89066: Issue with projen - Path traversal and OS command injection\n\n### CVE-2026-89065 and CVE-2026-89066: Issue with projen - Path traversal and OS command injection\n\nBulletin ID: 2026-108-AWS Scope: AWS Content Type: Important (requires attention) Publication Date: 09/11/2026 09:00 AM PDT\n\nDescription:\n\nprojen 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.\n\n- 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.\n- 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.\n\nImpacted versions:\n\n- All projen versions before 0.101.37 (CVE-2026-89065)\n- All projen versions before 0.103.0 (CVE-2026-89066)\n\nResolution:\n\n- 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.\n- 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.\n\nWe recommend upgrading to the latest version and ensuring any derivative code is patched to incorporate the new fixes.\n\nWorkarounds:\n\n- 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.\n- 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.\n\nReferences:\n\n- CVE-2026-89065\n- GHSA-7p65-6x86-v7f3\n- CVE-2026-89066\n- GHSA-q6g4-h6vc-vqm8 \n\n Please email aws-security@amazon.com with any security questions or concerns.","summary":"projen is a tool that generates project configuration from code. A crafted entry in the committed .projen/files.json can make it recursively delete files outside the project (CVE-2026-89065), and shell metacharacters in config values or repository file names can run arbitrary commands on a developer workstation or CI runner when tasks are synthesized (CVE-2026-89066).","severity":"unknown","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["aws","aws-cdk","ci","developer-workstations","javascript","lab-disclosure","package","projen","typescript"],"not_affected_if":["fully-patched-version","not-using-projen"],"how_to_check":"- Check the installed version with `npx projen --version` or in `package.json` for `projen`; versions below `0.101.37` are affected by CVE-2026-89065 and below `0.103.0` by CVE-2026-89066.\n- Review `.projen/files.json` in version control history for entries that point outside the project directory.\n- Audit `.projen/tasks.json` and project config values (for example LambdaFunctionOptions.entrypoint, JestOptions.extraCliOptions, PytestOptions.testMatch, ReleaseOptions.artifactsDirectory) for shell metacharacters.","fix":"- Upgrade projen to `0.101.37` or later for CVE-2026-89065; re-synthesis is not required.\n- Upgrade projen to `0.103.0` or later for CVE-2026-89066, then re-run projen synthesis and commit the regenerated `.projen/tasks.json`.\n- Remove any suspicious shell metacharacters from project configuration values and file names before running projen.","status":"open","published_at":null,"first_seen_at":"2026-10-24T19:12:58+00:00","triaged_at":"2026-10-25T04:51:33+00:00","updated_at":"2026-10-25T17:17:31+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-25T04:51:33Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade projen to `0.101.37` or later for CVE-2026-89065; re-synthesis is not required.\n- Upgrade projen to `0.103.0` or later for CVE-2026-89066, then re-run projen synthesis and commit the regenerated `.projen/tasks.json`.\n- Remove any suspicious shell metacharacters from project configuration values and file names before running projen.","reach":"unknown","title":"projen: crafted project files delete outside folder and run shell commands","impact":"high","summary":"projen is a tool that generates project configuration from code. A crafted entry in the committed .projen/files.json can make it recursively delete files outside the project (CVE-2026-89065), and shell metacharacters in config values or repository file names can run arbitrary commands on a developer workstation or CI runner when tasks are synthesized (CVE-2026-89066).","category":"package","nicknames":[],"who_cares":["projen","typescript","javascript","ci","developer-workstations","aws-cdk"],"confidence":0.8,"needs_auth":"unknown","worst_case":"Attacker runs arbitrary commands on developer machines or CI runners, or deletes files outside the project.","analyst_note":"Confirm exact exploitation preconditions (whether a malicious commit or PR is enough) and the full list of affected config fields via the linked GHSA-7p65-6x86-v7f3 and advisory pages.","how_to_check":"- Check the installed version with `npx projen --version` or in `package.json` for `projen`; versions below `0.101.37` are affected by CVE-2026-89065 and below `0.103.0` by CVE-2026-89066.\n- Review `.projen/files.json` in version control history for entries that point outside the project directory.\n- Audit `.projen/tasks.json` and project config values (for example LambdaFunctionOptions.entrypoint, JestOptions.extraCliOptions, PytestOptions.testMatch, ReleaseOptions.artifactsDirectory) for shell metacharacters.","needs_analyst":true,"not_affected_if":["not-using-projen","fully-patched-version"],"who_is_affected":"Any team that uses projen to generate and maintain project configuration, especially where .projen/files.json or .projen/tasks.json are committed to a repository and projen runs on developer workstations or CI runners. Projects that do not use projen, or that run it only on fully trusted, reviewed repositories, face lower practical exposure.","user_interaction":"yes","needs_special_setup":"unknown","severity_if_unknown":"unknown"},"cost_usd":0.000867,"input_tokens":4297,"output_tokens":875,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-108':134C '-2026':2A,6A,69B,97B,100C,104C,116C,120C,186C,254C,321C,329C,333C,356C,419C,443C,477C,485C '-89065':3A,70B,101C,117C,187C,322C,334C,420C,478C '-89066':7A,98B,105C,121C,255C,330C,357C,444C,486C '0.101.37':201C,319C,341C,344C '0.103.0':274C,327C,364C '00':147C '09':146C '09/11/2026':145C '2026':133C '6x86':482C '7p65':481C 'addbundleopt':451C 'address':337C,360C 'advisori':462C 'affect':173C 'allow':203C,276C 'alon':383C 'appli':242C 'arbitrari':83B,283C 'attack':207C,280C 'attent':142C 'audit':445C 'automat':241C 'aw':27B,29B,135C,137C,167C 'aws-cdk':28B 'aws-security@amazon.com':494C 'bulletin':131C 'cdk':30B 'check':239C 'ci':31B,90B 'cleanup':178C,196C 'code':51B,166C,409C 'command':15A,84B,113C,129C,265C,284C 'commit':57B,394C 'compon':179C,184C,197C,270C 'concern':500C 'config':75B 'configur':49B,164C,298C,447C 'consum':232C 'contain':238C 'content':138C 'context':205C,278C 'context-depend':204C,277C 'continu':290C 'control':225C,424C 'correct':237C,379C 'craft':53B,219C 'cve':1A,5A,68B,96B,99C,103C,115C,119C,185C,253C,320C,328C,332C,355C,418C,442C,476C,484C 'date':144C 'defin':159C 'definit':310C,381C,391C 'delet':63B,210C 'depend':206C,279C 'deriv':408C 'descript':150C 'develop':33B,87B,287C 'developer-workst':32B 'directori':213C,217C,434C 'disclosur':38B 'element':260C 'email':493C 'ensur':406C 'entri':54B,220C,429C 'escap':431C,469C 'execut':282C 'field':452C 'file':64B,79B,176C,194C,211C,227C,302C,392C 'fix':416C 'generat':47B,175C,193C,226C,308C,389C 'ghsa':18A,23A,480C,488C 'ghsa-7p65-6x86-v7f3':479C 'ghsa-q6g4-h6vc-vqm8':17A,22A,487C 'h6vc':20A,25A,490C 'histori':425C 'id':132C 'identifi':168C 'impact':313C 'import':140C 'improp':256C 'includ':449C 'incorpor':413C 'inject':16A,114C,130C 'integr':291C 'interpol':306C 'issu':8A,106C,122C,170C 'javascript':35B 'jestoptions.extraclioptions':453C 'lab':37B 'lab-disclosur':36B 'lambdafunctionoptions.entrypoint':450C 'later':346C 'latest':403C 'list':459C 'make':60B 'manifest':177C,195C,228C 'metacharact':73B,295C,465C 'might':202C,275C 'must':368C 'name':80B,303C 'neutral':257C 'new':415C 'next':248C 'open':155C 'open-sourc':154C 'os':14A,112C,128C,264C 'outsid':65B,214C 'packag':39B 'patch':411C 'path':11A,109C,125C,189C 'pdt':149C 'pleas':492C 'prior':438C,471C 'project':48B,67B,163C,216C,234C,297C,373C,433C,446C 'projen':10A,40B,42B,108C,124C,151C,172C,199C,245C,272C,316C,324C,339C,362C,441C,474C 'projen/files.json':58B,229C,427C 'projen/tasks.json':312C,376C 'properti':458C 'public':143C 'pytestoptions.testmatch':454C 'q6g4':19A,24A,489C 'question':498C 're':350C,370C 're-synthes':369C 're-synthesi':349C 'recommend':399C 'recurs':62B,209C 'refer':475C 'regener':375C 'relat':188C 'releaseoptions.artifactsdirectory':455C 'remov':436C,467C 'repositori':78B,301C,397C 'requir':141C,354C 'resolut':331C 'review':421C 'run':82B,252C,440C,473C 'runner':91B,292C 'runtim':246C 'scope':136C 'secur':497C 'shell':72B,294C,464C 'softwar':162C 'sourc':156C 'special':259C 'suffici':348C,386C 'synthes':95B,161C,371C 'synthesi':183C,235C,269C,351C 'task':93B,182C,268C,309C,380C,390C 'time':249C 'tool':45B,157C 'travers':12A,110C,126C,190C 'two':169C 'type':139C 'typescript':41B 'upgrad':342C,366C,382C,400C 'use':261C 'v7f3':483C 'valu':76B,299C,448C 'version':224C,314C,317C,325C,340C,363C,404C,423C 'version-control':223C 'via':218C,293C 'vqm8':21A,26A,491C 'workaround':417C 'workstat':34B,88B,288C","nicknames":[],"mitigations":[{"kind":"workaround","scope":"projen task synthesis (.projen/tasks.json)","since":null,"covers":"Project configuration values listed in the advisory (for example LambdaFunctionOptions.entrypoint, AddBundleOptions fields, JestOptions.extraCliOptions, PytestOptions.testMatch, ReleaseOptions.artifactsDirectory) checked for shell metacharacters before synthesis","limits":"Only the listed and other audited properties; the generated task definitions still need re-synthesis after upgrading to 0.103.0; repository file names are not stated as covered","source":"https://aws.amazon.com/security/security-bulletins/rss/2026-108-aws/","vendor":"Team","seen_at":"2026-10-25T17:17:31Z","confidence":0.85,"source_title":"CVE-2026-89065 and CVE-2026-89066: Issue with projen - Path traversal and OS command injection","customer_action":"Audit project configuration values for shell metacharacters and remove or escape them prior to running projen"}],"who_affected":"Any team that uses projen to generate and maintain project configuration, especially where .projen/files.json or .projen/tasks.json are committed to a repository and projen runs on developer workstations or CI runners. Projects that do not use projen, or that run it only on fully trusted, reviewed repositories, face lower practical exposure.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":null,"kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"lab","external_id":"https://aws.amazon.com/security/security-bulletins/rss/2026-108-aws/#GHSA-q6g4-h6vc-vqm8","url":"https://aws.amazon.com/security/security-bulletins/rss/2026-108-aws/","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-24T19:12:58+00:00","fetched_at":"2026-10-25T17:18:59+00:00","note":"AWS: CVE-2026-89065 and CVE-2026-89066: Issue with projen - Path traversal and OS command injection"}],"documents":[{"id":2933,"url":"https://aws.amazon.com/security/security-bulletins/rss/2026-108-aws/","title":"AWS: CVE-2026-89065 and CVE-2026-89066: Issue with projen - Path traversal and OS command injection","kind":"advisory","source":"lab","text":"CVE-2026-89065 and CVE-2026-89066: Issue with projen - Path traversal and OS command injection\n\n### CVE-2026-89065 and CVE-2026-89066: Issue with projen - Path traversal and OS command injection\n\nBulletin ID: 2026-108-AWS Scope: AWS Content Type: Important (requires attention) Publication Date: 09/11/2026 09:00 AM PDT\n\nDescription:\n\nprojen 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.\n\n- 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.\n- 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.\n\nImpacted versions:\n\n- All projen versions before 0.101.37 (CVE-2026-89065)\n- All projen versions before 0.103.0 (CVE-2026-89066)\n\nResolution:\n\n- 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.\n- 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.\n\nWe recommend upgrading to the latest version and ensuring any derivative code is patched to incorporate the new fixes.\n\nWorkarounds:\n\n- 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.\n- 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.\n\nReferences:\n\n- CVE-2026-89065\n- GHSA-7p65-6x86-v7f3\n- CVE-2026-89066\n- GHSA-q6g4-h6vc-vqm8 \n\n Please email aws-security@amazon.com with any security questions or concerns.","published_at":null,"relation":"advisory","confidence":null,"note":null}],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}