mal-2026-5712
Vulnerability from ossf_malicious_packages
-= Per source details. Do not edit below this line.=-
Source: amazon-inspector (13a6476409b9cb9296b7f778be375081c8ad12b030658351092e9fef90f4b707)
On npm install, the package's postinstall hook (postinstall.js) requires index.js, whose top-level scanAndExfiltrate() call walks the installer's working directory and parent directories for sensitive files (.env,.aws/credentials,.ssh/id_rsa,.npmrc,.netrc,.git-credentials, service-account.json, and similar) and POSTs their contents via execSync('curl...') to a hardcoded Discord webhook. The webhook URL is split into two base64-encoded chunks (aHR0cHM6Ly9kaXNjb3JkLmNvbS9hcGkvd2ViaG9va3Mv plus a base64-encoded webhook ID/token) and reassembled at runtime to evade simple string scanners. The combination of installer-secret enumeration, hardcoded attacker-controlled exfil endpoint, base64 obfuscation, and unconditional execution under the postinstall lifecycle hook is a textbook supply-chain credential-theft attack.
Source: ghsa-malware (e1b711973232fc0cb41d14fdad4ab528b239cff398f86eaf9d4c33e253783ec6)
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.
{
"affected": [
{
"database_specific": {
"cwes": [
{
"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"
}
],
"indicators": {
"evidence_files": [
{
"path": "index.js",
"sha256": "af46e4470629d3beb9d161cb05ee876f38e8ab70604d69b6da0afc07af5bd725",
"tlsh": "2d41a8f605fa1bb04467cddad60f18011297e6933224a8f0716c059c0f8ee20b6f3eac"
},
{
"path": "package.json",
"sha256": "c83d17768d6e40437fdc68b827e130ba70de18c73effe5cd2c697561c76f601e",
"tlsh": "76e07d000d568f3325c50f5b0d26845c66225f1f0000791c2bdf106cc34e1b699ff39e"
}
],
"package_integrity": [
{
"filename": "jextic-eclib-1.0.0.tgz",
"hashes": {
"sha1": "4c887f08f577cd599c8915dcd5532757b6ed5c08",
"sha512_sri": "sha512-lWPDLdhNxPBZSdUP5nkcrb5pQsDsMrPPsQzsvxPOl05dXflbgyIA38BmSI9SrHJmbyUwvxwlEtK8meMEY/F+Ng=="
}
}
]
}
},
"package": {
"ecosystem": "npm",
"name": "jextic-eclib"
},
"ranges": [
{
"events": [
{
"introduced": "0"
}
],
"type": "SEMVER"
}
],
"versions": [
"1.0.0"
]
}
],
"aliases": [
"GHSA-fvh5-fhfx-3whm"
],
"credits": [
{
"contact": [
"inspector-research@amazon.com"
],
"name": "Amazon Inspector",
"type": "FINDER"
}
],
"database_specific": {
"malicious-packages-origins": [
{
"id": "IN-MAL-2026-006230",
"import_time": "2026-06-12T20:49:38.041891302Z",
"modified_time": "2026-06-12T20:35:41Z",
"sha256": "13a6476409b9cb9296b7f778be375081c8ad12b030658351092e9fef90f4b707",
"source": "amazon-inspector",
"versions": [
"1.0.0"
]
},
{
"id": "GHSA-fvh5-fhfx-3whm",
"import_time": "2026-07-27T09:43:03.798754516Z",
"modified_time": "2026-07-27T02:39:18Z",
"ranges": [
{
"events": [
{
"introduced": "0"
}
],
"type": "SEMVER"
}
],
"sha256": "e1b711973232fc0cb41d14fdad4ab528b239cff398f86eaf9d4c33e253783ec6",
"source": "ghsa-malware"
}
]
},
"details": "\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (13a6476409b9cb9296b7f778be375081c8ad12b030658351092e9fef90f4b707)\nOn `npm install`, the package\u0027s postinstall hook (`postinstall.js`) requires `index.js`, whose top-level `scanAndExfiltrate()` call walks the installer\u0027s working directory and parent directories for sensitive files (.env,.aws/credentials,.ssh/id_rsa,.npmrc,.netrc,.git-credentials, service-account.json, and similar) and POSTs their contents via `execSync(\u0027curl...\u0027)` to a hardcoded Discord webhook. The webhook URL is split into two base64-encoded chunks (`aHR0cHM6Ly9kaXNjb3JkLmNvbS9hcGkvd2ViaG9va3Mv` plus a base64-encoded webhook ID/token) and reassembled at runtime to evade simple string scanners. The combination of installer-secret enumeration, hardcoded attacker-controlled exfil endpoint, base64 obfuscation, and unconditional execution under the postinstall lifecycle hook is a textbook supply-chain credential-theft attack.\n\n## Source: ghsa-malware (e1b711973232fc0cb41d14fdad4ab528b239cff398f86eaf9d4c33e253783ec6)\nAny 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.\n",
"id": "MAL-2026-5712",
"modified": "2026-07-27T09:45:41Z",
"published": "2026-06-12T20:35:41Z",
"references": [
{
"type": "PACKAGE",
"url": "https://www.npmjs.com/package/jextic-eclib/v/1.0.0"
},
{
"type": "ADVISORY",
"url": "https://github.com/advisories/GHSA-fvh5-fhfx-3whm"
}
],
"schema_version": "1.7.4",
"summary": "Malicious code in jextic-eclib (npm)"
}
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.