@ccfly/setup-darwin-x64 (npm) · Malicious Code
Affects @ccfly/setup-darwin-x64Source GCVE Database
Malicious package : remove @ccfly/setup-darwin-x64 and rotate any secrets on hosts that installed it.
Data as of 6 Aug 2026, 18:24 UTC
Malicious package
Published to npm · OSV MAL-2026-12313
What to do
Remove @ccfly/setup-darwin-x64 from every project, lockfile and image that pulls it in. Treat any host that installed it as compromised: rotate the credentials, tokens and keys it could read, from a clean machine.
Affected software
| Product | Affected | Fixed in |
|---|---|---|
| npm@ccfly/setup-darwin-x64 | Affected
| Fixed in– |
Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.
Description
--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (409d11825a61bed068425296e83dcc0c87427579f7b5d724ec52e5e87465f2b5) The package ships a prebuilt darwin/x64 Mach-O binary containing a Go agent (module github.com/ccfly/rescue) that, when executed, connects to a hardcoded remote broker at cc.hn / ccfly over WebSocket (ws://ccfly, wss://, https://cc.hn) using github.com/gorilla/websocket, spawns a pseudo-terminal via github.com/creack/pty, and pipes the WebSocket stream into that PTY. Symbols include agent.serve, agent.startPTY, agent.waitAuthorized, agent.wsBase and unixPTY.Read/Write/Resize/Close, giving the remote party interactive shell control of the host. A second stage (setup.downloadCcfly, setup.fetchAndExtract, setup.npmTarballURL, setup.extractFromTarGz, setup.runCcflyInstall, setup.redeemEnrollToken, setup.(*brokerClient).escalateToRescue, with a rodata reference to https://registry.npmjs.org) fetches and executes a further ccfly npm tarball after the broker approves an enrollment token — the additional code executed on the host is chosen by the remote broker, not the installer. The binary also inspects shell RC files and /etc/hosts (setup.scanShellProfilesForProxy, setup.checkProxyResidue, setup.checkHostsResidue, setup.runEnvChecks, setup.envReport) and POSTs an environment report back to the broker (setup.(*brokerClient).post; rodata latest.zshrc, export.ccfly).
References
- npmjs.com/package/@ccfly/setup-darwin-x64/v/0.1.7 (opens in a new tab)
- npmjs.com/package/@ccfly/setup-darwin-x64/v/0.1.16 (opens in a new tab)
- npmjs.com/package/@ccfly/setup-darwin-x64/v/0.1.6 (opens in a new tab)
- npmjs.com/package/@ccfly/setup-darwin-x64/v/0.1.0 (opens in a new tab)
- npmjs.com/package/@ccfly/setup-darwin-x64/v/0.1.14 (opens in a new tab)
- npmjs.com/package/@ccfly/setup-darwin-x64/v/0.1.1 (opens in a new tab)
- npmjs.com/package/@ccfly/setup-darwin-x64/v/0.1.9 (opens in a new tab)
- npmjs.com/package/@ccfly/setup-darwin-x64/v/0.1.3 (opens in a new tab)
- npmjs.com/package/@ccfly/setup-darwin-x64/v/0.1.13 (opens in a new tab)
- npmjs.com/package/@ccfly/setup-darwin-x64/v/0.1.8 (opens in a new tab)
- npmjs.com/package/@ccfly/setup-darwin-x64/v/0.1.15 (opens in a new tab)