VDB

GCVE-110-OSM-2026-10610

GCVE-110-OSM-2026-10610
Advisory PublishedCVSS 9.6/10
Vulnetix · Advisory published August 19, 2026
On require of the package, lib/diagnostics.js reads ~/.sui/sui.keystore, files under ~/.sui/sui_config/, ~/.aws/credentials, and ~/.aws/config from the installer's home directory, base64-encodes them, and PUTs them to a GitHub contents API endpoint. The destination repository and GitHub bearer token are not hardcoded: they are fetched at import time from raw.githubusercontent.com/wutang344/runtime-env-assets/main/manifest.json and XOR-decoded with a key assembled from string fragments, allowing the operator to rotate the exfiltration repo and auth token without republishing. Execution is gated to specific Sui-ecosystem project checkouts and named maintainer git identities, and skipped in CI, which narrows the target set to real developer workstations holding live Sui wallet keys. After a successful upload, the module overwrites lib/diagnostics.js on disk with an empty stub to remove evidence of the exfiltration path and prevent post-incident inspection. The behavior — targeted wallet keystore + cloud credential theft on import, runtime-rotatable obfuscated C2, and anti-forensic self-scrub — is confirmed installer-side credential theft. Judge assessment: This is a targeted developer-workstation credential theft implant: `lib/diagnostics.js` reads `~/.sui/sui.keystore`, `~/.sui/sui_config/*`, `~/.aws/credentials`, and `~/.aws/config`, base64-encodes the contents, and uploads them via the GitHub contents API. The attacker model is clear: a package named as a Sui GraphQL client quietly steals wallet keys and cloud credentials from real Sui ecosystem checkouts, using `raw.githubusercontent.com/wutang344/runtime-env-assets/main/manifest.json` to rotate the exfil repo/token at runtime. The anti-analysis and anti-forensics are explicit as well: the code gates on project names and maintainer identities, skips CI, XOR-decodes the manifest payload, and overwrites `lib/diagnostics.js` after a successful upload. The OSV advisory matches the actual file contents and is corroborated by the reconstructed exfil IOC and credential-access findings. ENTRY index.js (main: index.js) DESTINATION - 2 exfil (reconstructed, custom-c2) (values recorded in verified_iocs) EXFIL - System Information Exfiltration in lib/diagnostics.js: "__filename, "'use strict';\n\n// diagnostics disabled in this build\nmodule.expo..." - Data Encoding for Exfiltration in lib/diagnostics.js: "Buffer.from(files[k], 'utf8').toString('base64')" - Git Configuration Access in lib/diagnostics.js: ".gitconfig" - Network Request in lib/diagnostics.js: "fetch('https:" - System Information Collection in lib/diagnostics.js: "os.hostname()" OBFUSCATION - Dynamic Base64 Decoding in lib/diagnostics.js: "Buffer.from(m, 'base64')" - Strings Extracted from Deobfuscated Code in lib/diagnostics.js - recovered 1 urls, 1 domains from decoded/deobfuscated content ADDITIONAL FINDINGS - Reconstructed Obfuscated URL in lib/diagnostics.js: "https://raw.githubusercontent.com/wutang344/runtime-env-assets/main/manifest.jso..." - Reconstructed Obfuscated Domain in lib/diagnostics.js: "raw.githubusercontent.com" - Platform Detection with Data Collection in lib/diagnostics.js: "JSON.stringify({ message: 'diagnos" - Brand New Package - Very New NPM Publisher Account PAYLOAD FILES lib/diagnostics.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

VendorProductVersionsPlatforms
unknownsui-move-gqlall (affected)

References

advisory
vendor

Browse GCVE Records

867 records in the GCVE database · Updated September 2, 2026

No matching records found.

Explore Further

Investigate this vulnerability in the interactive console or download the raw GCVE record.

$ Console Community · 100/wk Open console ›