{"id":"MAL-2026-17872","revision":null,"records":[{"revision":"f9735fc19c3d45b9b805fce4f2972998","observedAt":"2026-10-24T13:17:17.793+00:00","statement":{"source":"osv","id":"MAL-2026-17872","aliases":[],"title":"Malicious code in @newspage/lib-ng-async-routes-ui (npm)","description":"npm user 'priyashareek' published this package in a dependency confusion campaign against the internal scopes @accenturecodefoundry and @newspage. The publisher used 99.99.x versions to outrank the internal packages. 0.0.0-stage and 99.99.1 are empty placeholders. In version 99.99.4, index.js sends an HTTPS GET to attacker-controlled host accenture-npm.azurewebsites.net (/async). The same publisher's @accenturecodefoundry/mfe-pot-shared-ui-scds-core calls back to that host. The 'preinstall' script in these versions is empty; the publisher put 'node index.js || true' in the 'main' field instead, likely by mistake. Node.js can't resolve that 'main' target and falls back to index.js, so the beacon fires when code requires or imports the package, not during install.\n\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (6d6ffc152b9babe9a8d906d8aea7e08ae4b64d3171c98157456888c4174284d7)\n@newspage/lib-ng-async-routes-ui@99.99.4 is a dependency-confusion artifact. The scoped name impersonates an internal-sounding namespace, and the implausibly high version (99.99.4) is the standard technique for winning resolution against a lower-versioned private package of the same name. On require(), the main module unconditionally issues an HTTPS GET to the hardcoded host accenture-npm.azurewebsites.net at the path /async, causing any environment that resolves and loads the package to beacon out to that endpoint. The outbound request discloses source IP and request metadata to the operator of that Azure Web App, confirming to an external party that an internal build or developer machine has pulled a package under this scope. No first-party relationship or caller consent exists; the destination is an external Azure Web App, not an Accenture-controlled domain.\n","state":0,"publishedAt":"2026-10-13T00:00:00+00:00","modifiedAt":"2026-10-16T07:15:08.4474233+00:00","affected":[{"ecosystem":"npm","name":"@newspage/lib-ng-async-routes-ui","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0"}]}],"versions":["99.99.42","99.99.4"],"rawVersionEvidence":null}],"metrics":[],"references":["https://www.npmjs.com/package/@newspage/lib-ng-async-routes-ui","https://www.npmjs.com/package/@newspage/lib-ng-async-routes-ui/v/99.99.42","https://www.npmjs.com/package/@newspage/lib-ng-async-routes-ui/v/99.99.4"],"sourceUrl":"https://osv.dev/vulnerability/MAL-2026-17872","license":"OSV · upstream source license applies","key":"osv:MAL-2026-17872","identifiers":["MAL-2026-17872"]},"retained":false,"historicalAffected":[]}],"coverage":[{"source":"cisa-kev:global","scope":"Complete CISA KEV catalog; all vendors. Missing entries do not establish absence of exploitation.","generation":"2026-11-09T11:02:29.3269367+00:00","complete":true,"records":1769,"lastAttemptAt":"2026-11-09T11:02:29.3269367+00:00","lastSuccessAt":"2026-11-09T11:02:35.5033455+00:00","error":null,"lastVerifiedAt":"2026-11-09T11:02:35.5033494+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"cve-program","scope":"Official CVE Program baseline and cumulative hourly delta; all vendors, published and rejected records","generation":"cve-24e6fde7b744113daefb8f6135035fb8a5c69c9617c9c0d40574a0376532ffd3-8a359c2c34b32e9d5ae6bfb0dfbe77525737d387cb73ffa1dc9d8560ac4a618d","complete":true,"records":421363,"lastAttemptAt":"2026-11-09T11:02:25.6637161+00:00","lastSuccessAt":"2026-11-09T11:02:25.604523+00:00","error":null,"lastVerifiedAt":"2026-11-09T11:02:25.6637161+00:00","snapshotPublishedAt":"2026-11-09T10:27:35+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"euvd","scope":"Rolling EUVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global EUVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-776f160a8a4245ff82395b78f580cf00","complete":true,"records":13655,"lastAttemptAt":"2026-11-09T11:14:40.9797117+00:00","lastSuccessAt":"2026-11-09T11:14:40.976+00:00","error":null,"lastVerifiedAt":"2026-11-09T11:14:40.976+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13707,"expectedIdentifiers":13707,"failedIdentifiers":0},{"source":"first-epss:nuget","scope":"FIRST EPSS for explicit CVE aliases in the collected public NuGet archive. Not a global EPSS backfill.","generation":"2026-11-09T11:02:29.3269367+00:00","complete":true,"records":1096,"lastAttemptAt":"2026-11-09T11:02:29.3269367+00:00","lastSuccessAt":"2026-11-09T11:02:35.5044085+00:00","error":null,"lastVerifiedAt":"2026-11-09T11:02:35.5044088+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"nvd","scope":"Rolling NVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global NVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-4dc74a26d06148ffa8eb6751d602315d","complete":true,"records":13667,"lastAttemptAt":"2026-11-09T11:02:37.2248176+00:00","lastSuccessAt":"2026-11-09T10:04:35.272+00:00","error":null,"lastVerifiedAt":"2026-11-09T10:04:35.272+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13707,"expectedIdentifiers":13707,"failedIdentifiers":0},{"source":"osv:Go","scope":"Complete OSV Go ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"go-980593e6977a6d1b4fb1eed5a1ffe88a468736f89f0a06f710924ad59132c023","complete":true,"records":9914,"lastAttemptAt":"2026-11-09T11:02:28.1148102+00:00","lastSuccessAt":"2026-11-08T11:07:07.068788+00:00","error":null,"lastVerifiedAt":"2026-11-09T11:02:28.1148102+00:00","snapshotPublishedAt":"2026-11-08T11:02:46+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:NuGet","scope":"Complete OSV NuGet ecosystem archive, including GitHub Advisory Database records; NuGet version matching only","generation":"nuget-fde804134ecdda0ddd5ff5c26ee1fff5a6fa659311f7ef2e51c6ad54964db0e2","complete":true,"records":1971,"lastAttemptAt":"2026-11-09T11:02:27.3222548+00:00","lastSuccessAt":"2026-11-06T19:03:17.0399903+00:00","error":null,"lastVerifiedAt":"2026-11-09T11:02:27.3222548+00:00","snapshotPublishedAt":"2026-11-06T18:17:57+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:crates.io","scope":"Complete OSV crates.io ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"crates.io-747b24005f13ffe3f133ae77dfb12ae3145f2c7aed5cfebb91eb943ceb4daeb6","complete":true,"records":3060,"lastAttemptAt":"2026-11-09T11:02:28.9741191+00:00","lastSuccessAt":"2026-11-09T10:04:33.8957851+00:00","error":null,"lastVerifiedAt":"2026-11-09T11:02:28.9741191+00:00","snapshotPublishedAt":"2026-11-09T10:03:05+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:npm","scope":"Complete OSV npm ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"npm-e6e6ac3eaece246ff08884368fe1dc99d4d393571e77c126c8f4d38d66697688","complete":true,"records":231297,"lastAttemptAt":"2026-11-09T11:02:27.67422+00:00","lastSuccessAt":"2026-11-09T10:04:27.0059369+00:00","error":null,"lastVerifiedAt":"2026-11-09T11:02:27.67422+00:00","snapshotPublishedAt":"2026-11-09T09:33:10+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null}]}