MAL-2026-6783Malicious code in @marketfront/infopopup (npm)
| Ecosystem | Package | Version |
|---|---|---|
| npm | @marketfront/infopopup | * |
| npm | @marketfront/infopopup | 7.0.0 |
{"modified":"2026-07-06T04:59:51Z","published":"2026-07-02T00:00:00Z","schema_version":"1.7.4","id":"MAL-2026-6783","summary":"Malicious code in @marketfront/infopopup (npm)","details":"The @marketfront/infopopup package is part of a 25-package malicious campaign batch-published to the @marketfront npm scope by npm user 'marketfront' (marketfront@tutamail.com) within a roughly 3-minute window on 2026-07-01. All packages in the campaign were published at version 7.0.0 and use e-commerce/marketing frontend component names as cover.\n\nThe package declares a postinstall hook (node scripts/postinstall.js) that executes heavily obfuscated (obfuscator.io-style) code automatically at npm install time. Static analysis of the decoded payload revealed a credential harvester that dynamically requires fs, os, http, https, zlib, path and dns, then reads approximately 20 sensitive credential files including ~/.ssh, ~/.aws/credentials, ~/.kube/config, ~/.docker/config.json, ~/.npmrc, ~/.netrc, ~/.pgpass, ~/.git-credentials, ~/.env and ~/.bash_history. Collected data is exfiltrated via a gzip-compressed HTTPS POST with a custom X-Secret header to the path /api/v1/events, alongside a DNS resolver beacon. The command-and-control host is concealed behind an additional RC4+XOR encryption layer around an embedded configuration blob and was not statically resolved.\n\nThe decoded behavioral payload (module requires, credential-file target list, exfiltration headers and endpoint) is byte-for-byte identical across sampled packages in the campaign. The campaign shares tooling and infrastructure patterns (obfuscated postinstall credential harvester, X-Secret header, /api/v1/events exfiltration path, RC4-concealed C2) with the earlier @emcd-vue campaign, indicating the same actor rotating scopes and disposable maintainer emails.\n\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (206e60b923200a66a3a6bacec3f6ec998191bd648eb4bbc61b1cee008d2f3eec)\nOn `npm install`, the declared `postinstall` script (`scripts/postinstall.js`) runs a heavily obfuscated (obfuscator.io-style, RC4/XOR string-array decoded) payload that harvests installer-owned secrets and identity: reads `~/.aws/credentials`, `~/.ssh/known_hosts`, `~/.npmrc`, `~/.docker/config.json`, `~/.gitconfig`, and shell history files; bulk-serialises `process.env`; and collects hostname, user, network interfaces, CPU/OS. The collected data is encrypted and transmitted over two exfiltration channels: an HTTPS POST to a runtime-decoded remote endpoint, and a DNS-tunnel channel built via `new dns.Resolver().resolve4(...)` that splits the encrypted body into ≤50-character labels queried under an attacker-controlled parent domain to survive HTTPS egress filtering. Package metadata advertises a fabricated corporate identity (`*.marketfront.io` hosts that do not exist; README references an `internal-corp.io` auth endpoint) as a dependency-confusion cover story for what is otherwise a credential-stealer. Declared purpose (\"internal authentication client\") does not require reading AWS/SSH/npm/Docker/Git credential files or DNS-tunnelling encrypted blobs.\n","affected":[{"package":{"ecosystem":"npm","name":"@marketfront/infopopup"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"}]}],"versions":["7.0.0"],"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":"scripts/postinstall.js","sha256":"1ccefa95a7c472ffeb9b200b76e615212fe3be34755dfa06a5af3d42c09663f2","tlsh":"e4f3da892744d443d95fdfbf7e61e6f4e01a7cc6c3c5284af714b82cf89852a9a48b81"},{"path":"package.json","sha256":"68eefadeffa562415df9ff8917f0206047cb82a49312232ff28b647141156960","tlsh":"5a11c935c5325c3362da25a6ad711942b9265a3f1886fc1823d2805c4b8d56a11fd67e"}],"package_integrity":[{"filename":"infopopup-7.0.0.tgz","hashes":{"sha1":"ae7372091069eaa8f80494988cda7011849b39f9","sha512_sri":"sha512-6sYgpOmnHI/RMEST9h0izfvaSvWMoDgovkgpc3ZJ35Nq2UPLSnqLsdDvk1REzfwN/lZoAKooeODAo/6QPHz8QA=="}}]}}}],"references":[{"type":"REPORT","url":"https://safedep.io/marketfront-dependency-confusion-campaign/"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/@marketfront/infopopup/v/7.0.0"}],"credits":[{"name":"Amazon Inspector","type":"FINDER","contact":["inspector-research@amazon.com"]},{"name":"SafeDep","type":"FINDER","contact":["https://safedep.io"]}],"database_specific":{"malicious-packages-origins":[{"source":"amazon-inspector","sha256":"206e60b923200a66a3a6bacec3f6ec998191bd648eb4bbc61b1cee008d2f3eec","import_time":"2026-07-06T04:58:11.161420198Z","id":"IN-MAL-2026-008036","modified_time":"2026-07-06T03:21:46Z","versions":["7.0.0"]}]}}数据来源:OpenSSF Malicious Packages · Apache-2.0