Skip to content
supplychainattack.orgSupply chain attack incident catalog
containedhigh

Malicious code in gaarf (npm)

The npm package 'gaarf' contained malicious code that executed during installation, collecting host identifiers and exfiltrating them to a third-party endpoint. The package name was designed to typosquat the legitimate 'google/ads-api-report-fetcher' package.

ShareXLinkedInHacker News
Disclosed
Last updated
Blast radius
Users who mistakenly installed 'gaarf' instead of the legitimate 'google/ads-api-report-fetcher' package.
Ecosystems
Attack vectors
Affected entities
  • gaarfMalicious npm package using typosquatting against google/ads-api-report-fetcher

The npm package 'gaarf' was identified as malicious by the OpenSSF. The package contained a postinstall lifecycle script that automatically executed during npm installation.

The malicious script collected installer host identifiers including hostname, platform, architecture, Node version, package name, and lifecycle event information. This data was exfiltrated via HTTP POST requests to a hardcoded third-party endpoint at n8wx863s.instances.poc.jchunt.top/gaarf.

The package name 'gaarf' is a typosquat of the legitimate 'google/ads-api-report-fetcher' package, suggesting the attack targeted users who mistyped the package name during installation. The exfiltration endpoint was not configurable and belonged to infrastructure outside the installer's control.

The incident was identified and reported by the OpenSSF malicious packages project.

Indicators of compromise

Packages
  • gaarf
Domains
  • n8wx863s.instances.poc.jchunt.top

Remediation

  • Remove the 'gaarf' package immediately from any affected systems
  • Audit npm install logs to identify hosts that installed 'gaarf' instead of the intended package
  • Review host identifiers (hostname, platform, arch) that may have been exfiltrated
  • Install the legitimate 'google/ads-api-report-fetcher' package if the functionality is needed
  • Use npm package name verification and typo-checking tools to prevent similar mistakes
  • Monitor for suspicious outbound connections to the identified endpoint

Sources

  1. GitHub Advisory GHSA-vgpc-5h45-gxjm · GitHub Advisory Database

Cite this entry

"Malicious code in gaarf (npm)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed August 19, 2026; last updated August 19, 2026. https://supplychainattack.org/incident/malicious-code-in-gaarf-npm-15vrht

Suggest a correction

Found an error or have a newer source? Corrections to factual errors take priority over new entries.

  1. resolvedcritical

    Malicious code in create-coin (npm)

    create-coin@20.1.1 on npm contained malicious postinstall code that collected sensitive environment variables, credentials, and host reconnaissance data. The package impersonated an esbuild platform build and exfiltrated data to a hardcoded endpoint.

    npmCompromised packageTyposquatting
  2. containedcritical

    Malicious code in chai-as-testkit (npm)

    The npm package chai-as-testkit is a typosquat/impersonation attack delivering obfuscated malicious code that executes on import. The package falsely claims to be a vulnerability management tool but ships pino library files under a different author, with a synthetic stub that loads a 4MB+ obfuscated bundle containing attacker-controlled code.

    npmTyposquattingCompromised package
  3. resolvedcritical

    Malicious code in @next-fonts/font (npm)

    @next-fonts/font is a typosquat package on npm that executes arbitrary attacker-controlled code via a blockchain-mediated C2 channel when its Inter() function is called. The malicious payload is base64-encoded and executed through Node.js spawn or eval, with no legitimate font functionality.

    npmTyposquattingCompromised package
  4. resolvedcritical

    Malicious code in chai-as-soul (npm)

    chai-as-soul@2.3.5 is a typosquat of the pino logging library containing malicious code that exfiltrates environment variables (including AWS/GCP/CI tokens) and executes arbitrary remote code on installation.

    npmTyposquattingCompromised package