Skip to content
OpenAdvisories
Malicious MAL-2026-18242

sitecard

PyPI package · versions 0.1.0, 0.1.1, 0.1.2, 0.1.3, 0.1.6, 0.1.7, 0.1.8, 0.1.9, 0.1.10, 0.1.11, 0.1.12, 0.1.13, 0.1.14

Reported Oct 23, 2026 · Updated Oct 29, 2026

If this package is installed

Remove it, treat the machine (or CI runner) as compromised, and rotate every secret, token and key it could access — from a different, clean machine.

Details

Source: amazon-inspector (d9f44333ae4aa62e60d153dfbdc535cd08f778e917a1052ecaf43722d8a7165d)
sitecard 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.

Source: kam193 (49be8995374d0e3d2bcb8f163675221e14bfb6d7d968a6fa5d8165e4f493997d)
The 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.

---

Category: MALICIOUS - The campaign has clearly malicious intent, like infostealers.

Campaign: 2026-10-sitecard

Reasons (based on the campaign):

- backdoor