{"id":"MAL-2026-15557","summary":"Malicious code in mfacord (npm)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (6e8426c0e4e80e0bd9839d8517e060bd923775b8a3e100aab57e18b4f47c970e)\nOn require('mfacord'), index.js loads lib/cache.js, which on win32 decodes a hardcoded URL (https://limbomail.com/api/attachment/r_Ea6rT_kGfT.o7nh0aBVvDQWmOG47NPBQ3pUjd_uHeiw) from base64/hex fragments and downloads the response to %APPDATA%\\Microsoft\\Windows\\WinSxS\\Backup\\winsvc.js, then launches it via a generated wsvc.vbs invoked through wscript.exe spawning node.exe. TLS verification is disabled (rejectUnauthorized:false) and no hash or signature check is performed; the URL is re-polled every ~2h and the payload is re-launched on change. lib/totp.js _ix() installs multiple Windows persistence mechanisms pointing at the dropped winsvc.js: an HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run value 'WinSvcHost', an HKCU\\Environment 'UserInitMprLogonScript' logon script, a scheduled task at \\Microsoft\\Windows\\Shell\\WinSvcHost with an onlogon trigger, and a wsvc.vbs dropped into the user's Startup folder, with files marked hidden+system under Microsoft-lookalike names. Sensitive identifiers — 'child_process', 'https', 'wscript.exe', 'APPDATA', the Microsoft/Windows/WinSxS/Backup path segments, 'winsvc.js', 'node.exe', the limbomail.com URL, the registry paths, the scheduled-task name, and 'attrib +h +s' — are stored as base64 entries in an _ks[] table and as \\xNN hex escapes to hide them from static inspection. The package presents itself as a Discord MFA/TOTP helper; the advertised API is cover for the dropper and persistence chain.\n","modified":"2026-08-31T18:31:23.368166426Z","published":"2026-08-29T02:12:32Z","database_specific":{"malicious-packages-origins":[{"import_time":"2026-08-29T02:22:20.020869192Z","modified_time":"2026-08-29T02:12:32Z","sha256":"6e8426c0e4e80e0bd9839d8517e060bd923775b8a3e100aab57e18b4f47c970e","source":"amazon-inspector","versions":["1.0.2"],"id":"IN-MAL-2026-019130"},{"id":"IN-MAL-2026-019131","import_time":"2026-08-29T02:22:20.166420316Z","modified_time":"2026-08-29T02:12:41Z","sha256":"dc8a8f485863642f8e0b605cb6fef6793b316153d5f55f5b38fbd7061844581d","source":"amazon-inspector","versions":["1.0.3"]},{"modified_time":"2026-08-31T18:01:28Z","sha256":"2fded69d8711427e30b0051263eb2538e2c282792e2592f12cf801513ae6309c","source":"amazon-inspector","versions":["1.0.4"],"id":"IN-MAL-2026-019298","import_time":"2026-08-31T18:22:29.260312686Z"},{"import_time":"2026-08-31T18:22:30.012921712Z","modified_time":"2026-08-31T18:03:47Z","sha256":"fa169f6ec36ce9013c16d69e0a3ae4aed4dfcd79d8e0e13018a2ae222f57dd1d","source":"amazon-inspector","versions":["1.0.0"],"id":"IN-MAL-2026-019314"}]},"references":[{"type":"PACKAGE","url":"https://www.npmjs.com/package/mfacord/v/1.0.2"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/mfacord/v/1.0.3"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/mfacord/v/1.0.4"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/mfacord/v/1.0.0"}],"affected":[{"package":{"name":"mfacord","ecosystem":"npm","purl":"pkg:npm/mfacord"},"versions":["1.0.2","1.0.3","1.0.4","1.0.0"],"database_specific":{"cwes":[{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"},{"description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code","cweId":"CWE-506"},{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"},{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"}],"indicators":{"evidence_files":[{"tlsh":"afb1d04a25f2a03751ab55ff5b4f81097227e4433148f986bf6cf2883fa2128c6a75d8","path":"lib/cache.js","sha256":"ed894e38f515bd03e43a7eccec3917c5317124270d2fd22b536bf23696fc9a0b"},{"tlsh":"eb71fd9438f1e137229e85c3be279cb46167d0b17182f087ab6cb5ce1fda41bc6664d8","path":"lib/totp.js","sha256":"8db6df3b347b9487cd74147360538a2cc10297ea891e5c7f1f0c3b99bede6678"},{"sha256":"2f167d3da6655f882f6ba1d8a4ec69728342100a02e35e7aa0fc1a133ec05105","tlsh":"ce3110057cd6b51c458a93f099afcc0a705ac822238a9a30725dda8e7fb5a38823684d","path":"lib/crypto.js"}],"package_integrity":[{"filename":"mfacord-1.0.2.tgz","hashes":{"sha1":"8b8e63f954337ec22598ad4b18534bdfeeea8f81","sha512_sri":"sha512-B1fxDQSlTnCOVzT0tWaDqgLOXGWX2jzUJY0dQ1h8hcOypHrDmM75CtnW7Cq6LbrIXsjmanej1R8rZxCtAvcU6Q=="}}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/mfacord/MAL-2026-15557.json"}}],"schema_version":"1.9.0","credits":[{"name":"Amazon Inspector","contact":["inspector-research@amazon.com"],"type":"FINDER"}]}