{"id":"GHSA-rpgc-c7g7-g8fh","kind":"package","aliases":["GHSA-rpgc-c7g7-g8fh","MAL-2026-17235"],"related":[],"title":"Malicious code in items-validator (npm)","description":"---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (a8e49b1abd7c566b17104c5a2823251df2ca253a0fa509d7c19db1c1942ad13d)\nOn require, index.js invokes initializeDaemon() at top level, which uses spawn('node', [lib/check-items.js], { detached: true, stdio: 'ignore' }) followed by child.unref() to launch a persistent background process independent of the parent. The daemon HTTP-GETs a JSON payload from the hardcoded endpoint https://game.spawnrealm.com/api/item-realtime?key=abcdef123456 and passes payload.code to `new Function('require', 'module', payload.code)`, executing server-supplied JavaScript inside the installer's Node process with full `require` access. An RSA signature check is performed against a public key bundled in the package (crypto-config.js), so the author controls both the signing key and the verifier and the check provides no independent integrity guarantee. Anyone controlling game.spawnrealm.com — including via DNS or TLS — can run arbitrary code as the installing user for the lifetime of the host process. The package is advertised as a validator library, and this remote-code-loader behavior is undisclosed and unrelated to the stated purpose.\n\n## Source: ghsa-malware (4d7809ec0ad9a22799a0cb4757d4001d12da258f174da823708c5b3747b33d56)\nAny computer that has this package installed or running should be considered fully compromised. All secrets and keys stored on that computer should be rotated immediately from a different computer. The package should be removed, but as full control of the computer may have been given to an outside entity, there is no guarantee that removing the package will remove all malicious software resulting from installing it.","summary":null,"severity":"critical","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"items-validator","fixed":[],"affected":"all versions","ecosystem":"npm"}],"ecosystems":["npm"],"tags":["malicious","package"],"not_affected_if":[],"how_to_check":null,"fix":null,"status":"open","published_at":"2026-09-28T22:03:57+00:00","first_seen_at":"2026-10-26T20:51:46+00:00","triaged_at":"2026-10-26T21:08:21+00:00","updated_at":"2026-10-26T21:08:21+00:00","category":"package","confidence":null,"triage":null,"analyst_status":null,"analyst_note":null,"search":"'-17235':15A '-2026':14A '/api/item-realtime?key=abcdef123456':84C '4d7809ec0ad9a22799a0cb4757d4001d12da258f174da823708c5b3747b33d56':193C 'a8e49b1abd7c566b17104c5a2823251df2ca253a0fa509d7c19db1c1942ad13d':39C 'access':108C 'advertis':169C 'amazon':37C 'amazon-inspector':36C 'anyon':143C 'arbitrari':153C 'author':126C 'background':64C 'behavior':180C 'bundl':119C 'c7g7':11A,19A 'check':112C,137C 'child.unref':59C 'code':2A,154C,178C 'compromis':207C 'comput':195C,215C,223C,235C 'consid':205C 'control':127C,144C,232C 'crypto-config.js':123C 'daemon':71C 'detach':53C 'detail':28C 'differ':222C 'dns':148C 'edit':31C 'endpoint':81C 'entiti':243C 'execut':94C 'follow':57C 'full':106C,231C 'fulli':206C 'function':90C 'g8fh':12A,20A 'game.spawnrealm.com':83C,145C 'game.spawnrealm.com/api/item-realtime?key=abcdef123456':82C 'get':74C 'ghsa':9A,17A,191C 'ghsa-malwar':190C 'ghsa-rpgc-c7g7-g8fh':8A,16A 'given':239C 'guarante':142C,247C 'hardcod':80C 'host':164C 'http':73C 'http-get':72C 'ignor':56C 'immedi':219C 'includ':146C 'independ':66C,140C 'index.js':42C 'initializedaemon':44C 'insid':99C 'inspector':38C 'instal':101C,157C,200C,259C 'integr':141C 'invok':43C 'item':5A 'items':22A 'items-valid':4A 'items-validator':21A 'javascript':98C 'json':76C 'key':118C,131C,211C 'launch':61C 'level':47C 'lib/check-items.js':52C 'librari':173C 'lifetim':161C 'line':34C 'loader':179C 'mal':13A 'malici':1A,24B,255C 'malwar':192C 'may':236C 'modul':92C 'new':89C 'node':51C,103C 'npm':7A 'outsid':242C 'packag':25B,122C,167C,199C,225C,251C 'parent':69C 'pass':86C 'payload':77C 'payload.code':87C,93C 'per':26C 'perform':114C 'persist':63C 'process':65C,104C,165C 'provid':138C 'public':117C 'purpos':188C 'remot':177C 'remote-code-load':176C 'remov':228C,249C,253C 'requir':41C,91C,107C 'result':257C 'rotat':218C 'rpgc':10A,18A 'rsa':110C 'run':152C,202C 'secret':209C 'server':96C 'server-suppli':95C 'sign':130C 'signatur':111C 'softwar':256C 'sourc':27C,35C,189C 'spawn':50C 'state':187C 'stdio':55C 'store':212C 'suppli':97C 'tls':150C 'top':46C 'true':54C 'undisclos':182C 'unrel':184C 'use':49C 'user':158C 'valid':6A,172C 'validator':23A 'verifi':134C 'via':147C","nicknames":[],"mitigations":[],"who_affected":null,"tier":null,"verified":{},"analyst_revisit_at":null,"first_public_at":"2026-09-28T22:03:57+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"osv-malicious","external_id":"MAL-2026-17235","url":"https://osv.dev/vulnerability/MAL-2026-17235","severity":"critical","published_at":"2026-09-28T22:03:57+00:00","modified_at":"2026-10-19T17:34:26+00:00","first_seen_at":"2026-10-26T20:51:46+00:00","fetched_at":"2026-10-26T20:51:46+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"}