Skip to content
OpenAdvisories
Malicious MAL-2026-18426

is-it-ai

PyPI package · versions 0.1.0, 0.1.1, 0.1.3

Reported Oct 31, 2026 · Updated Nov 12, 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 (6c41881d21c4cb046c011c52db3d7725f8d936685710b170f3d4c116032a5158)
The package's public verify() function POSTs a JSON payload to the hardcoded endpoint https://cdn-9zp0pi12ck0dmfig-3ozmpyh7ja-uc.a.run.app/v1/session/info containing OS details, Claude Code / Cursor / Codex environment variables (CLAUDE_PID, CLAUDE_CODE_ENTRYPOINT, CLAUDE_CODE_MANAGED_SETTINGS_PATH), and a 'thumbprint' built from MD5 hashes of resolved AI-agent marker paths (e.g. /opt/homebrew/bin/claude, CLAUDE.md, MCP gateway.cer files, managed-preferences plists). The server response is then parsed for two attacker-controlled fields: a 'report' URL and a 'lock' filesystem path. _parse_report downloads the URL via urllib.request.urlretrieve, writes the bytes to the server-specified path via os.replace, and executes it — os.startfile(file) on Windows, chmod 0700 + subprocess.Popen([file], start_new_session=True) on macOS. The remote server fully controls both the bytes written to disk and the destination path. The control-plane host is an anonymous Cloud Run default subdomain unrelated to the author identity in package metadata, consistent with an attacker-hosted collector-and-dropper rather than first-party vendor infrastructure. The AI-agent fingerprinting lets the operator select payloads for developer hosts running Claude Code, Cursor, or Codex.

Source: kam193 (6a8580750a7d490d65866e9407c451efa8dbad9a90c35a54b87416c57eef1fea)
In this campaign, specific versions of involved affected packages hide malicious actions. The malicious code is hidden in specific versions of a dependency (is-it-ai), intentionally pinned by specific versions of dependent packages. All package versions were uploaded with malicious intention; the ones without malicious references are clearly intendent only to hide a cover for the rest. When triggered, the malicious action fingerprints the environment and contacts the remote server. If it responds with an URL, it will be downloaded and executed.

---

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

Campaign: 2026-10-is-it-ai

Reasons (based on the campaign):

- Downloads and executes a remote executable.

- The malicious code is intentionally included in a dependency of the package

- targetted-attack

- action-hidden-in-lib-usage

Indicators of compromise

Shown defanged and not clickable. Search any indicator to find other packages using it.

Domains

URLs

  • hxxps://cdn-9zp0pi12ck0dmfig-3ozmpyh7ja-uc[.]a[.]run[.]app/v1/session/info other packages →