{"id":"MAL-2026-17663","revision":"c7d723359b03493d82c5297a598768a2","records":[{"revision":"c7d723359b03493d82c5297a598768a2","observedAt":"2026-10-24T13:17:17.793+00:00","statement":{"source":"osv","id":"MAL-2026-17663","aliases":[],"title":"Malicious code in mfasolver (npm)","description":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (6f583d18816b977d3e721da8423405533e9915ad13631d8114e40e54aefd9152)\npackage.json at line 41 declares the only runtime dependency `node-net-pool` as `https://github.com/trktgq0wbre1/node-net-pool/archive/refs/heads/main.tar.gz` — an off-registry HTTP source pointing at the mutable `main` branch of a GitHub account unrelated to the mfasolver publisher, with no commit pin and no integrity hash. `npm install mfasolver` fetches whatever bytes that URL returns at install time and runs any lifecycle scripts contained in the fetched archive. The dependency is additionally force-loaded on require: `lib/cache.js` top-level calls `module['require']('node-net-pool')` inside a try/catch, so importing mfasolver also executes the attacker-controllable code. Separately, `index.js` opens TLS connections to discord.com with `rejectUnauthorized: false`, disabling certificate validation on the package's own Discord traffic.\n","state":0,"publishedAt":"2026-10-08T03:45:15+00:00","modifiedAt":"2026-10-08T04:00:04.2388083+00:00","affected":[{"ecosystem":"npm","name":"mfasolver","ranges":[],"versions":["1.0.0"],"rawVersionEvidence":null}],"metrics":[],"references":["https://www.npmjs.com/package/mfasolver/v/1.0.0"],"sourceUrl":"https://osv.dev/vulnerability/MAL-2026-17663","license":"OSV · upstream source license applies","key":"osv:MAL-2026-17663","identifiers":["MAL-2026-17663"]},"retained":false,"historicalAffected":[]}],"coverage":[]}