{"id":"MAL-2026-18449","kind":"package","aliases":["MAL-2026-18449"],"related":[],"title":"Malicious code in ms-client-portal (npm)","description":"ms-client-portal is a dependency-confusion package with no functional code; its README says the name is an internal project name exposed in the production web bundle of a health-sector client portal. Its preinstall and postinstall scripts each run a `node -e` one-liner on npm install that sends an HTTP GET to `http://38.242.235.206/depconf/ms-client-portal/preinstall` (and `/postinstall`) with the user name (`USER` or `USERNAME`), hostname and working directory in the query string. The npm account amahrou1a published versions 1.0.0 and 10.0.0 on 2026-10-31, and earlier the same day two more packages, internal-renderers and pandafortunerush, with the same beacon to the same server.","summary":null,"severity":"critical","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"ms-client-portal","fixed":[],"affected":"= 1.0.0; = 10.0.0","ecosystem":"npm"}],"ecosystems":["npm"],"tags":["malicious","package"],"not_affected_if":[],"how_to_check":null,"fix":null,"status":"open","published_at":"2026-10-31T13:10:23+00:00","first_seen_at":"2026-11-02T06:51:32+00:00","triaged_at":"2026-11-02T06:53:12+00:00","updated_at":"2026-11-02T06:53:35+00:00","category":"package","confidence":null,"triage":null,"analyst_status":null,"analyst_note":null,"search":"'-10':110C '-18449':11A,14A '-2026':10A,13A '-31':111C '/depconf/ms-client-portal/preinstall':81C '/postinstall':83C '1.0.0':105C '10.0.0':107C '2026':109C '38.242.235.206':80C 'account':101C 'amahrou1a':102C 'beacon':128C 'bundl':50C 'client':6A,17A,23C,56C 'code':2A,34C 'confus':29C 'day':116C 'depend':28C 'dependency-confus':27C 'directori':94C 'e':67C 'earlier':113C 'expos':45C 'function':33C 'get':78C 'health':54C 'health-sector':53C 'hostnam':91C 'http':77C 'instal':73C 'intern':42C,121C 'internal-render':120C 'liner':70C 'mal':9A,12A 'malici':1A,19B 'ms':5A,16A,22C 'ms-client-port':4A,21C 'ms-client-portal':15A 'name':39C,44C,87C 'node':66C 'npm':8A,72C,100C 'one':69C 'one-lin':68C 'packag':20B,30C,119C 'pandafortunerush':124C 'portal':7A,18A,24C,57C 'postinstal':61C 'preinstal':59C 'product':48C 'project':43C 'publish':103C 'queri':97C 'readm':36C 'render':122C 'run':64C 'say':37C 'script':62C 'sector':55C 'send':75C 'server':132C 'string':98C 'two':117C 'user':86C,88C 'usernam':90C 'version':104C 'web':49C 'work':93C","nicknames":[],"mitigations":[],"who_affected":null,"tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":null,"audience":null,"plain_action":null,"pkeys":["msclientportal"],"ptokens":["client","ms","portal"],"labels":["critical","malicious","npm","package"],"first_public_at":"2026-10-31T13:10:23+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"osv-malicious","external_id":"MAL-2026-18449","url":"https://osv.dev/vulnerability/MAL-2026-18449","severity":"critical","published_at":"2026-10-31T13:10:23+00:00","modified_at":"2026-11-02T05:45:05+00:00","first_seen_at":"2026-11-02T06:51:32+00:00","fetched_at":"2026-11-02T06:51:32+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}