{"id":"MAL-2026-13489","summary":"Malicious code in pydanticc (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (0bc3a091548db52bab3bf8556e95780b3041aa971b6353d7f31bdb71128915a1)\npydanticc is a typosquat of the popular 'pydantic' package. Its setup.py defines a custom setuptools install command whose body is stored as a base64 string literal and reconstituted at install time via base64.b64decode + compile + exec, concealing the payload from plain reading of setup.py. On Linux, the decoded hook downloads an opaque executable from https://github.com/totti2188/8gp1Q7iZD3h4VW/releases/download/v1.3A/something (a personal GitHub account unrelated to the package's stated purpose), writes it to /tmp/something, marks it executable, and launches it detached via subprocess.Popen with start_new_session=True. The shipped Python module (djangoo/main.py) contains only a trivial hello() print with no pydantic-related functionality, so the package's real effect on installation is arbitrary remote code execution on the installer's host. The unpinned personal-account release URL, base64/exec obfuscation of the URL and Popen call, detached background execution, name-squat of a top-100 package, and stub content together constitute a classic install-time dropper.\n\n## Source: kam193 (c16b176d1ba6ee3f4f1680d0678c9933e620f4de18bec7bc9af67978ed737527)\nPackage imitates name of a popula library. During installation, obfuscated code downloads a malicious executable and starts it. It then exfiltrates at least cryptocurrency wallet data, probably more.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-08-flasq\n\n\nReasons (based on the campaign):\n\n\n - typosquatting\n\n\n - The package overrides the install command in setup.py to execute malicious code during installation.\n\n\n - exfiltration-generic\n\n\n - Downloads and executes a remote executable.\n\n\n - obfuscation\n\n\n - exfiltration-crypto\n","modified":"2026-08-07T12:35:24.849476546Z","published":"2026-08-07T07:04:59Z","database_specific":{"iocs":{"urls":["https://github.com/totti2188/8gp1Q7iZD3h4VW/releases/download/v1.3A/something"],"ips":["193.70.34.101"]},"malicious-packages-origins":[{"sha256":"c16b176d1ba6ee3f4f1680d0678c9933e620f4de18bec7bc9af67978ed737527","source":"kam193","versions":["0.1.1","0.1.2","0.2.0","0.3.0"],"id":"pypi/2026-08-flasq/pydanticc","import_time":"2026-08-07T07:35:19.075614837Z","modified_time":"2026-08-07T07:04:59.702408Z"},{"id":"pypi/2026-08-flasq/pydanticc","import_time":"2026-08-07T08:57:13.35342027Z","modified_time":"2026-08-07T07:04:59.702408Z","sha256":"faf0b5d83a6387044068dd0d4eb61cef977123164e4be406b16bf2c38ac4f9ed","source":"kam193","versions":["0.1.1","0.1.2","0.2.0","0.3.0"]},{"source":"amazon-inspector","versions":["0.3.0"],"id":"IN-MAL-2026-016901","import_time":"2026-08-07T12:23:26.426157732Z","modified_time":"2026-08-07T12:15:07Z","sha256":"0b849ee630b66e8839acdf0c7830372ba690b80f182434aea2816513ee2b35ad"},{"sha256":"0bc3a091548db52bab3bf8556e95780b3041aa971b6353d7f31bdb71128915a1","source":"amazon-inspector","versions":["0.1.2"],"id":"IN-MAL-2026-016905","import_time":"2026-08-07T12:23:26.612026649Z","modified_time":"2026-08-07T12:15:39Z"},{"id":"IN-MAL-2026-016900","import_time":"2026-08-07T12:23:26.397263297Z","modified_time":"2026-08-07T12:14:58Z","sha256":"341e293bf68c074727878e98df5cad5aad9f711aca022d4e95b5e7723adf4a88","source":"amazon-inspector","versions":["0.2.0"]},{"versions":["0.1.1"],"id":"IN-MAL-2026-016904","import_time":"2026-08-07T12:23:26.581077987Z","modified_time":"2026-08-07T12:15:30Z","sha256":"924a5e8609b73977255f604d1e6f55179d72569ffb2698c8c54af1b258b36a90","source":"amazon-inspector"}]},"references":[{"type":"EVIDENCE","url":"https://www.virustotal.com/gui/file/425f5336182e359211b5d751786d2ce1d31a673ea9c82107358a888803742649/detection"},{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/pydanticc"},{"type":"EVIDENCE","url":"https://tria.ge/260807-fkycrazzg1/behavioral1"},{"type":"PACKAGE","url":"https://pypi.org/project/pydanticc/0.3.0/"},{"type":"PACKAGE","url":"https://pypi.org/project/pydanticc/0.1.2/"},{"type":"PACKAGE","url":"https://pypi.org/project/pydanticc/0.2.0/"},{"type":"PACKAGE","url":"https://pypi.org/project/pydanticc/0.1.1/"}],"affected":[{"package":{"name":"pydanticc","ecosystem":"PyPI","purl":"pkg:pypi/pydanticc"},"versions":["0.1.1","0.1.2","0.2.0","0.3.0"],"database_specific":{"cwes":[{"description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code","cweId":"CWE-506"},{"description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code","cweId":"CWE-506"},{"name":"Embedded Malicious Code","cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature."},{"description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code","cweId":"CWE-506"}],"indicators":{"evidence_files":[{"path":"setup.py","sha256":"f08f648a6d275f6e767723384c7628135b1a148a0837c60120be41d2f296bf39","tlsh":"a621685f8e6111b47c18c7845553401b1767afa56c2074e4befe23642b8d29dca7f097"}],"package_integrity":[{"filename":"pydanticc-0.3.0.tar.gz","hashes":{"sha256":"ad7b749fc925b55e2be3274216e3254927b493393e5e91881dbf614395f8d7c5","blake2b_256":"c0c4d63f38af89e094a1ba207e8308f5e67bd9d1e8ae2bacd6cc662e99fc61d3","md5":"989cd8bb5840cb70890827192d855cd2"}}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/pydanticc/MAL-2026-13489.json"}}],"schema_version":"1.8.0","credits":[{"name":"Amazon Inspector","contact":["inspector-research@amazon.com"],"type":"FINDER"},{"name":"Kamil Mańkowski (kam193)","contact":["https://github.com/kam193","https://bad-packages.kam193.eu/"],"type":"REPORTER"}]}