MAL-2025-191658Malicious code in richx (PyPI)
| Ecosystem | Package | Version |
|---|---|---|
| PyPI | richx | 0.1.0 |
| PyPI | richx | 1.0.0 |
| PyPI | richx | 1.1.0 |
| PyPI | richx | 1.1.1 |
{"modified":"2026-03-19T12:23:26Z","published":"2025-10-31T13:39:17Z","schema_version":"1.7.4","id":"MAL-2025-191658","summary":"Malicious code in richx (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: kam193 (924fa9cf3bc0754ab76a7b5960deb5b7295f4f0f3270cc5724214bdd7d543675)\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","affected":[{"package":{"ecosystem":"PyPI","name":"richx","purl":"pkg:pypi/richx"},"versions":["0.1.0","1.0.0","1.1.0","1.1.1"]}],"references":[{"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/richx"},{"type":"WEB","url":"https://www.cert.at/en/blog/2025/10/how-typosquatting-tricked-me-a-bit"}],"credits":[{"name":"Kamil Mańkowski (kam193)","contact":["https://github.com/kam193","https://bad-packages.kam193.eu/"]},{"name":"Kamil Mańkowski (kam193)","type":"REPORTER","contact":["https://github.com/kam193","https://bad-packages.kam193.eu/"]},{"name":"ReversingLabs","type":"FINDER","contact":["https://www.reversinglabs.com"]}],"database_specific":{"malicious-packages-origins":[{"source":"reversing-labs","sha256":"036fba5a603820dcef3d116881967e5b16752ba12ab9defa82108ea1b9d5d74e","import_time":"2025-12-02T09:09:39.301719659Z","id":"RLMA-2025-05634","modified_time":"2025-12-01T12:54:58Z","versions":["0.1.0","1.0.0","1.1.0","1.1.1"]},{"source":"kam193","sha256":"4c0132f75e4f988478a217acec24062b5e1fd4db594160f82753587abf21e54f","import_time":"2025-12-02T22:30:55.547645725Z","id":"pypi/2025-10-asynhttp/richx","modified_time":"2025-10-31T13:39:17.445422Z","versions":["1.1.1","1.1.0","1.0.0","0.1.0"]},{"source":"kam193","sha256":"69bf6a25eb1113fcd3fb44186249000b57a995656da40d198f084fcb2fd2525b","import_time":"2025-12-02T23:07:18.58710634Z","id":"pypi/2025-10-asynhttp/richx","modified_time":"2025-10-31T13:39:17.445422Z","versions":["1.1.1","1.1.0","1.0.0","0.1.0"]},{"source":"kam193","sha256":"924fa9cf3bc0754ab76a7b5960deb5b7295f4f0f3270cc5724214bdd7d543675","import_time":"2025-12-10T18:45:05.211505292Z","id":"pypi/2025-10-asynhttp/richx","modified_time":"2025-10-31T13:39:17.445422Z","versions":["1.1.1","1.1.0","1.0.0","0.1.0"]},{"source":"kam193","sha256":"76a88a6f9ca106cdb5e71308ced90231e0319ebe14428736d0848d0191815a56","import_time":"2025-12-30T22:39:04.164939126Z","id":"pypi/2025-10-asynhttp/richx","modified_time":"2025-10-31T13:39:17.445422Z","versions":["0.1.0","1.0.0","1.1.0","1.1.1"]},{"source":"reversing-labs","sha256":"8b61bfdcf618edfa504103905add2cb1f4b6438931611f93a8a3ac4c6b2da9e3","import_time":"2026-03-19T12:20:24.179350395Z","id":"RLUA-2026-00723","modified_time":"2026-03-18T12:18:23Z"}]}}数据来源:OpenSSF Malicious Packages · Apache-2.0