{"dataType":"CVE_RECORD","dataVersion":"1.0","cveMetadata":{"cveId":"GCVE-110-PYPI-2026-022292","assignerOrgId":"","assignerShortName":"Vulnetix","state":"PUBLISHED","datePublished":"2026-11-11T02:35:59Z","dateUpdated":"2026-11-11T02:35:59Z","dateReserved":""},"containers":{"cna":{"providerMetadata":null,"title":"","descriptions":[{"lang":"en","value":"The PyPI package `cad` (version 0.11.8) was flagged as malicious by automated package analysis (1 corroborating detection(s)). Installing it may execute attacker-controlled code via setup.py or bundled Python sources. Verdict path: evidence — for ownership-only paths (owner-known-bad / multi-identity) the change of ownership is a compounding indicator the engine correlated with other signals, not standalone proof. This verdict is produced by static analysis and is subject to human review.","supportingMedia":null},{"lang":"en","value":"[PY-PTH-AUTOIMPORT-PERSISTENCE] setup.py writes a .pth file containing executable import code: Python auto-runs .pth lines starting with 'import' at interpreter start (documented PyPI persistence TTP). Benign .pth files only append to sys.path — they never carry import statements.","supportingMedia":null}],"references":[{"url":"https://pypi.org/project/cad/","name":"","tags":["advisory"]},{"url":"https://github.com/earthtojake/text-to-cad","name":"","tags":["web"]}],"metrics":null,"problemTypes":[{"descriptions":[{"lang":"en","description":"Embedded Malicious Code","cweId":"CWE-506","type":"CWE"}]},{"descriptions":[{"lang":"en","description":"Hidden Functionality","cweId":"CWE-912","type":"CWE"}]}],"affected":[{"vendor":"pypi","product":"cad","collectionURL":"https://pypi.org","packageName":"cad","repo":"","defaultStatus":"","versions":[{"version":"0.11.7","status":"affected","versionType":"","lessThan":"","lessThanOrEqual":"","changes":null},{"version":"0.11.8","status":"affected","versionType":"","lessThan":"","lessThanOrEqual":"","changes":null}],"cpes":null,"modules":null,"programFiles":null,"platforms":null}],"cpeApplicability":null,"rejectedReasons":null,"replacedBy":null},"adp":null}}