{"id":"MAL-2026-5349","summary":"Malicious code in @demica/core (npm)","details":"Dep-confusion squat of internal @demica/core at sentinel high version 99.99.100 + auto-exec postinstall (canary.js) beaconing to RAW IP 157.230.17.236:80/dc. Sentinel-high-version + auto-exec beacon = MALICIOUS per operator policy (c913); \"authorized benign canary\" framing does NOT downgrade, raw-IP dest matches masterkrweb. 6-pkg @demica canary campaign.\n\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (3abd78892d57868223d66ae70f269e5088d5801f5beaa41418146172a3e5e338)\nPackage self-describes as a dependency-confusion canary targeting the @demica scope and ships a postinstall hook that fires automatically on `npm install`. `package.json` declares `scripts.postinstall: node canary.js postinstall`, and canary.js lines 18-22 issue an HTTP GET to the bare IP 157.230.17.236 on port 80 at path `/dc?...` with the package name, version, a nonce, and the lifecycle phase. Any machine that resolves @demica/core@99.99.99 from the public registry — typically because an internal build accidentally pulled the public squat instead of the private @demica/core — silently announces itself to the operator of 157.230.17.236, disclosing the installer's egress IP, the presence of the @demica internal namespace in the build, and confirmation that the dependency-confusion attack succeeded. The beacon body is metadata-only (no env/filesystem/credential reads), but the install-time outbound HTTP to a hardcoded attacker-controlled bare IP, fired without consent on default install, is the canonical dependency-confusion exploitation primitive and gives the publisher exactly the reconnaissance signal needed to identify and escalate against vulnerable internal build pipelines.\n","modified":"2026-06-09T18:01:35.127497295Z","published":"2026-06-09T07:50:21Z","database_specific":{"malicious-packages-origins":[{"import_time":"2026-06-09T17:45:47.962589509Z","sha256":"3abd78892d57868223d66ae70f269e5088d5801f5beaa41418146172a3e5e338","source":"amazon-inspector","versions":["99.99.99"],"id":"IN-MAL-2026-005001","modified_time":"2026-06-09T17:16:16Z"},{"source":"amazon-inspector","import_time":"2026-06-09T17:45:48.853323043Z","sha256":"988a83382bca8783111965583f3ba35befbc6d60b40f6f75f49ff332894db14c","versions":["99.99.100"],"id":"IN-MAL-2026-005012","modified_time":"2026-06-09T17:17:13Z"}]},"references":[{"type":"REPORT","url":"https://app.safedep.io/community/malysis/01KTMB3NABY1QVRDFBY2QWYP46"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/@demica/core/v/99.99.99"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/@demica/core/v/99.99.100"}],"affected":[{"package":{"name":"@demica/core","ecosystem":"npm","purl":"pkg:npm/%40demica%2Fcore"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"}]}],"versions":["99.99.99","99.99.100"],"database_specific":{"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/@demica/core/MAL-2026-5349.json","indicators":{"package_integrity":[{"hashes":{"sha512_sri":"sha512-QiL/IkcEvZxsOqY4co1fCCvKtzCKTVQiW+xfIPrChy+zk83RYlKPDXxzGip5qtkukxgoReLq9CLrQzrx0lwebQ==","sha1":"7f5d9652c090672c147931bea7563faf9540805d"},"filename":"core-99.99.99.tgz"}],"evidence_files":[{"path":"canary.js","tlsh":"ba0110df48f2927263fa09cb60a75e7af116d191371bacf0788818151f8e9888274194","sha256":"3f10362a7aad576e8636f36f2df3f3475c1d8db639bc7fef630beaf747c83fb1"}]},"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."}]}}],"schema_version":"1.7.5","credits":[{"name":"Amazon Inspector","contact":["inspector-research@amazon.com"],"type":"FINDER"},{"name":"SafeDep","contact":["https://safedep.io"],"type":"FINDER"}]}