{"id":"MAL-2026-18375","kind":"package","aliases":["MAL-2026-18375"],"related":[],"title":"Malicious code in @dmangal/curse-dependent-ecto (npm)","description":"---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (28b6b5c8c100680386dbcbbd51dd409f67f0d54701eb0e50232934acc53bf397)\nThe package's binding.gyp contains a GYP command-expansion action that is executed automatically by node-gyp during `npm install`. The embedded `node -e` script runs `grep -rl 'HTB{' /workspace/ /root/ /tmp/ /opt/ /var/ /etc/` across installer-side paths, reads /tmp/scent-trail.jsonl and /workspace/repo/package.json, enumerates every key of process.env and concatenates each key=value pair, and POSTs each of these payloads (prefixed GREP:, FILE:, ALLENV:) to the hardcoded attacker endpoint webhook.site/89bd8fe7-328c-4e6d-970c-4d567b5a48a0. The binding.gyp has no accompanying native source files; its only purpose is to run the embedded exfiltration command. The implausibly high version string (99999.0.1) is consistent with a dependency-confusion lure. Installing this package in a developer workstation or CI environment causes CI secrets, API tokens, and environment-injected credentials, along with workspace file contents and any file containing the HTB{ marker, to be transmitted to an attacker-controlled host.","summary":null,"severity":"critical","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"@dmangal/curse-dependent-ecto","fixed":[],"affected":"= 99999.0.2; = 99999.0.1; = 99999.0.0","ecosystem":"npm"}],"ecosystems":["npm"],"tags":["malicious","package"],"not_affected_if":[],"how_to_check":null,"fix":null,"status":"open","published_at":"2026-10-29T14:53:35+00:00","first_seen_at":"2026-10-29T16:25:02+00:00","triaged_at":"2026-10-29T16:33:22+00:00","updated_at":"2026-10-29T16:33:22+00:00","category":"package","confidence":null,"triage":null,"analyst_status":null,"analyst_note":null,"search":"'-18375':8A,11A '-2026':7A,10A '/89bd8fe7-328c-4e6d-970c-4d567b5a48a0.':103C '/etc':65C '/opt':63C '/root':61C '/tmp':62C '/tmp/scent-trail.jsonl':72C '/var':64C '/workspace':60C '/workspace/repo/package.json':74C '28b6b5c8c100680386dbcbbd51dd409f67f0d54701eb0e50232934acc53bf397':28C '99999.0.1':127C 'accompani':108C 'across':66C 'action':39C 'allenv':95C 'along':156C 'amazon':26C 'amazon-inspector':25C 'api':149C 'attack':99C,174C 'attacker-control':173C 'automat':43C 'binding.gyp':32C,105C 'caus':146C 'ci':144C,147C 'code':2A 'command':37C,121C 'command-expans':36C 'concaten':81C 'confus':134C 'consist':129C 'contain':33C,164C 'content':160C 'control':175C 'credenti':155C 'depend':133C 'dependency-confus':132C 'detail':17C 'develop':141C 'dmangal/curse-dependent-ecto':4A,12A 'e':54C 'edit':20C 'embed':52C,119C 'endpoint':100C 'enumer':75C 'environ':145C,153C 'environment-inject':152C 'everi':76C 'execut':42C 'exfiltr':120C 'expans':38C 'file':94C,111C,159C,163C 'grep':57C,93C 'gyp':35C,47C 'hardcod':98C 'high':124C 'host':176C 'htb':59C,166C 'implaus':123C 'inject':154C 'inspector':27C 'instal':50C,68C,136C 'installer-sid':67C 'key':77C,83C 'line':23C 'lure':135C 'mal':6A,9A 'malici':1A,13B 'marker':167C 'nativ':109C 'node':46C,53C 'node-gyp':45C 'npm':5A,49C 'packag':14B,30C,138C 'pair':85C 'path':70C 'payload':91C 'per':15C 'post':87C 'prefix':92C 'process.env':79C 'purpos':114C 'read':71C 'rl':58C 'run':56C,117C 'script':55C 'secret':148C 'side':69C 'sourc':16C,24C,110C 'string':126C 'token':150C 'transmit':170C 'valu':84C 'version':125C 'webhook.site':102C 'webhook.site/89bd8fe7-328c-4e6d-970c-4d567b5a48a0.':101C 'workspac':158C 'workstat':142C","nicknames":[],"mitigations":[],"who_affected":null,"tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":null,"audience":null,"plain_action":null,"first_public_at":"2026-10-29T14:53:35+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"osv-malicious","external_id":"MAL-2026-18375","url":"https://osv.dev/vulnerability/MAL-2026-18375","severity":"critical","published_at":"2026-10-29T14:53:35+00:00","modified_at":"2026-10-29T15:30:05+00:00","first_seen_at":"2026-10-29T16:25:02+00:00","fetched_at":"2026-10-29T16:25:02+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"}