VDB

GCVE-110-OSM-2026-9218

GCVE-110-OSM-2026-9218
Advisory PublishedCVSS 9.6/10
Vulnetix · Advisory published July 28, 2026
This package exhibits the FNOS infostealer attacker model: it targets AI developers using Claude Code by embedding a postinstall hook that patches dependency installers, spawns detached background processes with suppressed I/O (bin/lib/auth.mjs, src/main/server.ts), writes persistence to .bashrc (bin/lib/aikey.mjs), and exfiltrates environment variables, git config, and platform info. The smoking-gun IOC is the literal Feishu bot webhook URL `https://open.feishu.cn/open-apis/bot/v2/hook/43a9288c-64b5-4344-9b8f-f27bf75b10ca` in src/main/telemetry/larkCredentials.ts, which matches the FNOS malware family's canonical C2 channel. Two hardcoded Chinese IP literals (47.112.24.153 and 159.75.231.98) corroborate server-side infrastructure. The package's deep integration with the .claude directory tree — reading project configs and session data — confirms it is specifically targeting Claude Code users' AI API keys and credentials. The combination of install-time hook, stealth persistence, env-var and git-config exfil, and Feishu webhook C2 maps cleanly to the FNOS/supply-chain infostealer playbook. ENTRY bin/postinstall.mjs (install-hook: node ./bin/postinstall.mjs) - Hidden NPM Install in bin/lib/runtime.mjs - Hidden NPM Install in bin/lib/update.mjs - Install Hook Executes Local JS File in package.json PERSISTENCE - Startup Persistence in bin/lib/aikey.mjs: ".bashrc" - Startup Persistence in bin/lib/larkCli.mjs: ".profile" - Startup Persistence in bin/lib/navigationCommand.mjs: ".profile" - Startup Persistence in dist-renderer/assets/treemap-GDKQZRPO-CBqWOjcZ.js: ".profile" - Startup Persistence in src/main/utils/shellEnv.ts: ".zshrc" DESTINATION - reconstructed: https://api.github.com/repos/yancyuu/Hermit/releases (primary, reconstructed) in dist/server.bundle.mjs - custom-c2: api.github.com (reconstructed) in dist/server.bundle.mjs - custom-c2: https://ghproxy.net/ (plaintext) in bin/lib/runtime.mjs - custom-c2: https://gh-proxy.com/\uFF09 (plaintext) in dist/server.bundle.mjs - custom-c2: https://yancyuu.github.io/Hermit/ (plaintext) in dist/server.bundle.mjs - custom-c2: https://open.larksuite.com/open-apis/authen/v2/oauth/token (plaintext) in dist/server.bundle.mjs - custom-c2: https://open.feishu.cn/open-apis/authen/v2/oauth/token (plaintext) in dist/server.bundle.mjs - custom-c2: http://engelschall.com (plaintext) in dist-renderer/assets/cytoscape.esm-DsxaTqgk.js (+12 more) EXFIL - Environment Variable Exfiltration in bin/lib/auth.mjs: "process.env.OPENHERMIT_AUTH_OPEN_BROWSER || process.env.OPENHERMIT_OAUTH_OPEN_BR..." - Environment Variable Exfiltration in bin/lib/env.mjs: "process.env.HERMIT_NO_HERMIT_BRIDGE === '1'; export const hermitHome = process.e..." - Environment Variable Exfiltration in bin/lib/exitGuard.mjs: "process.env.AGENTCLI_EXIT_DELAY_MS ?? '', 10); // 100ms suffices for the bare-fe..." - Corporate Environment Targeting in bin/lib/tokenDistribution.mjs: "tModelApiIds) — the full catalog includes // monitoring/test" - Environment Variable Exfiltration in dist/server.bundle.mjs: "process.env.HERMIT_LOG_LEVEL ?? "warn" }, disableRequest" - Corporate Environment Targeting in dist-renderer/assets/cytoscape.esm-DsxaTqgk.js: "tMode:!1,test" - Environment Variable Exfiltration in src/main/server.ts: "process.env.HERMIT_LOG_LEVEL ?? 'warn' }, disableRequest" - Corporate Environment Targeting in src/renderer/components/runtime/ProviderRuntimeSettingsDialog.tsx: "tModels = Object.fromEntries( Object.entries(form.agentModels).filter" (+86 more) OBFUSCATION - Dynamic Base64 Decoding in dist/server.bundle.mjs: "Buffer.from(ciphertext, "base64")" - Dynamic Base64 Decoding in dist/telemetry-worker.bundle.mjs: "Buffer.from(s, "base64")" - Obfuscation: function to array replacements in dist-renderer/assets/architectureDiagram-VXUJARFQ-Bece0RIk.js - Dynamic Base64 Decoding in dist-renderer/assets/cytoscape.esm-DsxaTqgk.js: "atob(r)" - Obfuscation: function to array replacements in dist-renderer/assets/cytoscape.esm-DsxaTqgk.js - Obfuscation: function to array replacements in dist-renderer/assets/haskell-BWDZoCOh.js - Obfuscation: function to array replacements in dist-renderer/assets/javascript-qCveANmP.js - Obfuscation: function to array replacements in dist-renderer/assets/xquery-CQfU5ijd.js (+44 more) ADDITIONAL FINDINGS - Stealth Background Process Spawning in bin/lib/auth.mjs: "spawn(command, commandArgsForPlatform, { detached: true, windowsHide: true, stdi..." - Download Execute Delete Pattern in bin/lib/auth.mjs: "spawn } from 'node:child_process'; import crypto from 'node:crypto'; import path..." - FNOS Crypto-Obfuscated Malware Family in dist/server.bundle.mjs: "open.feishu.cn" - Reconstructed Obfuscated URL in dist/server.bundle.mjs: "https://api.github.com/repos/yancyuu/Hermit/releases" - Shell Command Execution in bin/hermit.mjs: "execSync(" - Silent Process Execution in bin/hermit.mjs: "stdio: 'ignore'" (+7 more) SECONDARY PACKAGES (hidden install) - cc-connect [OSM: clean] in bin/lib/runtime.mjs - -g [OSM: clean] in bin/lib/runtime.mjs - -g [OSM: clean] in bin/lib/update.mjs PAYLOAD FILES dist/server.bundle.mjs (+ src/main/server.ts, bin/lib/auth.mjs) INDICATORS (IOCs) - ipv4: 47.112.24.153, 159.75.231.98 - ipv6: 8::, 3::, 9::, e::, 68:: (+17 more) - urls: https://yancyuu.github.io/agentcli/install.ps1, https://yancyuu.github.io/agentcli/install.sh, https://yancyuu.github.io/agentcli/, http://127.0.0.1:5680`, https://gh-proxy.com/ (+33 more) - domains: yancyuu.github.io, gh-proxy.com, ghproxy.net, yancyyu.github.io, projects.my (+13 more) - emails: dev@openhermit.local, B@X.py, i@q.Ec, c@mI.gz, t@KG.DCjli (+4 more) - payloadFileHash: 29fe225dd74ede1ae2fb8615cbe2615cd27bfa2fbf15bf310520350fe71e742c

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
unknown@yancyyu/agentcli1.9.80 (affected)

References

advisory
vendor

Browse GCVE Records

75,801 records in the GCVE database · Updated August 3, 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 ›