权能硬件没有失败。它只是提前 40 年到来。
自 1970 年代以来,硬件层面的内存安全性就已可行。以下是权能架构为何一直败给扁平内存模型,以及为什么 CHERI 终于正在改变这一等式。
70% 的 CVE 是内存安全缺陷。缓冲区溢出、释放后使用、重复释放。这类漏洞让攻击者可以从一张畸形 JPEG 一路提权到 root 访问。 自 1975 年以来,我们就知道如何在硬件层面阻止其中的大部分。剑桥 CAP 计算机使用了基于权能的寻址。卡内基梅隆大学的 Hydra…
5 posts
自 1970 年代以来,硬件层面的内存安全性就已可行。以下是权能架构为何一直败给扁平内存模型,以及为什么 CHERI 终于正在改变这一等式。
70% 的 CVE 是内存安全缺陷。缓冲区溢出、释放后使用、重复释放。这类漏洞让攻击者可以从一张畸形 JPEG 一路提权到 root 访问。 自 1975 年以来,我们就知道如何在硬件层面阻止其中的大部分。剑桥 CAP 计算机使用了基于权能的寻址。卡内基梅隆大学的 Hydra…
IBM 的 Cleanroom engineering 达到了比行业平均水平好 100 倍的 defect rate,然后消失在历史中。它的消失与是否有效毫无关系。
IBM 的 Cleanroom software engineering process 实现了每千行代码 0.1 个 defect。当时的行业平均水平在 10 到 50 之间。该 process 被文档化,在多个项目和语言之间 replicate,并经过独立验证。然后它消失了。 不是因为更好的 method…
Literate programming承诺代码应该首先为人类编写,其次才是为机器。四十年后,几乎没有人这样写。以下是软件文档化中最优雅的理念为何未能改变我们工作方式的原因。
1984年,Donald Knuth发表了一篇提出根本性反转的论文。程序不应该是为编译器编写、为人类添加注释的。它们应该被写作为人类的文学作品,编译器从中提取可执行部分。他称之为literate programming,并以这种方式构建了TeX。 这个想法很美。它在现代软件开发中也几乎完全缺席。…
Michael Fagan 在 IBM 设计的结构化审查流程,能在代码进入编译器之前捕获几乎全部缺陷。但它也消耗了项目总工时的15%–20%。本文解释软件史上最有效的审查方法为何消失,以及团队究竟失去了什么。
1976年,Michael Fagan 在 IBM Systems Journal 上发表了一篇论文,描述了一种审查流程,其有效性使之成为软件质量的金标准。Fagan Inspections 在尚未运行任何测试之前,就能捕获全部缺陷的60%到90%。NASA…
N-version programming 曾承诺独立团队会犯独立的错误。Knight 和 Leveson 在 1986 年的实验证明了相反的事实,NASA 悄然放弃了这条路线。
20 世纪 80 年代初,NASA 面临着一个至今仍在困扰安全关键工程领域的问题:如何容忍那些尚未发现的 bug?他们的答案是 N-version programming。将同一份规范交给三个独立团队。并行运行三个程序。对输出结果进行投票。如果其中一个团队写出了 bug,另外两个团队会通过多数票将其压倒。…