VDB
GCVE-110-OSM-2026-10749
GCVE-110-OSM-2026-10749
Advisory PublishedCVSS 9.6/10
matrixflow-js@3.2.1 is a typosquat/repackage of ml-matrix (the UMD global is mlMatrix; homepage matrixflow-js.github.io does not correspond to the real ml-matrix project). Its main module matrix.js routes caller-supplied input from the exported solve() code path into runMatrixFunction in src/common.js. src/common.js hides its crypto/fs/path/child_process requires behind an obfuscated string-array; when SHA-256 of the passed input matches a hardcoded hex digest, it uses scryptSync-derived keying to AES-256-GCM-decrypt the sibling file src/statMatrix.min.js, decodes a base64 blob to recover the string 'child_process', writes the plaintext to a temp file, and spawns node on it in a detached, hidden process (detached:true, windowsHide:true, stdio ignored). Two sibling files stage the payload: src/statMatrix.min.js and src/utilMatrix.min.d.js are pure base64 blobs decoding to opaque AES-GCM ciphertext, and src/statMatrix.min.d.js bundles a full ethers.js (BN, secp256k1, wallet code) under a name mimicking a TypeScript declaration file. An Ethereum wallet SDK plus encrypted opaque payloads in a package advertised for dense matrix computation indicates crypto-wallet-targeting malware. Any downstream application that ships this package and invokes solve() on attacker-chosen input executes the concealed, unauditable payload on end-user hosts.
Judge assessment: This looks like a typosquat/repackage of a matrix library that hides a loader and payload execution path for an attacker model targeting downstream apps that call its exported API with chosen input. The OSV advisory is corroborated by the static evidence: `src/common.js` has dynamic require/import behavior, and the package includes a massive obfuscated sibling `src/statMatrix.min.d.js` that was too large to deobfuscate, which is a strong concealment signal rather than a benign minified bundle. The presence of a `this.network` C2 IOC alongside the suspicious staged files, combined with a brand-new publisher account and one-package history, is consistent with malicious delivery rather than normal linear-algebra code. I would treat this as a concealed loader meant to execute hidden payloads on victim machines and submit it as malicious.
ENTRY
matrix.js (main: matrix.js)
DESTINATION
- 1 c2 (domains)
- 2 exfil (ethereumAddresses)
(values recorded in verified_iocs)
ADDITIONAL FINDINGS
- Brand New Package
- Very New NPM Publisher Account
Weaknesses (CWE)
CWE-506Embedded Malicious Code
Risk Scores
CVSS 3.1
9.6/10
Critical · CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H
Affected Products
| Vendor | Product | Versions | Platforms |
|---|---|---|---|
| unknown | matrixflow-js | 3.2.1 (affected) | — |
Aliases
Browse GCVE Records
3,587 records in the GCVE database · Updated September 5, 2026
No matching records found.
Explore Further
Investigate this vulnerability in the interactive console or download the raw GCVE record.