MAL-2026-17301 Malicious code in fs-commons (npm)
Malicious package
Published
MAL-2026-17301 is a malicious package: fs-commons (npm). Every version was published to cause harm.
Task:
1. Search this repository's dependency manifests and lockfiles for the package, including transitive dependencies.
2. If it is present, remove it, regenerate the lockfile with the project's package manager, and replace whatever it was used for.
3. List any CI runners, developer machines or containers that installed it, so their secrets can be rotated.
4. If the package is not used anywhere, say so and change nothing.
Reference: https://insights.sbomify.com/MAL-2026-17301/ (Markdown: https://insights.sbomify.com/MAL-2026-17301/index.md)
- Package
- fs-commons
- Registry
- npm
What is MAL-2026-17301?
MAL-2026-17301 is a malicious package in fs-commons, published on 29 Sep 2026.
Official description
The package presents itself as a filesystem/data-helper library, but its exported getTransactions()/load_transaction_data() functions are a two-file dynamic-code loader. index.js hides the identifiers 'Function', 'require', 'process', 'Buffer', and 'setTimeout' behind a split-string array and obtains the Function constructor indirectly via globalThis.constructor.constructor, defeating static review. At call time it reads the sibling file models.js, which is disguised as an array of product-record objects but whose
mark fields are base64 ciphertext. loadConfig()/processData() sort the records by id, concatenate every mark, apply a per-count Caesar shift, base64-decode the result, and pass the resulting source to the Function constructor with Buffer, require, and process injected, then invoke it. Any consumer that requires fs-commons and calls getTransactions() executes attacker-supplied code with full Node privileges on the host process. The obfuscation, the indirect Function-constructor acquisition, and the disguising of the payload as product metadata in a sibling file have no legitimate purpose for a data-helper library and are the fingerprint of a supply-chain remote-code-execution package.What should I do about MAL-2026-17301?
Remove the package from your dependencies and lockfiles, then rotate any secrets on machines where it was installed.