Malicious code in gaarf-bq (npm)
The npm package gaarf-bq contained malicious code in its postinstall lifecycle script that collected and exfiltrated host identifiers to an attacker-controlled domain. The package name resembles Google's legitimate gaarf (ads-api-report-fetcher) BigQuery component, consistent with dependency-confusion tactics.
- Disclosed
- Last updated
- Blast radius
- Any developer or CI/CD system that installed gaarf-bq from npm
- Ecosystems
- Attack vectors
- Affected entities
- gaarf-bqnpm package with malicious postinstall script
The npm package gaarf-bq contained a malicious postinstall lifecycle script that executed upon installation. The script collected sensitive host identifiers including hostname, platform, architecture, Node version, and package metadata, then transmitted this information via HTTPS POST request to a hardcoded attacker-controlled endpoint at vpx0x956.instances.poc.jchunt.top/gaarf-bq.
The package name closely resembles Google's legitimate gaarf (ads-api-report-fetcher) BigQuery component, suggesting this was a dependency-confusion attack designed to trick internal builds into resolving the public malicious package instead of an internal one. The exfiltration endpoint was not configurable and unrelated to any documented package functionality.
The package's self-description as a security-research canary does not mitigate the core issue: installer-owned system identifiers were transmitted to an author-controlled host without user consent or opt-in mechanism.
The incident was identified and credited to the OpenSSF's malicious-packages repository.
Indicators of compromise
- Packages
- gaarf-bq
- Domains
- vpx0x956.instances.poc.jchunt.top
Remediation
- Immediately uninstall gaarf-bq from all systems and CI/CD pipelines
- Audit npm package.json files and lock files for any gaarf-bq dependencies
- Review host identifiers (hostname, IP addresses, Node versions) that may have been exposed
- Implement npm package allow-lists or use private registries to prevent dependency-confusion attacks
- Monitor for suspicious outbound connections to vpx0x956.instances.poc.jchunt.top
- Use npm audit and supply-chain security tools to detect similar malicious packages
Sources
- GitHub Advisory GHSA-mqcc-6rh5-hxfm · GitHub Advisory Database
Cite this entry
"Malicious code in gaarf-bq (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-bq-npm-1w00ax
Suggest a correction
Found an error or have a newer source? Corrections to factual errors take priority over new entries.
Related incidents
- resolvedcritical
Malicious code in @usaa-grp-personal-profile/personal-profile-common (npm)
Malicious package @usaa-grp-personal-profile/personal-profile-common version 999.0.0 published to public npm as a dependency-confusion attack targeting an organization's internal registry. The package contains preinstall and postinstall hooks that exfiltrate hostname, username, and working directory to an attacker-controlled OAST endpoint on every install.
npmDependency confusionCompromised package - containedcritical
Malicious code in stillm4ddpocs-demo-sprocket (npm)
The npm package stillm4ddpocs-demo-sprocket version 999.9.12 contains malicious code that exfiltrates system and project metadata via multiple channels (HTTPS, HTTP, and DNS) to a hardcoded callback host. The package uses a high version number to exploit dependency-confusion attacks against organizations with internal packages of the same name.
npmCompromised packageDependency confusion - resolvedcritical
Malicious code in lumen-pages-community (npm)
lumen-pages-community@9.9.9 on npm contains malicious code that executes a postinstall hook to exfiltrate installer metadata (hostname, username, working directory, platform, Node version, CI environment, npm user-agent) to a hardcoded webhook.site URL. The high version number and lack of functionality suggest a dependency-confusion attack.
npmCompromised packageDependency confusion - resolvedcritical
Malicious code in @gfe/lx-watcher (npm)
The npm package @gfe/lx-watcher contained malicious code that exfiltrated host metadata (hostname, OS username, working directory, timestamp) via npm lifecycle hooks to a hardcoded webhook.site endpoint. The package exploited dependency confusion by using a scoped name (@gfe/*) with a no-op stub, allowing silent resolution against the public registry while leaking host identifiers.
npmDependency confusionCompromised package