{"id":"GHSA-jgvr-6x5w-hx5w","aliases":[],"status":"published","title":"Zoo Design Studio: Recursive KCL parsing is vulnerable to denial-of-service","description":"### Impact\nFeeding a KCL program that wraps an expression in deep, unnecessary parentheses triggers the parser’s recursive `expression` -\u003e `unnecessarily_bracketed` -\u003e `expression` path. With enough nesting, the call stack grows until it exceeds the process stack limit, causing a stack overflow.","severity":{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N","level":"medium","from":"ghsa"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-770"],"published":"2026-08-20T18:34:05Z","modified":"2026-08-20T18:45:14Z","fixes":[{"ecosystem":"PyPI","package":"zoo-kcl","fixed_in":["0.3.129"],"sources":["ghsa","osv"]},{"ecosystem":"crates.io","package":"kcl-lib","fixed_in":["0.2.129","0.3.129"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"zoo-kcl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.3.129"}]}]},{"source":"ghsa","ecosystem":"crates.io","package":"kcl-lib","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.2.129"}]}]},{"source":"osv","ecosystem":"PyPI","package":"zoo-kcl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.3.129"}]}]},{"source":"osv","ecosystem":"crates.io","package":"kcl-lib","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"0.3.129"}]}]}],"references":[{"url":"https://github.com/KittyCAD/modeling-app/security/advisories/GHSA-jgvr-6x5w-hx5w","tags":["web"]},{"url":"https://github.com/advisories/GHSA-jgvr-6x5w-hx5w"},{"url":"https://github.com/KittyCAD/modeling-app","tags":["package"]}],"sources":{"ghsa":[{"id":"GHSA-jgvr-6x5w-hx5w","title":"Zoo Design Studio: Recursive KCL parsing is vulnerable to denial-of-service","description":"### Impact\nFeeding a KCL program that wraps an expression in deep, unnecessary parentheses triggers the parser’s recursive `expression` -\u003e `unnecessarily_bracketed` -\u003e `expression` path. With enough nesting, the call stack grows until it exceeds the process stack limit, causing a stack overflow.","status":"published","published":"2026-08-20T18:34:05Z","modified":"2026-08-20T18:34:07Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N","level":"medium"}],"cwes":["CWE-770"],"updated_at":"2026-11-02T14:41:03.602876Z"}],"osv":[{"id":"GHSA-jgvr-6x5w-hx5w","title":"Zoo Design Studio: Recursive KCL parsing is vulnerable to denial-of-service","description":"### Impact\nFeeding a KCL program that wraps an expression in deep, unnecessary parentheses triggers the parser’s recursive `expression` -\u003e `unnecessarily_bracketed` -\u003e `expression` path. With enough nesting, the call stack grows until it exceeds the process stack limit, causing a stack overflow.","status":"published","published":"2026-08-20T18:34:05Z","modified":"2026-08-20T18:45:14.88931Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N","level":"medium"}],"cwes":["CWE-770"],"updated_at":"2026-11-02T15:46:50.336262Z"}]}}
