{"id":"MAL-2026-16356","title":"Malicious code in starlette-healthchecks (PyPI)","summary":"Malicious code in starlette-healthchecks (PyPI)","severity":"critical","exploited":true,"vendor":"starlette-healthchecks","product":"starlette-healthchecks","ecosystem":"pip","affected":["starlette-healthchecks"],"published":"2026-09-21","updated":"2026-09-23","sourceUpdated":"2026-09-23T02:30:05.541387220Z","source":"OSV","sourceUrl":"https://osv.dev/vulnerability/MAL-2026-16356","references":[{"url":"https://bad-packages.kam193.eu/pypi/package/starlette-healthchecks"},{"url":"https://pypi.org/project/starlette-healthchecks/1.3.2/"},{"url":"https://pypi.org/project/starlette-healthchecks/1.3.1/"}],"tags":["osv","pip","malware"],"ingestedAt":"2026-09-22T07:15:17.284Z","slug":"MAL-2026-16356","body":"## Overview\n\n\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\n\n## Affected packages\n\n- `starlette-healthchecks`\n\n## Remediation\n\nRefer to the advisory for the patched release.","depth":"abyssal","depthScore":70,"depthScoreParts":{"impact":52.3,"likelihood":0,"exploitation":18,"ransomware":0},"changes":[]}