Malicious code in @yancyyu/agentcli (npm)
The npm package @yancyyu/agentcli contains malicious code that extracts OAuth credentials and API keys for Lark/Feishu from the system keychain (macOS) and credential store (Windows), then exfiltrates them to a hardcoded remote IP address over plaintext HTTP. A persistent launchd agent ensures the exfiltration loop survives reboots.
- Disclosed
- Last updated
- Blast radius
- Users of @yancyyu/agentcli who initialized the package and enabled telemetry; credential exposure affects Lark/Feishu accounts and potentially other systems relying on the same keychain/credential store.
- Ecosystems
- Attack vectors
- Affected entities
- @yancyyu/agentclinpm package containing malicious credential exfiltration code
The @yancyyu/agentcli npm package was found to contain malicious code that targets credentials for the Lark/Feishu collaboration platform. On macOS, the package extracts the AES-256-GCM master key from the system Keychain using the security command-line tool, then decrypts all stored Lark/Feishu credential files. On Windows, it uses PowerShell DPAPI to recover the same secrets from the registry.\n\nThe exfiltrated credentials include appId, appSecret, accessToken, refreshToken, userOpenId, and scope for every Lark/Feishu profile. These are batched and sent via HTTP POST to a hardcoded IP address (47.112.24.153) over plaintext HTTP. The package also silently rewrites legacy configured hosts to this bare-IP default, obscuring the true destination from users auditing their settings.\n\nPersistence is achieved through installation of a launchd agent (com.openhermit.telemetry.plist) that runs at boot with RunAtLoad and KeepAlive flags, invoking a telemetry worker every 5 minutes. The exfiltration loop is armed during documented first-run commands such as agentcli init, agentcli usage start, and agentcli usage autostart enable.\n\nThe exfiltrated OAuth tokens grant the attacker the ability to impersonate the installer within Feishu/Lark, potentially enabling account takeover and unauthorized access to organizational data.
Indicators of compromise
- Packages
- @yancyyu/agentcli
- Domains
- agentbus.skg.com
- IPs
- 47.112.24.153
- 159.75.231.98
Remediation
- Immediately uninstall @yancyyu/agentcli from all systems
- Revoke all Lark/Feishu OAuth tokens and API credentials that may have been exposed
- Remove the launchd agent at ~/Library/LaunchAgents/com.openhermit.telemetry.plist on macOS systems
- Audit Lark/Feishu account activity for unauthorized access or token usage
- Review npm audit logs and package.json for any other suspicious dependencies
- On Windows, check HKCU\Software\LarkCli\keychain for unauthorized access and reset affected credentials
- Monitor network traffic for connections to 47.112.24.153, 159.75.231.98:8088, and agentbus.skg.com
Sources
- GitHub Advisory GHSA-wqc4-72w7-qr9g · GitHub Advisory Database
Cite this entry
"Malicious code in @yancyyu/agentcli (npm)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed July 28, 2026; last updated July 28, 2026. https://supplychainattack.org/incident/malicious-code-in-yancyyu-agentcli-npm-btyzt2
Suggest a correction
Found an error or have a newer source? Corrections to factual errors take priority over new entries.
Related incidents
- resolvedcritical
Malicious code in app-sim-layer (npm)
The npm package app-sim-layer contained malicious code in a postinstall hook that exfiltrated sensitive files (Solana keypairs, API keys, credentials), enumerated the user's filesystem, and on Linux granted remote SSH access to attacker infrastructure at 95.216.118.146.
npmCompromised packageMalicious commit - containedcritical
Malicious code in json-schema-inspector (npm)
The npm package json-schema-inspector contained malicious code that performed remote code execution on installation. The package advertised itself as a JSON/XML schema validator but included a trigger routine that fetched and executed attacker-controlled payloads from a remote manifest.
npmCompromised packageMalicious commit - containedcritical
Malicious code in @crbrc/xbt (npm)
The npm package @crbrc/xbt contains malicious code that exfiltrates OxaPay payment-gateway secrets and host metadata to a hardcoded attacker-controlled IP address, establishes a reverse TCP proxy tunnel, and allows remote process termination. The malicious behavior is conditionally activated only when all project source files import the companion package @crb/xbr.
npmCompromised packageMalicious commit - containedcritical
Malicious code in @antv/x6-components (npm)
The npm account `atool` was compromised and used to publish 631 malicious versions across 314 packages, including @antv/x6-components, in a 22-minute automated burst. Each version injects a preinstall hook executing an obfuscated Bun script that exfiltrates credentials and establishes persistence via CI/CD workflow injection and system daemons.
Mini Shai HuludTeamPCPnpmOtherAccount takeoverCompromised packageMalicious commit