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

@ecg-internal/favourites-uinpm

Advisory published Updated

@ecg-internal/favourites-ui is a confirmed malicious npm package (MAL-2026-18208) that opens a backdoor for remote access (malicious versions 0.0.1, 1.0.0, 1.1.0…). Do not install it — remove it immediately and rotate any exposed credentials.

Malicious code in @ecg-internal/favourites-ui (npm)

MAL-2026-18208
Immediate action
Remove the package, then rotate any secrets the build/runtime could reach.
npm uninstall @ecg-internal/favourites-ui

What this malware does

The package publishes under the internal-looking scope @ecg-internal/ and ships a postinstall script (beacon.cjs) plus a top-level require() side effect in index.js that call a fire() function. fire() POSTs a JSON payload containing os.hostname(), the install __dirname, process.cwd(), and the Node version to the hardcoded bare-IP endpoint http://185.158.107.175:8787/_ah/dc over plain HTTP. index.js otherwise exports a Proxy whose property access returns a no-op function, and an in-source comment states that 'a build that completes and calls back is cleaner evidence' — the module provides no real functionality and exists only to produce an install-time callback. The combination of an internal-scope name, a stub module, and an automatic bare-IP beacon carrying installer host identifiers is a dependency-confusion probe: build pipelines that mistakenly resolve this public package instead of the intended private @ecg-internal/favourites-ui disclose internal hostnames and build-path information to the operator of 185.158.107.175.

Any computer that has this package installed or running should be considered fully compromised. All secrets and keys stored on that computer should be rotated immediately from a different computer. The package should be removed, but as full control of the computer may have been given to an outside entity, there is no guarantee that removing the package will remove all malicious software resulting from installing it.

Malicious versions

7 flagged
0.0.11.0.01.1.02.0.02.0.13.0.099.0.1

Indicators of compromise (SHA-256)

30f3affd8f27bbe822a15d3f6656cf55c431e37d1f2910e00e8272d94915b7ac
e0f37fd70766d2ddda31ffe3b985eba596fd927fdd589a9ceff04d4a695e3bb1
ef29926bcac7698a54c3901bbbda0f936ed6ed3ef3dbc70e771c16a4faf5b682
f5e6908e6df16b99b21a45327bb85dc80139d424ad363d4121b34c10651833e3
509adadad793d6028b802d1aefca6e66e1bfce35018b8fc08db0c7211278abc6
8004c2f345cdf30eb4af28a1a54f56be6cdc586bd9666526b6b06825e15ef22f
dd6fb0a78c783012998186014c58590785850e15628a0bb60ed6092d5a48569f
e133233e109135c00c63c294eddb92ed208a79ef68deb740d86bc60e59e220a1

Detection & response playbook

Backdoor / remote access
  1. Find it

    Search your lockfiles and build artifacts for @ecg-internal/favourites-ui (7 malicious versions).

  2. If you installed it — respond

    @ecg-internal/favourites-ui 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 @ecg-internal/favourites-ui was installed, its post-install payload may already have run. Removing the package does not undo that — check outbound connections and credential use from the install window onward.

Frequently asked questions

No. @ecg-internal/favourites-ui on npm has been identified as a malicious package (versions 0.0.1, 1.0.0, 1.1.0, 2.0.0, 2.0.1, 3.0.0, 99.0.1 flagged). It should be removed immediately — do not install or keep it in your dependency tree.

Campaign

IN-MAL-2026-021594IN-MAL-2026-021598IN-MAL-2026-021595IN-MAL-2026-021600IN-MAL-2026-021597IN-MAL-2026-021596IN-MAL-2026-021599GHSA-g8hh-8pxg-jr3x

References

Credits

  • Amazon Inspector · finder

Detect & block this

O3 blocks @ecg-internal/favourites-ui-class packages before install and in CI — and if it already ran, its runtime egress monitoring catches the C2 callback and severs the channel.

Explore