{"id":"MAL-2025-191619","summary":"Malicious code in asynhttp (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: kam193 (058c3bab076ccb770a3ecaefbdb301df88bd935a79f154cdeb329c51c4a1eef5)\nPackages silently decrypt content hidden in a dependency and load them as Python extension modules. \n\nIn the first wave, those are copies of legitimate aiohttp and aiohappyeyeballs packages.\nIn the second wave, malicious packages created good-looking forks of legitimate rich and pigments packages.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2025-10-asynhttp\n\n\nReasons (based on the campaign):\n\n\n - typosquatting\n\n\n - exfiltration-generic\n\n\n - obfuscation\n\n\n - clones-real-package\n\n\n - native-extension\n","modified":"2026-03-19T12:50:31.838789Z","published":"2025-10-22T12:41:46Z","database_specific":{"malicious-packages-origins":[{"id":"RLMA-2025-05586","import_time":"2025-12-02T09:09:36.062448856Z","modified_time":"2025-12-01T12:54:04Z","sha256":"27f648a30d77874cfffeb97c2052d67485ed66da94f30db8cf52415393a89ca0","source":"reversing-labs","versions":["3.13.1"]},{"sha256":"649f3bd8674eef95a14f9f389db5a8900362ba5f5f18381ffaa885a43395db8a","source":"kam193","versions":["3.13.1"],"id":"pypi/2025-10-asynhttp/asynhttp","import_time":"2025-12-02T22:30:54.954400918Z","modified_time":"2025-10-22T12:41:46.169521Z"},{"versions":["3.13.1"],"id":"pypi/2025-10-asynhttp/asynhttp","import_time":"2025-12-02T23:07:17.994367438Z","modified_time":"2025-10-22T12:41:46.169521Z","sha256":"2c5f91525485110943474c187077da4ab6ef21e3209e4d6e7abf1007321cf1cd","source":"kam193"},{"id":"pypi/2025-10-asynhttp/asynhttp","import_time":"2025-12-10T18:45:05.206746196Z","modified_time":"2025-10-22T12:41:46.169521Z","sha256":"058c3bab076ccb770a3ecaefbdb301df88bd935a79f154cdeb329c51c4a1eef5","source":"kam193","versions":["3.13.1"]},{"source":"reversing-labs","id":"RLUA-2026-00093","import_time":"2026-03-19T12:19:24.824047024Z","modified_time":"2026-03-18T12:11:20Z","sha256":"d26ba778d37d3f66388d7a6df9468b6b43847d3f998df59716fb385da9a84fc1"}]},"references":[{"type":"WEB","url":"https://www.cert.at/en/blog/2025/10/how-typosquatting-tricked-me-a-bit"},{"type":"ARTICLE","url":"https://www.cert.at/en/blog/2025/10/how-typosquatting-tricked-me-a-bit"},{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/asynhttp"}],"affected":[{"package":{"name":"asynhttp","ecosystem":"PyPI","purl":"pkg:pypi/asynhttp"},"versions":["3.13.1"],"database_specific":{"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/asynhttp/MAL-2025-191619.json"}}],"schema_version":"1.7.5","credits":[{"name":"Kamil Mańkowski (kam193)","contact":["https://github.com/kam193","https://bad-packages.kam193.eu/"]},{"name":"Kamil Mańkowski (kam193)","contact":["https://github.com/kam193","https://bad-packages.kam193.eu/"],"type":"ANALYST"},{"name":"ReversingLabs","contact":["https://www.reversinglabs.com"],"type":"FINDER"}]}