惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
T
Troy Hunt's Blog
P
Proofpoint News Feed
H
Help Net Security
博客园 - 叶小钗
N
Netflix TechBlog - Medium
F
Full Disclosure
Vercel News
Vercel News
C
Cyber Attacks, Cyber Crime and Cyber Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
GbyAI
GbyAI
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 【当耐特】
Martin Fowler
Martin Fowler
V
V2EX
Latest news
Latest news
L
LangChain Blog
The Register - Security
The Register - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
Schneier on Security
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
N
News and Events Feed by Topic
M
MIT News - Artificial intelligence
Hacker News - Newest:
Hacker News - Newest: "LLM"
T
The Exploit Database - CXSecurity.com
Microsoft Security Blog
Microsoft Security Blog
S
Secure Thoughts
A
About on SuperTechFans
人人都是产品经理
人人都是产品经理
T
The Blog of Author Tim Ferriss
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Spread Privacy
Spread Privacy
S
Securelist
Forbes - Security
Forbes - Security
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Last Week in AI
Last Week in AI
T
Threat Research - Cisco Blogs
V
Vulnerabilities – Threatpost
MyScale Blog
MyScale Blog
G
Google Developers Blog
L
Lohrmann on Cybersecurity
博客园 - Franky
T
Tor Project blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
V
Visual Studio Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Google DeepMind News
Google DeepMind News
F
Fortinet All Blogs
Y
Y Combinator Blog

0x01 byte

我在 2025 年看完的书 西班牙之行 2025 年初展望 2024 年底曼谷之行 荐书:The Blind Watchmaker 王垠传播的「自然视力恢复法」真的有用吗? 从高考志愿到职业选择 浅谈 Apple Intelligence 2024 年,我为什么开始为搜索付费 运气与努力 刷新了一下对内容审查粒度的认知 离开心动和 TapTap 如何反转一个链表? 如何高效地协作开发:一些 Google 的实践 关于 LeanCloud 被心动/TapTap 收购 small talk #3:从 IPFS 聊到 Web 的开放性 small talk #2:聊聊用 M1 芯片的新 Mac 怀念两位老师:Stan Eisenstat 和 Paul Hudak small talk #1: 聊聊你的私有云 如何在 Emacs 里做所有事 Remark Ninja: 一个简单的评论系统 Woman、man、camera、TV:如何做一个完整的深度学习应用 荐书:走出戈壁:我的中美故事 LeanCloud 开始周期性远程工作了 树莓派:用 Pi-hole 来保护隐私和过滤广告 爱国指南 我在 2019 年觉得不错的几个习惯 WeWork 的兴衰和创投的游戏 计算机专业学生该如何提高自己 怎样利用好路上的时间 荐书:Educated - 一部震撼人心的回忆录 入门 React hooks + 后端集成 荐书:Bad Blood,创业公司的谎言与欺诈 LeanCloud 的故事 — AVOS 时期 一点人生经验 👓 — 如何学英语 一点人生经验 👓 — 学好英语的重要性 Docker 和 Kubernetes 从听过到略懂:给程序员的旋风教程 加密货币与区块链(三):什么是信任 离开微信公众平台 加密货币和区块链(二):分布式共识与去中心化 加密货币和区块链(一):历史的重演 第一个程序员 Ada 的故事 写在 9/11 十五周年 快速开发聊天机器人 说说离职员工的期权 你所不知道的 Dijkstra 你所不知道的冯·诺伊曼 在 LeanCloud 看 Parse 的关闭 对透明薪酬的回顾 写给创业的技术人 如何有效地做 Code Review 为什么每个团队都需要 Code Review? 怀念我的外公 面向对象与函数式 「零和博弈」- 是语言在演变还是媒体在倒退 编程语言之争 传统媒体和互联网 Clojure: 现实世界的 LISP 求职时的常见错误 Emacs Smart Split (旧文)也说王垠退学
比 XCodeGhost 更邪恶的手段 30 年前就出现了
blog.incoming@1byte.io (江宏) · 2015-10-09 · via 0x01 byte

最近在开发者圈里讨论最多的莫过于 XCodeGhost。其实在 30 年前,更高明的手段就出现了。

1984 年的时候,UNIX 创造者之一 Ken Thompson 获得了 ACM 图灵奖。他的获奖演讲叫做 Reflections on Trusting Trust(反思对信任的信任)。

Portrait of Ken Thumpson

Portrait of Ken Thumpson

在这个稿子只有三页纸的演讲中他分三步描述了如何构造一个非常难以被发现的编译器后门。这后来被称为 the Ken Thompson Hack(KTH),有人说它是 the root password of all evil。

在第一步里,Thompson 展示了一个可以输出自己的源代码的 C 程序。这需要一定技巧,但很多人作为编程练习都做过。

在第二步里,Thompson 在 C 的编译器里增加了一段代码(后门),让它在检测到自己在编译 UNIX 的 login 命令时在输出里插入一个后门。这个后门会允许作者用特定密码以 root 身份登录系统。

在第三步里,Thompson 在第二步的编译器里使用第一步的方法加入另一段代码(后门生成器),使得这个编译器在检测到它在编译自己时自动把第二步的后门和第三步的后门生成器插入到输出里。

在得到一个第三步的编译器后,就可以把第二、三步新增的代码从源代码里删除,因为这个新的编译器在编译它自己原来「干净」的源代码时会自动把后门和后门生成器加上。很多语言的编译器都会使用「自举」的方式编译,也就是会用一个编译器的旧版本可执行文件来编译新版本的源码,所以这样一个高危的后门完全可以在一个开源项目里存在。通过阅读这个编译器的源码是无法发现这个后门的。

KTH 还可以被加强,让它更难被察觉。比如这个编译器可以污染它编译的调试器、反编译器等开发过程中使用的工具,使得即使程序员反编译这个编译器后看到的仍是干净的代码,除非他使用的是 KTH 注入前的版本。所以当这个带有 KTH 注入的编译器来自于官方渠道时,它的后门是几乎不会被发现的,而且会影响所有用户。

最近的 XcodeGhost 最多只能算是 the Ken Thompson Hack 的一个简化版本,没有试图隐藏自己,并且修改的不是编译器本身,而是 Xcode 附带的框架库。

Thompson 在演讲里的结论是:即使开源项目也无法保证安全。在不考虑硬件或 microcode 后门的情况下,只有当运行的每一个程序都完全是自己写的时才能确保安全。可是谁的电脑上能只运行自己写的程序呢?恐怕只有 Ken Thompson 和 Dennis Ritchie 能在用自己发明的语言写的操作系统上用自己写的编译器编译自己写的操作系统吧。

Ken Thompson 从贝尔实验室退休几年之后加入了 Google。在 Google,他和原来贝尔的老同事一起发明了 Go 语言。Go 从 1.5 版开始以自举的方式编译。;-)