{"id":"GHSA-mc9m-6fm9-pghc","aliases":[],"status":"published","title":"Zoo Design Studio: Memory-corruption in memory handling of lib-kcl","description":"A race condition in kcl-lib can result in a use-after-free when accessing environments concurrently. During Vec reallocation, the previous buffer containing Box pointers is freed and replaced. A concurrent get_env operation that has already loaded a pointer to the old buffer may subsequently index into freed memory and retrieve a stale or corrupted Pin\u003cBox\u003cEnvironment\u003e\u003e.","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-362","CWE-416"],"published":"2026-08-20T18:34:11Z","modified":"2026-08-20T18:45:13Z","fixes":[{"ecosystem":"PyPI","package":"zoo-kcl","fixed_in":["0.3.153"],"sources":["ghsa","osv"]},{"ecosystem":"crates.io","package":"kcl-lib","fixed_in":["0.2.153"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"zoo-kcl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.3.153"}]}]},{"source":"ghsa","ecosystem":"crates.io","package":"kcl-lib","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.2.153"}]}]},{"source":"osv","ecosystem":"PyPI","package":"zoo-kcl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.3.153"}]}],"versions":["0.3.135","0.3.136","0.3.137","0.3.138","0.3.139","0.3.140","0.3.141","0.3.142","0.3.143","0.3.144","0.3.145","0.3.146","0.3.147","0.3.148","0.3.150","0.3.151","0.3.152"]},{"source":"osv","ecosystem":"crates.io","package":"kcl-lib","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"0.2.153"}]}]}],"references":[{"url":"https://github.com/KittyCAD/modeling-app/security/advisories/GHSA-mc9m-6fm9-pghc","tags":["web"]},{"url":"https://github.com/advisories/GHSA-mc9m-6fm9-pghc"},{"url":"https://github.com/KittyCAD/modeling-app","tags":["package"]}],"sources":{"ghsa":[{"id":"GHSA-mc9m-6fm9-pghc","title":"Zoo Design Studio: Memory-corruption in memory handling of lib-kcl","description":"A race condition in kcl-lib can result in a use-after-free when accessing environments concurrently. During Vec reallocation, the previous buffer containing Box pointers is freed and replaced. A concurrent get_env operation that has already loaded a pointer to the old buffer may subsequently index into freed memory and retrieve a stale or corrupted Pin\u003cBox\u003cEnvironment\u003e\u003e.","status":"published","published":"2026-08-20T18:34:11Z","modified":"2026-08-20T18:34:13Z","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-362","CWE-416"],"updated_at":"2026-11-02T14:41:03.602876Z"}],"osv":[{"id":"GHSA-mc9m-6fm9-pghc","title":"Zoo Design Studio: Memory-corruption in memory handling of lib-kcl","description":"A race condition in kcl-lib can result in a use-after-free when accessing environments concurrently. During Vec reallocation, the previous buffer containing Box pointers is freed and replaced. A concurrent get_env operation that has already loaded a pointer to the old buffer may subsequently index into freed memory and retrieve a stale or corrupted Pin\u003cBox\u003cEnvironment\u003e\u003e.","status":"published","published":"2026-08-20T18:34:11Z","modified":"2026-08-20T18:45:13.443181606Z","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-362","CWE-416"],"updated_at":"2026-11-02T15:46:51.811331Z"}]}}
