去中心化储存网路 Swarm 开发组织 Ethersphere 遭供应链攻击,恶意套件经官方 GitHub 流程上架 NPM
Ethersphere 因 CI 凭证外泄,导致含恶意程式码的 bee-js 与 Swarm Desktop 透过官方管道散布,可窃取钱包金钥并植入远端后门。
去中心化储存网路 Swarm 的开发组织 Ethersphere 近日遭遇软体供应链攻击。攻击者利用专案的 GitHub 发布流程漏洞,将含有恶意程式码的 JavaScript 套件 bee-js 13.3.0 上架至 NPM,并发布了受污染的桌面应用程式 Swarm Desktop 0.56.2。这些恶意版本能够窃取节点钱包的金钥,并在使用者电脑上植入远端控制后门。
根据资安业者 Socket 的调查,专案维护者及自动化发布帐号疑似遭到入侵,但凭证最初如何外泄尚不清楚。攻击者使用遭窃的 CI 凭证,透过被入侵的 bee-worker 帐号在 GitHub 发布恶意版本。由于原有的自动化发布流程未检查程式码是否来自受保护分支,且在透过 GitHub 发布新版本时会略过测试,攻击者得以利用官方 GitHub Actions 将恶意套件上架至 NPM。
在技术实现上,攻击者在 bee-js 13.3.0 中加入了安装后执行的 postinstall 指令,使得套件安装时会从外部伺服器下载并执行 JavaScript 程式码。只要套件管理工具允许执行安装指令码,即使开发者未直接使用 bee-js 的功能,也可能触发攻击。据报导,该恶意载入程式甚至在 Ethersphere 自己的 NPM 发布工作中执行了三次。
Swarm Desktop 0.56.2 则被植入恶意程式码,使用者每次启动应用程式时,就会自动连线至攻击者控制的伺服器,下载并执行远端 JavaScript 程式码。后续的恶意程式会尝试读取 Swarm 节点的钱包金钥档与存放解锁密码的设定档,并将资料传送给攻击者。此外,它还会依作业系统安装后门:Windows 版本滥用合法工具 ScreenConnect 建立远端存取,macOS 与 Linux 版本则植入 Go 语言后门,透过以太坊智慧合约取得控制伺服器位址。相关合约与先前 SleepyDuck 攻击活动使用的基础设施相同。
值得注意的是,恶意的 bee-js 透过官方 NPM 发布流程上架,并附有有效的套件来源证明(Provenance)。然而,该证明只能确认套件的建置来源,无法保证程式码本身的安全性。Swarm Desktop 的 macOS 版本也使用专案凭证签署,并通过苹果公证,这使得部分 Windows 及 Apple Silicon Mac 使用者可能经由自动更新取得受污染版本。
目前,bee-js 13.3.0 在 NPM 上架约 75 分钟后已被下架,Swarm Desktop 0.56.2 公开约 8.5 小时后也遭撤回。Ethersphere 已发布干净版本的 Swarm Desktop 0.56.3,并建议 bee-js 使用者改用 13.2.0 版本。曾执行恶意程式的使用者应立即检查电脑是否已遭植入后门,并更换可能外泄的金钥与凭证。