{"id":"MAL-2026-18242","title":"Malicious code in sitecard (PyPI)","summary":"Malicious code in sitecard (PyPI)","severity":"critical","exploited":true,"vendor":"sitecard","product":"sitecard","ecosystem":"pip","affected":["sitecard"],"published":"2026-10-23","updated":"2026-10-29","sourceUpdated":"2026-10-29T14:45:11.372562763Z","source":"OSV","sourceUrl":"https://osv.dev/vulnerability/MAL-2026-18242","references":[{"url":"https://bad-packages.kam193.eu/pypi/package/sitecard"},{"url":"https://pypi.org/project/sitecard/0.1.0/"},{"url":"https://pypi.org/project/sitecard/0.1.2/"},{"url":"https://pypi.org/project/sitecard/0.1.3/"},{"url":"https://pypi.org/project/sitecard/0.1.12/"},{"url":"https://pypi.org/project/sitecard/0.1.7/"},{"url":"https://pypi.org/project/sitecard/0.1.14/"},{"url":"https://pypi.org/project/sitecard/0.1.13/"},{"url":"https://pypi.org/project/sitecard/0.1.1/"},{"url":"https://pypi.org/project/sitecard/0.1.11/"},{"url":"https://pypi.org/project/sitecard/0.1.9/"},{"url":"https://pypi.org/project/sitecard/0.1.8/"},{"url":"https://pypi.org/project/sitecard/0.1.6/"},{"url":"https://pypi.org/project/sitecard/0.1.10/"}],"tags":["osv","pip","malware"],"ingestedAt":"2026-10-24T11:59:36.115Z","slug":"MAL-2026-18242","body":"## Overview\n\n\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (d9f44333ae4aa62e60d153dfbdc535cd08f778e917a1052ecaf43722d8a7165d)\nsitecard exposes a workspace directory over SSH via public relays (srv.us, upterm, cloudflare/cloudflared, devtunnel, ws-relay) as its advertised function. When the operator runs `sitecard start` without `--rendezvous-url`, `_resolve_rendezvous_url` falls back to a hardcoded default `RENDEZVOUS_DEFAULT_URL = \"https://ntfy.sh/02f9fe8a5cd9627395798443a235896b\"`, and `_publish_rendezvous` POSTs the readiness payload (including the auto-generated public SSH endpoint URL for the running session) to that URL via `urllib.request.urlopen`. ntfy.sh topics are public pub-sub, so any subscriber of this fixed topic id receives every default-configured installer's live SSH endpoint. The README documents `--rendezvous-url` as an operator override but does not disclose that a built-in default collector topic is used when it is omitted. Separately, `_resolve_public_access` defaults to True under the `sitecard` distribution and the asyncssh gateway's `begin_auth` returns False when `accept=True`, so by default the exposed SSH endpoint admits any connection without authentication; this behavior is disclosed in the README (\"Fresh Sitecard sessions allow public access by default because they are disposable\"). The combination means that on a default foreground invocation the installer's workspace is reachable over SSH without authentication and the endpoint URL is simultaneously published to a hardcoded author-chosen ntfy.sh topic. The remote-shell capability only starts when the operator runs the CLI (no install-time or import-time hook), no bulk collection of installer secrets occurs, and the rendezvous destination is operator-configurable.\n\n## Source: kam193 (49be8995374d0e3d2bcb8f163675221e14bfb6d7d968a6fa5d8165e4f493997d)\nThe package provides code to create an SSH session exposed via tunnels. By default, created session is accessible without any auth and reported to a hardcoded location, exposing any user to be accessed by attacker.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-10-sitecard\n\n\nReasons (based on the campaign):\n\n\n - backdoor\n\n\n## Affected packages\n\n- `sitecard`\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":[]}