Your RSA-2048 keys break in 2030. Find every one of them before attackers do.
Malicious package

@flex-ng/error-componentnpm

Malicious code in @flex-ng/error-component (npm) Remove it immediately and rotate any exposed credentials.

MAL-2026-10221
Immediate action
Remove the package, then rotate any secrets the build/runtime could reach.
npm uninstall @flex-ng/error-component

What this malware does

The @flex-ng/error-component package was published to the npm registry by user 'click2ai' (maintainer email [email protected]) as part of a dependency-confusion / reconnaissance campaign. The package name mimics the internal/private package naming convention of a target organization (the @flex-ng organizational scope) so that a misconfigured resolver installs this public lookalike instead of the intended private dependency.

The package declares a preinstall hook ("npm install @sentry/node && node examples/verify.js") that executes automatically at npm install time, before any application code runs. The bundled examples/verify.js initializes the @sentry/node client against a hardcoded, attacker-controlled Sentry DSN with sendDefaultPii enabled, resolves the installing host's public egress IP address by requesting Cloudflare's /cdn-cgi/trace endpoint (using a spoofed desktop-browser User-Agent to bypass bot challenges), then deliberately triggers a runtime exception and captures it. Flushing the event beacons the collected host telemetry (public IP plus Sentry default PII such as hostname, OS username and runtime/environment metadata) to the attacker's Sentry ingest endpoint at o4510485815754752.ingest.us.sentry.io.

Each impersonated namespace in the campaign beacons to a distinct Sentry project ID, letting the operator attribute successful installs to specific victim organizations — behaviour consistent with a dependency-confusion reconnaissance beacon rather than legitimate error monitoring. The install-time payload is byte-for-byte identical across all packages published by this account, differing only in the package name and the target DSN. This package's beacon targets Sentry project 4511632071262208.

package.json declares a preinstall hook ("npm install @sentry/node && node examples/verify.js") that runs on every npm install. examples/verify.js calls init() without a DSN; src/index.js falls back to a hardcoded DSN at https://o4510485815754752.ingest.us.sentry.io/4511632071262208 (author-controlled Sentry project). The script then resolves the installer's public egress IP (via a Cloudflare trace lookup in setUserFromPublicIp), enables sendDefaultPii: true, deliberately triggers an error, and ships the resulting event — carrying the installer's IP and host context — to the author's Sentry org. The installer never opts in: there is no DSN configuration step, the destination is hardcoded, and the README does not document this behavior. Additionally, the exported init() API hardcodes the same author DSN as its fallback, so any consumer who calls init() without explicit configuration silently relays their exceptions and PII to the author's Sentry account instead of their own.

Malicious versions

1 flagged
2.1.0

Indicators of compromise (SHA-256)

ee4da18b90ebb68eae630b191b37737312e50fe4fdc0a8472616ba070a7348fb

Detection & response playbook

Backdoor / remote access
  1. Find it

    Scan your lockfiles (package-lock.json, pnpm-lock.yaml, yarn.lock, requirements.txt, poetry.lock, etc.) and build artifacts for @flex-ng/error-component (version 2.1.0). O3 Security's supply-chain scanner checks every dependency against known-malicious package intelligence at install time and in CI, flagging @flex-ng/error-component across your stack and pipelines.

  2. If you installed it — respond

    @flex-ng/error-component establishes remote access, so treat any host that installed it as fully compromised. Isolate the machine, remove the package, rotate all credentials it could reach, and rebuild from a trusted image rather than cleaning in place — a backdoor may have planted additional persistence.

  3. Did it already run?

    If @flex-ng/error-component was ever installed, its post-install/runtime payload may have already executed. O3's L7 egress monitoring and runtime eBPF sensors detect the credential exfiltration or command-and-control callback after install and block the malicious outbound channel, so you catch and contain the actual compromise — not just the presence of the package.

  4. How O3 protects you

    O3 blocks @flex-ng/error-component before install through its supply-chain scanner, and if it has already run, detects and severs the exfiltration or C2 callback at runtime through L7 egress monitoring and eBPF.

Frequently asked questions

No. @flex-ng/error-component on npm has been identified as a malicious package (version 2.1.0 flagged). It should be removed immediately — do not install or keep it in your dependency tree.

Campaign

IN-MAL-2026-009864

References

Credits

  • Amazon Inspector · finder
  • SafeDep · finder

Detect & block this

O3 blocks @flex-ng/error-component-class packages before install and in CI — and if it already ran, its runtime egress monitoring catches the C2 callback and severs the channel.