供应链威胁的新变种
Aikido Security的安全研究人员发现了一项复杂的供应链攻击,利用隐形Unicode字符将恶意代码走私到开源代码库。3月3日至3月9日期间,该公司识别了151个上传到GitHub、NPM和Open VSX的恶意包,其中包含可执行有效负载,在标准代码编辑器、终端和审查界面中完全不可见。
该技术代表了攻击者针对软件供应链的方式的重大演变。虽然供应链攻击近十年来一直是持续威胁,通常依赖于域名仿冒或名称混淆来欺骗开发人员,但这次最新活动增加了额外的欺骗层,使传统人工代码审查基本失效。
隐形代码的工作原理
该攻击利用一类Unicode字符,这些字符在文本编辑器、终端模拟器或基于Web的代码审查平台(如GitHub的拉取请求界面)中显示时没有可见的表示。虽然每个恶意包的大部分显示为正常的、可读的代码,但关键的恶意函数及其有效负载是使用这些隐形字符编码的。
当开发人员直观地检查代码或使用标准diff工具时,恶意部分根本不会出现。但是,当代码被JavaScript引擎或Python解释器解析和执行时,隐形字符会被解码,隐藏的有效负载与看起来合法的代码一起运行。
这种方法有效地创造了双重现实:人工审查人员和许多自动化扫描工具看到的是干净的代码,而运行时环境执行的是完全不同的一套指令,可以泄露凭证、安装后门或破坏开发环境。
规模和分布
Aikido识别的151个包分布在多个包生态系统中。GitHub代码库、用于JavaScript的NPM包注册表和Visual Studio Code扩展的Open VSX市场都被针对。攻击的广泛性表明这是一场协调的活动,而不是孤立的事件。
许多恶意包使用与流行开源库相似的名称,将传统的域名仿冒方法与新的隐形代码技术相结合。一些包在检测前积累了大量的下载计数,可能已经危害了多个组织的开发环境。
防御影响
该发现提出了关于当前代码审查实践和自动化安全扫描工具充分性的严肃问题。依赖于与可见代码模式匹配的传统静态分析工具将完全错过这些威胁。即使是进行彻底代码审查的经验丰富的开发人员也可能批准恶意包而不检测隐藏的有效负载。
安全团队现在被敦促实施可以检测源代码中隐形Unicode字符存在的二进制级分析工具。某些集成开发环境可以配置为显示隐藏字符,新的linting规则可以标记其存在。然而,这些防御措施的广泛采用仍然有限。
Aikido Security指出,他们去年首次在零散事件中发现了这一技术,但当前活动的规模代表了一次重大升级。该公司已发布妥协指标,并正在与受影响的平台合作删除恶意包并防止重新上传。
行业回应
开源安全社区已响应呼吁在包注册表中加强验证机制。一些专家正在倡导强制透明构建,其中包从可审计源代码在受控环境中编译,确保开发人员审查的正是执行的内容。
GitHub、NPM和运营VSX市场的Microsoft已开始删除已识别的包,并正在评估额外的保障措施以防止类似的攻击。该事件强调了保护现代软件开发所依赖的庞大开源依赖生态系统的持续挑战。
对于可能已安装任何受影响包的组织,安全研究人员建议进行彻底的最近添加依赖项审计,扫描意外网络连接,并审查系统日志以查找数据泄露的迹象。
本文基于Ars Technica的报道。阅读原文。
Originally published on arstechnica.com

