Malicious code in @ecg-internal/favourites-ui (npm)
--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (e0f37fd70766d2ddda31ffe3b985eba596fd927fdd589a9ceff04d4a695e3bb1) 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. ## Source: ghsa-malware (e133233e109135c00c63c294eddb92ed208a79ef68deb740d86bc60e59e220a1) 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 differen
- Products
- @ecg-internal/favourites-ui
- Affected versions
- 0.0.1, 1.0.0, 1.1.0, 2.0.0, 2.0.1, 3.0.0, 99.0.1
- Fixed versions
- Not specified
- CVEs
- Not specified
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 31 Oct 2026, 20:41 UTC · Revision 1
Source evidence
Malicious code in @ecg-internal/favourites-ui (npm)
core-osv · Original sourcePublished 23 Oct 2026, 01:59 UTC
--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (e0f37fd70766d2ddda31ffe3b985eba596fd927fdd589a9ceff04d4a695e3bb1) 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. ## Source: ghsa-malware (e133233e109135c00c63c294eddb92ed208a79ef68deb740d86bc60e59e220a1) 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 differen
osv:MAL-2026-18208
@ecg-internal/favourites-ui
Fixed versions: Not specified
Complete source record
{
"id": "3a8955fa1003a9b0d0e3ef3c21fa411e80a107308deb15642f7b5a18a2364db0",
"url": "https://osv.dev/vulnerability/MAL-2026-18208",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Malicious code in @ecg-internal/favourites-ui (npm)",
"summary": "--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (e0f37fd70766d2ddda31ffe3b985eba596fd927fdd589a9ceff04d4a695e3bb1) 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. ## Source: ghsa-malware (e133233e109135c00c63c294eddb92ed208a79ef68deb740d86bc60e59e220a1) 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 differen",
"evidence": "osv:MAL-2026-18208",
"products": [
{
"name": {
"value": "@ecg-internal/favourites-ui",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "99.0.1",
"evidence": "/affected/0/versions"
},
{
"value": "1.1.0",
"evidence": "/affected/0/versions"
},
{
"value": "0.0.1",
"evidence": "/affected/0/versions"
},
{
"value": "3.0.0",
"evidence": "/affected/0/versions"
},
{
"value": "2.0.1",
"evidence": "/affected/0/versions"
},
{
"value": "1.0.0",
"evidence": "/affected/0/versions"
},
{
"value": "2.0.0",
"evidence": "/affected/0/versions"
}
]
}
],
"severity": "unknown",
"structured": {
"id": "MAL-2026-18208",
"aliases": [
"GHSA-g8hh-8pxg-jr3x",
"MAL-2026-18208"
],
"affected": [
{
"ranges": [
{
"type": "SEMVER",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "@ecg-internal/favourites-ui",
"purl": "pkg:npm/%40ecg-internal/favourites-ui",
"ecosystem": "npm"
},
"versions": [
"99.0.1",
"1.1.0",
"0.0.1",
"3.0.0",
"2.0.1",
"1.0.0",
"2.0.0"
],
"database_specific": {
"cwes": [
{
"name": "Embedded Malicious Code",
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature."
},
{
"name": "Embedded Malicious Code",
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature."
},
{
"name": "Embedded Malicious Code",
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature."
},
{
"name": "Embedded Malicious Code",
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature."
},
{
"name": "Embedded Malicious Code",
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature."
},
{
"name": "Embedded Malicious Code",
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature."
},
{
"name": "Embedded Malicious Code",
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature."
},
{
"name": "Embedded Malicious Code",
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature."
}
],
"source": "https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/@ecg-internal/favourites-ui/MAL-2026-18208.json",
"indicators": {
"evidence_files": [
{
"path": "beacon.cjs",
"tlsh": "ef3140eba8e1a0489aa77098c94b4409b17af0068501ab54fd5c92919f6293c33fa8dc",
"sha256": "f61d875bd327c15818875905fb8f466a56f444caacf34198c6b6d5f8990d6384"
},
{
"path": "README.md",
"tlsh": "25d02b346421657154250b7609a1b0685bf8d1b8c81605bd545e9b5c505ba3c432267a",
"sha256": "e904db9c4056812ad5c68cf8e7cea1437f45aacf9270ea321f16f64753718f6a"
}
],
"package_integrity": [
{
"hashes": {
"sha1": "6a1088337c8bf4e508c3bae39858fb2186217c3d",
"sha512_sri": "sha512-RmdD9srT+q1xsiBHG0Zln/4gnBkGbKMSr9GCNpkbQj6uP0voj2nVvUqgqcf96+hiO38GTxtj/ETxYkeH6WoXzA=="
},
"filename": "favourites-ui-99.0.1.tgz"
}
]
}
}
}
],
"modified": "2026-10-23T02:45:05.064957919Z",
"provider": "osv",
"references": [
"https://www.npmjs.com/package/@ecg-internal/favourites-ui/v/99.0.1",
"https://www.npmjs.com/package/@ecg-internal/favourites-ui/v/1.1.0",
"https://www.npmjs.com/package/@ecg-internal/favourites-ui/v/0.0.1",
"https://www.npmjs.com/package/@ecg-internal/favourites-ui/v/3.0.0",
"https://www.npmjs.com/package/@ecg-internal/favourites-ui/v/2.0.1",
"https://www.npmjs.com/package/@ecg-internal/favourites-ui/v/1.0.0",
"https://www.npmjs.com/package/@ecg-internal/favourites-ui/v/2.0.0",
"https://github.com/advisories/GHSA-g8hh-8pxg-jr3x"
],
"provider_metadata": {
"malicious-packages-origins": [
{
"id": "IN-MAL-2026-021594",
"sha256": "30f3affd8f27bbe822a15d3f6656cf55c431e37d1f2910e00e8272d94915b7ac",
"source": "amazon-inspector",
"versions": [
"99.0.1"
],
"import_time": "2026-10-23T02:25:38.36794538Z",
"modified_time": "2026-10-23T01:59:31Z"
},
{
"id": "IN-MAL-2026-021598",
"sha256": "e0f37fd70766d2ddda31ffe3b985eba596fd927fdd589a9ceff04d4a695e3bb1",
"source": "amazon-inspector",
"versions": [
"1.1.0"
],
"import_time": "2026-10-23T02:25:38.682901038Z",
"modified_time": "2026-10-23T01:59:59Z"
},
{
"id": "IN-MAL-2026-021595",
"sha256": "ef29926bcac7698a54c3901bbbda0f936ed6ed3ef3dbc70e771c16a4faf5b682",
"source": "amazon-inspector",
"versions": [
"0.0.1"
],
"import_time": "2026-10-23T02:25:38.444958312Z",
"modified_time": "2026-10-23T01:59:39Z"
},
{
"id": "IN-MAL-2026-021600",
"sha256": "f5e6908e6df16b99b21a45327bb85dc80139d424ad363d4121b34c10651833e3",
"source": "amazon-inspector",
"versions": [
"3.0.0"
],
"import_time": "2026-10-23T02:25:38.775440128Z",
"modified_time": "2026-10-23T02:00:15Z"
},
{
"id": "IN-MAL-2026-021597",
"sha256": "509adadad793d6028b802d1aefca6e66e1bfce35018b8fc08db0c7211278abc6",
"source": "amazon-inspector",
"versions": [
"2.0.1"
],
"import_time": "2026-10-23T02:25:38.626416608Z",
"modified_time": "2026-10-23T01:59:52Z"
},
{
"id": "IN-MAL-2026-021596",
"sha256": "8004c2f345cdf30eb4af28a1a54f56be6cdc586bd9666526b6b06825e15ef22f",
"source": "amazon-inspector",
"versions": [
"1.0.0"
],
"import_time": "2026-10-23T02:25:38.553544313Z",
"modified_time": "2026-10-23T01:59:45Z"
},
{
"id": "IN-MAL-2026-021599",
"sha256": "dd6fb0a78c783012998186014c58590785850e15628a0bb60ed6092d5a48569f",
"source": "amazon-inspector",
"versions": [
"2.0.0"
],
"import_time": "2026-10-23T02:25:38.735383181Z",
"modified_time": "2026-10-23T02:00:07Z"
},
{
"id": "GHSA-g8hh-8pxg-jr3x",
"ranges": [
{
"type": "SEMVER",
"events": [
{
"introduced": "0"
}
]
}
],
"sha256": "e133233e109135c00c63c294eddb92ed208a79ef68deb740d86bc60e59e220a1",
"source": "ghsa-malware",
"import_time": "2026-10-23T02:36:25.379009569Z",
"modified_time": "2026-10-23T02:05:25Z"
}
]
}
},
"related_cves": [],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-osv",
"document_id": 411760,
"published_at": "2026-10-23T01:59:31+00:00"
}