MAL-2026-16356Malicious code in starlette-healthchecks (PyPI)
| Ecosystem | Package | Version |
|---|---|---|
| PyPI | starlette-healthchecks | 1.3.1 |
| PyPI | starlette-healthchecks | 1.3.2 |
{"schema_version":"1.7.4","id":"MAL-2026-16356","published":"2026-09-21T16:50:02Z","modified":"2026-09-23T02:27:56.640361798Z","summary":"Malicious code in starlette-healthchecks (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (eebffb3f581b979c3e9a1dc0aef347111b50922326b2181cc9d2bc009c4e7021)\nThe package advertises itself as ASGI healthcheck/logging middleware, but its documented entry point configure_logging() (re-exported from src/starlette_healthcheck/setup.py via __init__.py) spawns a background thread that POSTs host reconnaissance to a hardcoded Azure Container Apps subdomain ca-fusion-dev-collector.victorioussmoke-2f009910.uksouth.azurecontainerapps.io, which the caller does not configure. The beacon iterates the entire os.environ and sends each variable name as a log line, resolves the machine's public IP via checkip.amazonaws.com, and sends the hostname. Requests are authenticated with a hardcoded X-Api-Key value (\"fusion-default-api-key\") shipped in the source. The env-var name inventory alone discloses which CI providers, cloud credentials, and secret-manager integrations exist on the host, which is targeting reconnaissance rather than request logging. Placing the exfiltration code in a module named setup.py inside the package blends the beacon into build-tooling naming and does not match the package's advertised purpose.\n\n## Source: kam193 (13c2438df5dfe3675f8861c03c803a273747135af8a70fc916235ad64d6cd22f)\nThe package appears to be a typosquatting research attempt. It provides an extremely basic functionality for the user and the main purpose seems to be the telemetry call. Additionally, similar package starlette-healthcheck was recently removed.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-09-starlette-healthcheck\n\n\nReasons (based on the campaign):\n\n\n - action-hidden-in-lib-usage\n\n\n - typosquatting\n","affected":[{"package":{"name":"starlette-healthchecks","ecosystem":"PyPI"},"versions":["1.3.1","1.3.2"],"database_specific":{"cwes":[{"cweId":"CWE-506","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"}],"indicators":{"evidence_files":[{"path":"src/starlette_healthcheck/setup.py","sha256":"de3c2ee8cb970cd05602488f17acf71401c3ba351febb53021aca6547214efbe","tlsh":"2f81749bcd3b8d5207b2951d1c67d259f733430f250265a23abc635c2f3983ae0f9698"}],"package_integrity":[{"filename":"starlette_healthchecks-1.3.2-py3-none-any.whl","hashes":{"blake2b_256":"2c03c06f48a79d1cf0800d9aae4f74c6d037694066f1244ab256078b5c4853b9","md5":"ae0d1f854535ad89930bfb6ccc85de88","sha256":"2588d3e1db8f1a8444b30cc44851c3a3ba2b16d657624da3eb5620bac0c935cf"}},{"filename":"starlette_healthchecks-1.3.2.tar.gz","hashes":{"blake2b_256":"6146bc3b174acc658af677fcfd29be362807678646039cc6dec54984cf38933a","md5":"6cee35ac7d7350b269bfcbf2bcbb9916","sha256":"2f45f5be0b47d7c0dfe16c57a533072aab334b34677c6ed1b7715347a71ca717"}}]}}}],"references":[{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/starlette-healthchecks"},{"type":"PACKAGE","url":"https://pypi.org/project/starlette-healthchecks/1.3.2/"},{"type":"PACKAGE","url":"https://pypi.org/project/starlette-healthchecks/1.3.1/"}],"database_specific":{"iocs":{"domains":["ca-fusion-dev-collector.victorioussmoke-2f009910.uksouth.azurecontainerapps.io"]},"malicious-packages-origins":[{"id":"pypi/2026-09-starlette-healthcheck/starlette-healthchecks","import_time":"2026-09-21T17:38:33.982933083Z","modified_time":"2026-09-21T16:50:02.361508Z","sha256":"13c2438df5dfe3675f8861c03c803a273747135af8a70fc916235ad64d6cd22f","source":"kam193","versions":["1.3.1"]},{"id":"pypi/2026-09-starlette-healthcheck/starlette-healthchecks","import_time":"2026-09-21T21:37:47.148069691Z","modified_time":"2026-09-21T21:05:51.789499Z","sha256":"090da89e9cdd96102197fa3c5f16840adf89d67c49b6c22c8c8b0e8b6dd4296b","source":"kam193","versions":["1.3.1","1.3.2"]},{"id":"IN-MAL-2026-020331","import_time":"2026-09-23T02:26:00.312699674Z","modified_time":"2026-09-23T01:51:23Z","sha256":"a188debacc12b8da66c5bee77726baaaa37477ae614186d5d73b05b667e7b92e","source":"amazon-inspector","versions":["1.3.2"]},{"id":"IN-MAL-2026-020330","import_time":"2026-09-23T02:26:00.27268269Z","modified_time":"2026-09-23T01:51:15Z","sha256":"eebffb3f581b979c3e9a1dc0aef347111b50922326b2181cc9d2bc009c4e7021","source":"amazon-inspector","versions":["1.3.1"]}]},"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"}]}数据来源:OpenSSF Malicious Packages · Apache-2.0