VDB
GCVE-110-OSM-2026-10680
GCVE-110-OSM-2026-10680
Advisory PublishedCVSS 9.6/10
ai-texts-utils@1.0.3 declares a single runtime dependency, 'ai-texts', shipped as a bundledDependency inside the tarball. That bundled module presents a small plaintext toText/normalizeText helper, then appends a heavily obfuscated payload: a 43-entry rotated string array, a custom base64 decoder (F/f), self-defending / debug-protection wrappers around console methods, top-level IIFEs (c() and a()) that execute on module load, and Function()-based reconstruction of the global object followed by a load-time dereference of an encoded entry (const eta=F(0x123)). The obfuscated code runs on require('ai-texts-utils'), which transitively loads ai-texts. The bundled README documents a getOsVersion() export returning platform/release/type/arch and includes require('os') at the top of the file, but the plaintext module.exports only surfaces {toText, normalizeText} — the 'os' import is unreferenced by any readable code, indicating host-fingerprinting logic resides inside the obfuscated tail. String-normalization helpers have no legitimate reason to be wrapped in obfuscator.io-grade string-array rotation, anti-debug routines, and dynamic Function() global capture executing at import time; this shape matches a payload-appended-to-a-benign-module pattern rather than a code-protection use case.
Judge assessment: This looks like a compromised package that uses a benign text-cleaning API as a cover for a malicious bundled dependency loaded at import time. The OSV advisory’s details are corroborated by the package shape: `src/index.js` only exports normal helpers, while the hidden `ai-texts` bundled module is described as containing obfuscator-style string-array rotation, anti-debug wrappers, and `Function()`-based global capture executing on `require('ai-texts-utils')`. The attacker model is a supply-chain implant that fingerprints the host and runs hidden code when consumers import the package, not a legitimate text utility library. The minimal metadata (`missing-description`, `no-repository`, `metadata-minimal`) further fits a throwaway or burner package used to deliver the payload.
ENTRY
src/index.js (main: src/index.js)
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 | ai-texts-utils | all (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.