NuGet供应链攻击利用定时破坏性载荷针对工业控制系统
一个复杂的供应链攻击通过九个恶意NuGet包危害了关键工业控制系统,这些包设计用于向数据库操作和制造环境注入定时触发的破坏性载荷。
Socket威胁研究团队识别出这些代码武器,这些包在2023年至2024年间以别名"shanhai666"发布,在2025年11月5日向NuGet报告之前已累计获得9,488次下载。
这次攻击活动展示了前所未有的攻击复杂度,结合了99%的合法功能作为掩护代码,以及隐藏的恶意载荷,这些载荷将在2027和2028年特定日期后,每次数据库查询时有20%概率触发进程终止。
最危险的包Sharp7Extend通过仿冒打字瞄准西门子工业可编程逻辑控制器(PLC),实现了双重破坏机制,在安装时立即造成混乱。
Sharp7Extend对制造环境构成了特别具破坏性的威胁。通过在受信任的Sharp7库名称后附加"Extend",威胁行为者利用了开发人员搜索PLC通信增强功能的需求。
该包捆绑了完整、未修改的合法Sharp7库(版本1.1.79),使得在代码审查期间几乎无法检测。
然而,与专注于数据库的包相比,Sharp7Extend实现了相反的触发逻辑:不是延迟激活,而是在安装后每次PLC操作时都有20%概率终止进程,直到2028年6月6日,然后激活第二个破坏机制,在80%的情况下静默破坏写入操作。
Socket的AI扫描器标记了Sharp7Extend包的恶意代码和仿冒打字。
这种双重机制攻击创造了逐渐恶化的故障。在前30-90分钟内,只有进程终止机制活跃,导致可归因于网络问题的随机崩溃。
宽限期结束后,两种机制同时运行,触发级联系统故障和数据损坏,模仿间歇性硬件故障而非系统性攻击。
对于每分钟执行十次PLC操作的制造环境,生产崩溃在30秒内变得不可避免,同时80%的写入操作故障危及安全关键系统。
该攻击的精妙之处在于其通过概率执行掩盖的数学必然性。每小时执行数百次数据库查询的应用程序将在几秒到几分钟内崩溃。
处理每分钟100次查询的电子商务平台在大约三秒内结账过程中崩溃。以每分钟50次查询运行的医疗保健系统在六秒内完全中断。
以每分钟500次查询交易的金融平台在一秒内面临完全平台故障。
所有九个恶意包都提供完全功能的合法代码,实现了数据库存储库模式、LINQ支持、分页、异步操作和实体映射。
这种广泛的合法功能服务于多个目的:建立开发人员信任、通过代码审查(审查者遇到熟悉模式)、通过实际价值交付鼓励采用,以及在数千行合法代码中隐藏约20行恶意载荷。
扩展方法注入武器化了C#语言特性,透明地将恶意逻辑注入每个数据库和PLC操作。
恶意软件向数据库命令类型添加.Exec()扩展方法,向S7Client对象添加.BeginTran()方法,使得每次操作都能自动执行。
威胁行为者展示了操作安全复杂度,通过在包之间保持元数据不一致性,尽管以相同的shanhai666别名发布,但显示不同的作者名称,旨在逃避标记来自相同作者的包的检测系统。
签名文件分析揭示了畸形结构、嵌入字符串和多个表明中国来源的指标,包括整个代码中的中文错误消息和网络俚语。
截至发布时,尽管Socket在11月5日报告,恶意包仍在NuGet注册表上存活。NuGet确认正在调查和移除,但定时激活机制已经危害了无数生产系统。
组织必须立即审计所有九个包的依赖项,并假设受影响系统已完全被入侵。
运行Sharp7Extend的工业控制系统可能已经经历间歇性故障,被错误归因于PLC通信问题,而静默写入故障破坏了关键制造操作。