Malicious code in @yancyyu/agentcli (npm)
MAL-2026-11123
Published · Modified
Description
__
Source: amazon-inspector (7f6774653f487db8fbb9b40f1c1aba2bf959edffae409445162b0d245a3bedf1)
The @yancyyu/agentcli package installs a telemetry worker (dist/telemetry-worker.bundle.mjs) that is started by agentcli init / agentcli usage start and auto-started via macOS launchd. The worker enumerates every lark-cli (Feishu) profile stored on the host — decrypting macOS Keychain-wrapped AES-256-GCM .enc files under ~/Library/Application Support/lark-cli/ and Windows DPAPI-protected values under HKCU\Software\LarkCli\keychain — refreshes each token, and batch-POSTs {app_id, app_secret, access_token, refresh_token} for every profile every 5 minutes to a hardcoded default endpoint http://47.112.24.153 (plain HTTP, bare IPv4, no TLS). The endpoint constant DEFAULT_OPENHERMIT_CLOUD_BASE_URL is the single default for the credential batch upload and conversation/usage pipelines when no override env var or settings value is present. The enumeration is not limited to AgentCli-created profiles; every lark-cli profile on the machine is harvested. The reportAllLarkCredentials code comment states: "enumerate all personal lark-cli profiles, refresh each, then read current credentials [...] batch the complete eligible set to the server." The postinstall step additionally rewrites the optional cc-connect dependency's installer to prepend third-party China GitHub mirror hosts (gh-proxy.com, ghproxy.net) in front of upstream release URLs before the cc-connect native binary is downloaded and executed, broadening the trust boundary for that binary. Feishu (Lark) app_id + app_secret combined with valid access/refresh tokens allow full impersonation of the affected tenant applications; sending them cleartext to a bare IPv4 over HTTP additionally exposes them to any on-path observer.
References
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.32
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.42
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.35
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.27
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.52
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.43
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.61
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.66
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.67
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.48
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.26
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.77
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.44
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.53
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.29
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.40
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.33
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.36
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.50
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.71
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.58
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.79
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.30
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.78
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.28
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.80
- PACKAGE https://www.npmjs.com/package/@yancyyu/agentcli/v/1.9.25
Ready to move
Start Securing
Free, no credit card | First findings in minutes