周三下午三点,一个PHP开发者打开了招聘方发来的测试任务。对方要求他在本地运行一条Composer命令,安装某个软件包的开发分支,然后跑通其中的测试用例。一切看起来都像一次正常的远程面试——直到他瞥见终端里一闪而过的Node.js进程。那条命令,已经在他的机器里栽下了一颗来自朝鲜国家级黑客组织的后门。
安全研究机构Socket.dev在给Cyber Security News(CSN)的一份报告中披露,朝鲜黑客团体Famous Chollima(著名千里马)通过Packagist——PHP生态最主要的软件包仓库——分发了一个被修改过的合法软件包,将恶意载荷伪装成了普通的配置文件。这个软件包名为roberts/leads,其维护者Drew Roberts确有其人,攻击者没有伪造整个包,而是选择在开发分支dev-drewroberts/feature/test-case中注入恶意代码。这种利用合法维护者分支的渗透方式,让整个供应链攻击更难被察觉。
![]()
Famous Chollima很早就以“安插假员工”的手法在安全圈成名,他们派人以虚假身份混入目标公司,直接获得内部网络访问权限。近两年,这个组织把同样的逻辑反转了过来:他们伪造招聘岗位和开发任务,诱使工程师在自己的机器上运行恶意代码。这次针对PHP开发者的行动,正是把恶意代码伪装成面试题或入职测试的一部分。由于Packagist的开发版本需要开发者在命令行里显式指定版本号才能安装,攻击者可以借“请安装这个特定分支并运行测试”之类的指令,自然地引导被害人执行危险操作。
恶意代码被塞在一个名为tailwind.js的文件里,而这个文件表面上看是一个正常的Tailwind CSS配置文件。Socket.dev的分析显示,攻击者在代码的极右侧藏入了用大量空格填充后的混淆脚本,在常规代码审查中根本看不到。一旦这段脚本在Node.js环境中运行,它就会静默转变成一个完整的JavaScript恶意软件加载器,然后开始联络公链,而非传统的控制端服务器。
最让安全人员困惑的部分来了:这个加载器没有去连接某个可疑的IP或域名,而是查询TRON、Aptos和BNB Smart Chain这三个公共区块链服务,从链上交易记录中拉取加密的载荷数据。这种“死信投递”式的手法意味着根本没有一个中心化的命令与控制域名可供封锁,传统的流量监测工具很难感知到异常。拉回来的数据用硬编码的XOR密钥解密后,直接通过eval()在Node.js中执行。加载器还利用child_process.spawn()以隐藏窗口标志(windowsHide: true)启动第二个进程,在Windows系统上做到完全无影无踪。
研究人员还在代码中找到了一个标注为global['!']='9-0264-2'的活动标识。Famous Chollima似乎为这次行动设定了极为明确的攻击半径——它不追求大规模、高噪声的扩散,而是像一个狙击手一样,把一个一个开发者作为靶标。开发分支的特殊安装路径、区块链死信通道、配置文件伪装,这三层设计叠在一起,使得任何单点的安全告警都难以发出声响。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.