{"schemaVersion":3,"id":"CVE-2026-89066","aliases":[],"status":"published","duplicateOf":null,"title":null,"description":"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.\n\n\n\nTo remediate this issue, users should upgrade to version 0.103.0 and then re-synthesize the project so that .projen/tasks.json is regenerated with the corrected task definitions. Upgrading alone is not sufficient because the generated task definition file is committed to the repository.","dates":{"published":"2026-09-11T16:05:42.284Z","modified":"2026-09-11T16:21:02.834Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":8.4,"severity":"high","version":"4.0","versionLabel":"v4.0","source":"CVE.org","vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","computed":false,"selection":"backend-summary"},"metrics":[{"version":"4.0","versionLabel":"v4.0","source":"CVE.org","score":8.4,"severity":"high","vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"CVE.org","score":7.8,"severity":"high","vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","exploitability":null,"impact":null,"computed":false},{"version":"4.0","versionLabel":"v4.0","source":"NVD","score":8.4,"severity":"high","vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"NVD","score":7.8,"severity":"high","vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.00234,"percentile":0.13339,"severity":"low","asOf":"2026-10-19T00:00:00.000Z","change":{"pp":0.07700000000000001,"baselineDate":"2026-09-19T00:00:00.000Z","baselineScore":0.00157},"history":[{"date":"2026-09-14T00:00:00.000Z","score":0.00157,"percentile":null},{"date":"2026-09-15T00:00:00.000Z","score":0.00157,"percentile":null},{"date":"2026-09-16T00:00:00.000Z","score":0.00157,"percentile":null},{"date":"2026-09-17T00:00:00.000Z","score":0.00157,"percentile":null},{"date":"2026-09-18T00:00:00.000Z","score":0.00157,"percentile":null},{"date":"2026-09-19T00:00:00.000Z","score":0.00157,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.00157,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.00157,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.00157,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00157,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00234,"percentile":0.13339}],"last30":[{"date":"2026-09-19T00:00:00.000Z","score":0.00157,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.00157,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.00157,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.00157,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00157,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00234,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00234,"percentile":0.13339}]},"kev":{"state":"not-listed","entries":[],"listedCount":0,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":false,"entry":null},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[],"exploitCount":0,"weaknesses":[{"id":"CWE-78","name":"Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')","description":"The product constructs all or part of an OS command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended OS command when it is sent to a downstream component.","type":"weakness","status":"Stable","abstraction":"Base","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-88","name":"Improper Neutralization of Argument Delimiters in a Command ('Argument Injection')","description":"The product constructs a string for a command to be executed by a separate component\nin another control sphere, but it does not properly delimit the\nintended arguments, options, or switches within that command string.","type":"weakness","status":"Draft","abstraction":"Base","likelihoodOfExploit":null,"url":"https://cwe.mitre.org/data/definitions/88.html"}],"affected":[{"vendor":"aws","product":"projen","name":"projen","label":"projen","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 0.103.0","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 0.103.0","eol":null,"hubHref":"/vendor/aws/projen"}],"affectedCount":1,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://github.com/projen/projen/releases/tag/v0.103.0","label":"github.com/projen/projen/releases/tag/v0.103.0","hostname":"github.com","tags":["Patch"]},{"url":"https://aws.amazon.com/security/security-bulletins/2026-108-aws/","label":"aws.amazon.com/security/security-bulletins/2026-108-aws/","hostname":"aws.amazon.com","tags":["Vendor Advisory"]},{"url":"https://github.com/projen/projen/security/advisories/GHSA-q6g4-h6vc-vqm8","label":"github.com/projen/projen/security/advisories/GHSA-q6g4-h6vc-vqm8","hostname":"github.com","tags":["Third Party Advisory"]}],"lineage":{"upstream":[],"downstream":[],"duplicates":[],"related":[]},"timeline":[{"kind":"published","date":"2026-09-11T16:05:42.284Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-09-11T16:21:02.834Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":34,"level":"medium","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-20T12:03:31.155Z","stale":false,"partial":false}}