特洛伊源代码:不可见的漏洞
密码学与安全
2023-03-09 v2 编程语言
摘要
我们提出一种新型攻击,其中源代码被恶意编码,使其在编译器与人类视觉看来不同。该攻击利用 Unicode 等文本编码标准中的细微之处,产生其词法单元逻辑编码顺序与显示顺序不同的源代码,导致人类代码审查者无法直接察觉的漏洞。我们所称的“Trojan Source”攻击对第一方软件以及整个行业的供应链妥协都构成直接威胁。我们给出了在 C、C++、C#、JavaScript、Java、Rust、Go、Python、SQL、Bash、Assembly 和 Solidity 中 Trojan Source 攻击的可行示例。我们提出了确定的编译器级防御,并描述了在编译器升级以阻断此攻击期间可部署于编辑器、代码仓库和构建管道的其他缓解控制。我们记录了针对这些漏洞的全行业协同披露;由于它们影响大多数编译器、编辑器和代码仓库,该过程揭示了不同公司、开源社区和其他利益相关者如何应对漏洞披露。
引用
@article{arxiv.2111.00169,
title = {Trojan Source: Invisible Vulnerabilities},
author = {Nicholas Boucher and Ross Anderson},
journal= {arXiv preprint arXiv:2111.00169},
year = {2023}
}
备注
To appear in the 32nd USENIX Security Symposium. Revisions: Adds 4 languages, 2 encodings, threat model, & scanning details