Malicious code in nwfp-build-config (npm)
--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (905a5825cb8abf7b385b98cfade02c315a4bc776bc37cfacd5ab20d5b8d03640) On require() of nwfp-build-config, index.js loads lib/telemetry.js, which immediately runs an IIFE that reads the installer's hostname (os.hostname()) and username (os.userInfo().username), AES-256-CBC-encrypts the pair with a hardcoded 32-byte key, base32-encodes the ciphertext, splits it into DNS labels of up to 50 characters, and leaks the labels via dns.resolve4() queries to subdomains of cdn-assets.liderydigital.com, framed with start/end sentinel queries. The channel is a purpose-built covert DNS tunnel that bypasses HTTP egress controls; errors are swallowed in silent try/catch blocks. The destination is unrelated to the package's declared purpose of providing build configuration, and the 'telemetry' naming plus hardcoded encryption key are cover-story shaping around identity exfiltration. ## Source: ghsa-malware (918305da861c018c4d00872a3fbd1d88902de80581628ba62e66eb1a098ebe56) 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.
- Products
- nwfp-build-config
- Affected versions
- 0.0.0-stage, 1.0.0
- Fixed versions
- Not specified
- CVEs
- Not specified
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 31 Oct 2026, 13:15 UTC · Revision 1
Source evidence
--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (905a5825cb8abf7b385b98cfade02c315a4bc776bc37cfacd5ab20d5b8d03640) On require() of nwfp-build-config, index.js loads lib/telemetry.js, which immediately runs an IIFE that reads the installer's hostname (os.hostname()) and username (os.userInfo().username), AES-256-CBC-encrypts the pair with a hardcoded 32-byte key, base32-encodes the ciphertext, splits it into DNS labels of up to 50 characters, and leaks the labels via dns.resolve4() queries to subdomains of cdn-assets.liderydigital.com, framed with start/end sentinel queries. The channel is a purpose-built covert DNS tunnel that bypasses HTTP egress controls; errors are swallowed in silent try/catch blocks. The destination is unrelated to the package's declared purpose of providing build configuration, and the 'telemetry' naming plus hardcoded encryption key are cover-story shaping around identity exfiltration. ## Source: ghsa-malware (918305da861c018c4d00872a3fbd1d88902de80581628ba62e66eb1a098ebe56) 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.
osv:MAL-2026-18107
nwfp-build-config
Fixed versions: Not specified
Complete source record
{
"id": "464e56e390182d91ede0f35a24560c789be0421519efac95af6f8a977d428637",
"url": "https://osv.dev/vulnerability/MAL-2026-18107",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Malicious code in nwfp-build-config (npm)",
"summary": "--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (905a5825cb8abf7b385b98cfade02c315a4bc776bc37cfacd5ab20d5b8d03640) On require() of nwfp-build-config, index.js loads lib/telemetry.js, which immediately runs an IIFE that reads the installer's hostname (os.hostname()) and username (os.userInfo().username), AES-256-CBC-encrypts the pair with a hardcoded 32-byte key, base32-encodes the ciphertext, splits it into DNS labels of up to 50 characters, and leaks the labels via dns.resolve4() queries to subdomains of cdn-assets.liderydigital.com, framed with start/end sentinel queries. The channel is a purpose-built covert DNS tunnel that bypasses HTTP egress controls; errors are swallowed in silent try/catch blocks. The destination is unrelated to the package's declared purpose of providing build configuration, and the 'telemetry' naming plus hardcoded encryption key are cover-story shaping around identity exfiltration. ## Source: ghsa-malware (918305da861c018c4d00872a3fbd1d88902de80581628ba62e66eb1a098ebe56) 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.",
"evidence": "osv:MAL-2026-18107",
"products": [
{
"name": {
"value": "nwfp-build-config",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "1.0.0",
"evidence": "/affected/0/versions"
},
{
"value": "0.0.0-stage",
"evidence": "/affected/0/versions"
}
]
}
],
"severity": "unknown",
"structured": {
"id": "MAL-2026-18107",
"aliases": [
"GHSA-fj85-27r8-hgfg",
"MAL-2026-18107"
],
"affected": [
{
"package": {
"name": "nwfp-build-config",
"purl": "pkg:npm/nwfp-build-config",
"ecosystem": "npm"
},
"versions": [
"1.0.0",
"0.0.0-stage"
],
"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."
}
],
"source": "https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/nwfp-build-config/MAL-2026-18107.json",
"indicators": {
"evidence_files": [
{
"path": "lib/telemetry.js",
"tlsh": "5c41125439fa3834165374e1857be41b619be2133405cd84b7ac73444febe289bde5d4",
"sha256": "2ba484b29e2f2edce16e0722e1ac74d3dd1861c84e11e65ac9aa6ffb938ab2c5"
}
]
}
}
}
],
"modified": "2026-10-20T19:30:08.371132811Z",
"provider": "osv",
"references": [
"https://www.npmjs.com/package/nwfp-build-config/v/1.0.0",
"https://github.com/advisories/GHSA-fj85-27r8-hgfg"
],
"provider_metadata": {
"malicious-packages-origins": [
{
"id": "IN-MAL-2026-021546",
"sha256": "905a5825cb8abf7b385b98cfade02c315a4bc776bc37cfacd5ab20d5b8d03640",
"source": "amazon-inspector",
"versions": [
"1.0.0"
],
"import_time": "2026-10-20T18:46:13.540165675Z",
"modified_time": "2026-10-20T18:45:16Z"
},
{
"id": "GHSA-fj85-27r8-hgfg",
"sha256": "918305da861c018c4d00872a3fbd1d88902de80581628ba62e66eb1a098ebe56",
"source": "ghsa-malware",
"versions": [
"1.0.0",
"0.0.0-stage"
],
"import_time": "2026-10-20T19:23:19.944168827Z",
"modified_time": "2026-10-20T18:14:54Z"
}
]
}
},
"related_cves": [],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-osv",
"document_id": 390220,
"published_at": "2026-10-20T18:14:53+00:00"
}