A Security Analysis of CheriBSD and Morello Linux
本文分析了 CheriBSD 和 Morello Linux 的安全性,证明了尽管 CHERI 架构在防御内存损坏方面非常有效,但现有的隔离机制仍然容易受到通过简单漏洞和攻击进行的绕过,并提出了针对这些弱点的具体缓解措施和建议。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一个高安全性的银行金库。在过去,如果小偷打破了一扇窗户(软件漏洞),他们就可以在银行内横行霸道,从出纳员的桌子到 CEO 的保险箱无所不取。
为了阻止这种情况,工程师们建造了一种新型金库,叫做 CHERI。它不仅仅是锁上门,而是给了银行里的每一件物品一把特殊的“魔法钥匙”(称为能力/capability)。这把钥匙不仅说明了“你可以打开这扇门”,还规定了“你只能在上午 9 点到下午 5 点之间打开,且你只能向里面看,不能触摸任何东西”。
CHERI 的目标是分层隔离(Compartmentalization):将银行划分为许多微小的、相互隔离的房间。如果小偷闯入了“礼品店”房间,他们在那里找到的魔法钥匙应该只能打开礼品店的门。他们不应该能走进“金库”房间。
这篇论文就像是一份安全审计报告。研究人员问道:“如果小偷进入了礼品店,他们还能潜入金库吗?”他们在两个不同版本的银行系统上进行了测试:Morello Linux 和 CheriBSD。
以下是他们的发现,用简单的语言进行了解释:
核心问题:泄露主钥匙
尽管墙壁很坚固,但研究人员发现了四种让“礼品店”的小偷窃取“金库”钥匙的方法。
1. “堆栈行走”攻击(查看垃圾堆)
类比: 想象一下,每当银行员工执行一项任务时,他们都会在便签纸上写下笔记,并将其贴在桌上的那一叠纸上。完成任务后,他们会转向下一个任务,但有时会忘记扔掉旧的便签纸。
攻击方式: 礼品店的小偷查看前任员工留下的便签堆。他们发现了一张便签,上面写着:“这是金库的钥匙”。因为系统没有清理这些笔记(内存),小偷偷走了钥匙,直接走进了金库。
修复方法: 研究人员建议,银行应该配备“清洁小组”,在每次使用后立即擦掉桌上的每张便签,或者给每位员工自己的私人办公桌,这样他们就看不到彼此的笔记。
2. “Dlopen”泄露(有缺陷的地图)
类比: 银行有一个中央目录(地图),告诉您所有房间的位置。当新房间被添加时,目录会更新。小偷向目录索要一张“礼品店”的地图。
攻击方式: 目录给了他们一张地图,但这是一张“有缺陷”的版本。地图不仅显示了礼品店,还意外地包含了银行中所有房间的秘密列表,包括金库、CEO 办公室和保险箱。小偷利用这张意外获得的名单找到了前往各处地方的钥匙。
修复方法: 研究人员建议,目录应该给小偷一张“密封的”地图。小偷可以看到地图,但除非他们拥有特殊的破封工具,否则无法阅读其中的秘密部分。
3. “堆挖掘”攻击(在堆里翻找)
类比: 银行角落里有一大堆丢弃的箱子(内存)。当一个箱子被扔掉时,它理应是空的。但有时,工作人员扔掉的箱子里仍然装有工具或钥匙,因为他们忘了先清空箱子。
攻击方式: 小偷在丢弃的箱子堆中翻找,寻找可能还藏有钥匙的箱子。如果他们发现了一个被“金库”员工遗留下的钥匙,他们就可以利用它打开金库。
修复方法: 银行需要一条规则,规定:“在扔掉一个箱子之前,你必须把它扫干净。”或者,小偷应该只被允许在属于礼品店的箱堆中翻找,而不是整个银行的箱堆。
4. “堆存储”攻击(定时炸弹)
类比: 小偷抓起一个箱子,在上面写上自己的名字,然后把它藏在口袋里。稍后,银行将这个同一个箱子扔掉,并把它给了一名新员工。
攻击方式: 小偷在等待。稍后,他检查自己的口袋。这个箱子现在正被新员工用来存放金库里的黄金。因为小偷对这个特定箱子仍有一个“指针”(心理暗示/记录),即使他本不该在那里,他也能伸手进去偷走黄金。
修复方法: 银行需要一个系统,在箱子被扔掉的那一刻就“撤销”(销毁)指向该箱子的旧钥匙,使得小偷的心理记录变得毫无用处。
结果:两种不同的银行
研究人员在两个系统上测试了这些技巧:
- Morello Linux: 这个系统非常脆弱。小偷可以使用所有四种技巧逃出礼品店,并偷走主金库的私密钥匙。这就像是一个没有保安且到处都是脏便签纸的银行。
- CheriBSD: 这个系统要好得多。它内置了守卫(称为 c18n 和 堆撤销/heap revocation)。
- “堆栈行走”技巧失效了,因为每位员工都有自己的私人办公桌(隔离的堆栈)。
- “堆存储”技巧失效了,因为银行有一个在旧钥匙失效时立即销毁它们的系统。
- 然而,“Dlopen”泄露和“堆挖掘”仍然有效。小偷仍然可以找到秘密地图并在脏箱堆中翻找。
核心启示
研究人员构建了一个“概念验证”(测试用例),通过“Dlopen”泄露成功窃取了一个私钥(类似于主密码)来自一个安全程序。
结论:
CHERI 架构是一项了不起的新发明,它阻止了许多传统的盗窃行为(如撞破墙壁)。然而,运行在其之上的软件(操作系统和库)仍然存在漏洞。这些漏洞就像是敞开的窗户或丢失的钥匙,使得即使墙壁很坚固,小偷也能绕过安全防护。
论文得出结论:虽然硬件是安全的,但我们需要修复软件(清理便签、修复有缺陷的地图以及清扫箱子),才能使系统真正安全。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。