Malicious code in @crbrc/xbt (npm)
The npm package @crbrc/xbt contains malicious code that exfiltrates OxaPay payment-gateway secrets and host metadata to a hardcoded attacker-controlled IP address, establishes a reverse TCP proxy tunnel, and allows remote process termination. The malicious behavior is conditionally activated only when all project source files import the companion package @crb/xbr.
- Disclosed
- Last updated
- Blast radius
- Any Node.js/Next.js application that imports @crbrc/xbt with all source files importing the companion package @crb/xbr
- Ecosystems
- Attack vectors
- Affected entities
- @crbrc/xbtnpm package containing malicious code in dist/index.js
The npm package @crbrc/xbt was found to contain malicious code in its dist/index.js file. The package implements a startControlClient routine that exfiltrates sensitive OxaPay payment-gateway API keys and webhook secrets (OXAPAY_GENERAL_API_KEY, OXAPAY_MERCHANT_API_KEY, OXAPAY_PAYOUT_API_KEY, OXAPAY_WEBHOOK_SECRET) from the environment, along with host metadata including server IP addresses, hostname labels, and resolved public domains.
The malicious code establishes communication with a hardcoded bare-IP controller at http://23.160.168.168:4141 over plain HTTP, transmitting the exfiltrated secrets and metadata. Additionally, the package opens a WebSocket connection to ws://23.160.168.168:4141/proxy-tunnel, where the remote attacker can send JSON commands to establish arbitrary outbound TCP connections and relay traffic bidirectionally, effectively turning the compromised host into an operator-controlled TCP relay. A secondary Server-Sent Events (SSE) channel at /events allows the attacker to remotely terminate the running Node.js or Next.js process.
The malicious behavior is gated behind a verifyProjectImportCoverage check that enumerates the entire project source tree and only activates when every source file imports the companion package @crb/xbr. This conditional activation is designed to evade detection during code review by consumers who merely require the module without the companion package present.
The bare-IP destination is unrelated to any documented OxaPay infrastructure and is not configurable by the caller, indicating intentional malicious design.
Indicators of compromise
- Packages
- @crbrc/xbt
- @crb/xbr
- IPs
- 23.160.168.168
Remediation
- Immediately remove @crbrc/xbt from all projects and dependencies
- Audit all environment variables and secrets, particularly OxaPay API keys and webhook secrets, for unauthorized access or exfiltration
- Review network logs for outbound connections to 23.160.168.168:4141 and any suspicious TCP relay activity
- Rotate all OxaPay payment-gateway credentials (OXAPAY_GENERAL_API_KEY, OXAPAY_MERCHANT_API_KEY, OXAPAY_PAYOUT_API_KEY, OXAPAY_WEBHOOK_SECRET)
- Check for the presence of the companion package @crb/xbr in projects and remove it
- Implement package integrity verification and supply chain security scanning in CI/CD pipelines
- Review npm package dependencies for other potentially malicious or suspicious packages from the same author
Sources
- GitHub Advisory GHSA-f3f6-vqm6-jv4v · GitHub Advisory Database
Cite this entry
"Malicious code in @crbrc/xbt (npm)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed July 28, 2026; last updated July 28, 2026. https://supplychainattack.org/incident/malicious-code-in-crbrc-xbt-npm-1944ms
Suggest a correction
Found an error or have a newer source? Corrections to factual errors take priority over new entries.
Related incidents
- containedcritical
Malicious code in sme-rko-finance-front-payments-allowed-tariffs-filter (npm)
The npm package sme-rko-finance-front-payments-allowed-tariffs-filter contains malicious code that downloads and executes arbitrary binaries from attacker-controlled Cloudflare Workers and Russian DNS fallback hosts upon installation or import. The package masquerades as a finance UI component but performs full-host code execution with no verification or configuration controls.
npmCompromised packageMalicious commit - resolvedcritical
Malicious code in sme-rko-finance-front-operations-income (npm)
The npm package sme-rko-finance-front-operations-income contained malicious code that downloads and executes platform-specific native binaries on package import. The package was disguised as a monitoring/observability SDK but contained no legitimate functionality.
npmCompromised packageMalicious commit - containedcritical
Malicious code in sme-rko-finance-front-payments-currency-payment-actions-operations-repeat-impl (npm)
The npm package sme-rko-finance-front-payments-currency-payment-actions-operations-repeat-impl contains malicious code that downloads and executes unsigned native binaries from Cloudflare Workers subdomains and a .ru fallback domain. The attack is disguised as telemetry/analytics functionality with opt-out environment variables.
npmCompromised packageMalicious commit - resolvedcritical
Malicious code in delivery-ci-codeceptjs-fork (npm)
The npm package delivery-ci-codeceptjs-fork contained malicious code that executed remote code on installation/require. The dropper reconstructed attacker-controlled hostnames, downloaded platform-specific binaries, and spawned them with detached shell execution, with a DNS-TXT covert-channel fallback.
npmCompromised packageMalicious commit