Skip to content

Back to the catalog

Cybersecurity Startup Publishes Infostealers to NPM
opensourcemalware.comwriteup

Cybersecurity Startup Publishes Infostealers to NPM

A security research team traces six typosquatted npm packages (anthropic-toolkit, ai-sdk-helpers, ollama-helpers, openai-agents-helpers, @langgraphjs/toolkit, and @aspect-security/argon2) impersonating Anthropic, Vercel, Ollama, OpenAI, LangChain, and Aspect Security back to the founder of a stealth-mode cybersecurity startup. The packages use npm preinstall/postinstall hooks to silently exfiltrate a rich identity fingerprint — hostname, git/GitHub emails, SSH key comments, reflog committer emails, AWS/GCP config metadata, corporate DNS domain, and host project name — to a Google Cloud Run endpoint, while deliberately avoiding literal credentials to look benign and offering a fake telemetry opt-out. The writeup also documents version backfilling to fake package maturity and shows the payload evolving from a crude April beacon to a polished June "identity graph" collector, with full IOCs provided.

TL;DR A stealth cybersecurity startup founder published typosquatted npm AI-tool packages that silently exfiltrated developer identity data (git, SSH, cloud, DNS) via postinstall/preinstall hooks.
Document

What it is

Seven npm packages (five AI-SDK typosquats plus @aspect-security/argon2 and argon2-napi), published June 2026 by a single account, that behave as infostealers via install scripts. Specific latest versions analyzed: anthropic-toolkit@1.3.0, ai-sdk-helpers@1.4.4, ollama-helpers@1.2.2, openai-agents-helpers@1.3.2, @langgraphjs/toolkit@1.2.12, @aspect-security/argon2@1.0.1, argon2-napi@1.0.0. The argon2 packages date to April 2026 — the same operator's earlier iteration.

How it works

The payload runs from a postinstall script, not the library code:

"scripts": { "postinstall": "node scripts/postinstall.js" }

npm executes this automatically, silently, with the installer's permissions — before any of your code imports the package. On a laptop that's your dotfiles; on a CI runner it's the build account with cloud creds and deploy keys.

The evasion turn is deliberate file separation. Each package ships a genuine, working, non-booby-trapped src/ of TypeScript helpers (retry.ts, stream-to-string.ts, etc.) and a polished README — none of it malicious, none of it ever called. The real payload is scripts/postinstall.js: 461 lines / 16 KB of hand-written, non-obfuscated JavaScript. Auditing the source you'd normally read does not catch this, because that source is not what runs on install.

The script opens with a comment block posing as a telemetry policy, itemizing "anonymous diagnostics" and offering an opt-out env var (ANTHROPIC_TOOLKIT_TELEMETRY_DISABLED=1 or DO_NOT_TRACK=1) set before install. The opt-out genuinely works — it exists to hand security-conscious devs a lever while everyone else gets profiled. It harvests 11 data categories into one JSON object and POSTs it over HTTPS in a single beacon. Categories confirmed by the text: machine identity (hostname, OS username, Windows DOMAIN\USER) and git identity (text cut off mid-list); summary adds git/SSH keys and cloud credentials.

Preconditions / Affected

Anyone who ran npm install on these package names, on a dev machine or CI runner. Every install fires the beacon at least once, so the ~20k downloads are a floor on machines profiled. Highest-exposure packages by last-month downloads: ai-sdk-helpers (7,930), @langgraphjs/toolkit (5,877), openai-agents-helpers (3,108), ollama-helpers (2,692).

What to do

  • Search build logs and lockfiles for the seven names above; treat any install as a credential-exposure event — rotate git/SSH keys and cloud credentials on affected hosts and CI accounts.
  • Do not rely on reviewing src/ — inspect package.json preinstall/postinstall fields and the referenced script files for anything the audited source doesn't call.
  • Consider --ignore-scripts for installs where native builds aren't required.

Caveats

No RAT or persistence — these are pure exfiltration beacons, not backdoors. The 11-category list is truncated in the fetched text (identity categories shown; the rest inferred only from the existing summary). Attribution to an Israeli cybersecurity-startup founder is the researchers' claim, not independently confirmed here.

Organisations named here

  • 228835561205
  • Aspect Security
  • Proton AG
  • ranisalt

Technologies named here

  • anthropic-toolkit
  • npm
  • Socket
  • ai-sdk-helpers
  • Snyk
  • ollama-helpers
  • openai-agents-helpers
  • GitHub CLI
  • @langgraphjs/toolkit
  • Google Cloud Run
  • @aspect-security/argon2
  • argon2-napi
  • @anthropic-ai/sdk
  • ai
  • LangChain / LangGraph
  • Argon2
  • @proton/argon2
  • Node.js
  • Google Cloud
  • git
  • SSH
  • AWS

Techniques named here

  • Typosquatting
  • Malicious npm install-time scripts
  • Payload/alibi code separation
  • Fake telemetry disclosure / opt-out
  • Identity/reconnaissance data harvesting
  • Data exfiltration via serverless PaaS HTTPS POST
  • Version backfilling
  • Maintainer and brand impersonation
  • Fabricated statistics and citations / SEO bait
  • Non-functional decoy runtime code

Threat actors named here

  • Unnamed npm publisher account