Supply-chain attack using invisible code hits GitHub

⭐⭐⭐⭐ | Security Supply Chain Unicode

摘要

安全研究人员发现利用不可见 Unicode 字符 (Private Use Areas) 进行的供应链攻击,已影响 GitHub、npm 和 VS Code marketplaces。

攻击原理

  • Unicode 私有区域 (PUA): 使用 Unicode 规范中保留的私有区域字符
  • 人类不可见: 代码审查者和静态分析工具只能看到空白
  • 机器可执行: JavaScript 解释器能识别并执行这些字符编码的恶意代码
⚠️ 严重警告

这类攻击最早于 2024 年用于 AI 提示注入,现在已扩展到传统恶意软件领域。

技术细节

const s = v => [...v].map(w => (
    w = w.codePointAt(0),
    w >= 0xFE00 && w <= 0xFE0F ? w - 0xFE00 :
    w >= 0xE0100 && w <= 0E01EF ? w - 0xE0100 + 16 : null
)).filter(n => n !== null);

eval(Buffer.from(s(``)).toString('utf-8'));

反引号字符串看起来是空的,但包含不可见字符,解码后产生完整的恶意 payload。

影响范围

  • GitHub 仓库
  • npm 包
  • VS Code 插件市场
  • 已发现 151 个恶意包 (可能只是冰山一角)
防御建议
  • 仔细检查包及其依赖后再引入项目
  • 仔细检查包名称,防范 typosquatting
  • 使用静态分析工具检测不可见字符
  • AI 辅助代码审查需特别小心

原文链接