
OpenAI 与计算机病毒有什么关系?这个看似不相关的问题,引出了一位传奇人物和一段独特的技术历史。OpenAI 背后站着的一位关键人物,正是世界上第一个利用栈溢出漏洞制造出网络蠕虫的大神。而这段历史,又与一个对栈溢出攻击“免疫”的独特 CPU 架构——HP 的 PA-RISC——紧密相连。
在我的 CPU 收藏中,惠普的 PA-RISC 系列显得最为朴实无华,它们大多只有内部编码,没有绚丽的 Logo 和显眼的标识。
| 内部编码 |
对应型号 |
| 1FQ2-001 |
PA-7100LC |
| 1QK9-0009 |
PA-8200 |
| 1QM1-0012 |
PA-8500 |
| 3AA2-3105 / 3AA1-1105 |
PA-8600 |
| 3AA2-3106 |
PA-8700 |
| 3AA4-3206 / 1ST9-0004 |
PA-8800 |
| 3AC1-0005 |
安腾 Itanium 2 9050 |
| 3AC4-0004 |
安腾 Itanium 2 9100 |
01. 历史上第一个病毒的诞生
罗伯特·莫里斯(Robert Morris Sr.)在 1960 年加入贝尔实验室时,UNIX 尚未诞生,他最初投身于 Multics 项目的底层开发。

他与图灵奖得主道格拉斯·麦克罗伊(Douglas McIlroy)联手,用 FORTRAN IV 打造了 M6 宏处理器,这是 UNIX 史前时代最重要的编译工具之一,堪称现代 C 语言宏、编译器预处理技术的直系祖先。1960 年代初,他们还与维克多·维索茨基(Victor Vysottsky)共同开发了早期程序博弈游戏“磁芯大战”,探索程序自我复制与竞争逻辑。
1969 年 UNIX 诞生后,老莫里斯迅速成为核心贡献者之一。他在 UNIX 早期版本中主导开发了正弦、余弦、对数等高精度数学库,解决了早期系统数值计算的核心难题。在安全领域,他设计了 UNIX 用户密码加密方案,将用户密码转换为哈希值存储在 /etc/passwd 中,实现单向加密。这套方案成为现代密码存储的雏形,至今仍影响着 Linux、iOS、Android 等系统的身份验证机制。
1970 年代末,老莫里斯因破解早期德国加密设备而接到 NSA 的紧急邀约,最终选择搁置论文发表并转投 NSA,于 1986 年起担任国家计算机安全中心首席科学家。

1988 年,老莫里斯的儿子,23 岁的康奈尔研究生罗伯特・塔潘・莫里斯(Robert Tappan Morris,在黑客世界被称为 RTM)得知伯克利开发的邮件系统 sendmail 存在漏洞。他利用 fingerd 服务的栈溢出漏洞,编写了首个互联网蠕虫,然后利用 Sendmail 漏洞侵入了 MIT 的邮件服务器。

1988 年整个互联网的主机仅有 6 万多台,MIT 是早期互联网的中心节点。他本想通过投递蠕虫来测试网络规模,却因重感染逻辑失控,直接瘫痪了早期互联网。美国国防部迅速成立计算机应急响应小组(CERT),FBI 也介入调查。在父亲劝说下,小莫里斯主动联系 FBI 投案。

巧合的是,1986 年美国刚刚通过了《计算机欺诈与滥用法案》。1990 年,小莫里斯成为该法案下的首位被定罪者,获 3 年缓刑、400 小时社区服务与 10000 美元罚金。

判决后他低调回归,1995 年与保罗・格雷厄姆创立 Viaweb(早期 SaaS 电商工具),1998 年以 4900 万美元售予雅虎。

2005 年,他又联合保罗・格雷厄姆创立顶级孵化器 Y Combinator,后任 MIT 终身教授,专注网络与分布式系统研究。截至 2025 年,YC 累计孵化超 5000 家公司,总估值约 6000 亿美元,其中包括 Dropbox、Airbnb、GitLab、Coinbase、Scale AI 等。

2014 年,保罗・格雷厄姆钦点山姆・奥特曼(Sam Altman)继任 Y Combinator 总裁。2019 年,山姆・奥特曼正式出任 OpenAI CEO,并转任 Y Combinator 董事长。 虽然 OpenAI 不在 YC 的投资名单上,但包括小莫里斯在内的 YC 创始人都以个人身份投资了 OpenAI。

2015 年,小莫里斯获得了美国计算机协会(ACM)会士称号,2019 年当选美国工程院院士。
02. 栈溢出与莫里斯蠕虫
什么是栈溢出?计算机程序的运行依赖于一个个具有特定功能的函数调用。我们可以把程序运行时的栈(Stack),想象成森林里每个路口的小屋。
为了能安全原路返回,程序会在每一个路口放下一个路标(返回地址)和一堆临时物资(局部变量),标记“我从哪里来,办完事后要回到哪里”。
正常情况下,程序办完事情,会顺着路标一步步返回。但是,栈溢出攻击就像一场精心策划的陷阱:攻击者知道程序会在栈上存放路标和物资,于是故意塞给程序一大堆超长、过量的信息,就像强行让你抱着远远超过你能拿住的物资走进森林。

这些多余的数据(临时物资)越堆越多,直接把原本正确的路标(返回地址)覆盖、冲掉,并在原地换上攻击者提前准备好的假路标。
程序办完事情准备返回时,完全没发现路标被动了手脚。它乖乖跟着被修改的假路标走,结果没有回到安全的出发点,反而被直接引向了攻击者早已准备好的“黑暗城堡”——即攻击者预先藏好的恶意代码。程序一踏入,就彻底落入攻击者的掌控。
这就是栈溢出的本质:用超长数据淹没正常存放的返回地址,把程序的“回家路”改成通往攻击者的控制区。 小莫里斯就是利用栈溢出的漏洞,将自己的蠕虫病毒传播到整个网络。
栈溢出曾是互联网早期最主要的攻击方式。在 2000 年前后,缓冲区溢出类漏洞(以栈溢出为核心)一度占据网络攻击事件总量的 50% 以上,是造成远程代码执行的最主要原因。
随着现代操作系统引入栈随机化、栈不可执行保护以及编译器检查等机制,栈溢出在全部网络攻击类型中的直接占比已不足 5%。然而,在 C/C++ 编写的底层软件、操作系统组件、固件及 IoT 设备中,内存安全漏洞仍占高危漏洞的 70% 左右,其中栈溢出约占内存破坏类漏洞的 30%~50%。在嵌入式与工控领域,它依旧是实现远程代码执行最危险的手段之一。

从上图可以看到,只要栈数据向低地址溢出就会覆盖返回地址,从而为攻击打开窗口。那么,如果数据溢出向返回地址相反的方向,不就安全了吗?有没有这样的系统呢?
环顾 x86、ARM、MIPS、SPARC、Alpha、RISC-V、LoongArch、SW64,全都是栈向下生长(向低地址扩展),因此都存在栈溢出风险。
但还真有一个特例,它天生免疫这种经典的栈溢出攻击,它就是 PA-RISC。接下来,我们就来深入了解这个计算机体系结构史上独一无二、特立独行的 CPU。
03. HP 的大公司病
作为硅谷的鼻祖,惠普的故事早已广为人知。1939 年,斯坦福毕业生威廉・休利特(William Hewlett)与戴维・帕卡德(David Packard)在帕洛阿托的车库创立惠普。其首款产品音频振荡器 HP 200A 因被迪士尼电影《幻想曲》采用而一举成名。


二战期间,惠普转型军用品生产。战后聚焦电子测试仪器,1968 年推出世界首款台式科学计算器 HP 9100A,售价高达 4900 美元。

1972 年发布划时代的 HP-35 掌上科学计算器,淘汰了工程计算尺。1973 年,惠普正式进军计算机领域,推出 HP 3000 商用微电脑,搭载自研栈式 CISC 架构与专有 MPE 操作系统。

为适配多元化业务,惠普从 50 年代起推行事业部制,各业务线独立决策、自负盈亏。商用机坚持自研架构,而桌面设备则尝试第三方芯片,操作系统也分化为 MPE、定制化 UNIX 等多个分支。独立事业部手握产品定义、芯片选型的绝对权力,总部仅把控盈利目标,这直接导致计算机业务既无统一架构,也无统一操作系统,形成 “四大 CISC 架构 + 三套核心操作系统” 并行的双重分裂局面。
| 产品线 |
核心架构 |
专属操作系统 |
| HP 3000 商用机 |
自研 16 位栈式 CISC |
MPE/XL(专有商用 OS) |
| HP 9000 Series 500 |
自研 32 位 FOCUS 架构 |
HP-UX(基于 UNIX System V) |
| HP 9000 Series 300 |
摩托罗拉 68k |
HP-UX 简化版 + 第三方 UNIX |
| HP 9000 Series 200 |
SOS 工艺 CISC |
RT-11 衍生版(实时 OS) |
这种分裂不仅使不同产品线的硬件无法兼容,不同操作系统也需要单独开发软件。为 HP 3000 开发的商用软件不能在 HP 9000 上运行,即使同属 HP 9000 系列,68k 机型与 FOCUS 机型的 HP-UX 版本也存在功能割裂,研发与维护成本呈几何级增长。
而此时,竞争对手早已章法分明:
- Intel:All in x86 架构,依托 DOS/Windows 统一生态,构建 PC 帝国。
- SGI:聚焦图形工作站,绑定 MIPS 芯片与 IRIX 操作系统,软硬件深度垂直整合。
- IBM:一边靠大型机稳守高端市场,一边早在 1980 年完成 RISC 技术储备。
当伯克利 RISC-1 芯片在 1983 年证明“精简指令集 = 更高性能”时,惠普仍在双重分裂的泥潭中内耗,错失了 RISC 转型的黄金窗口期。
04. 绝境中的破局
“事业部的自治曾让我们成功,但如今架构与系统的双重分裂已成为生死危机。” —— 约翰・杨(John Young)
内忧外患下,时任 HP 执行副总裁约翰・杨力排众议,启动了 SPectrum 项目。目标直指“双重统一”:用一套 RISC 架构终结硬件分裂,用统一的 HP-UX 终结操作系统分裂。
这个项目汇集了 HP 实验室的顶尖工程师,核心挑战是“既要统一架构,又要兼容四大产品线的存量软件与操作系统”。为了降低 MPE/XL 与 HP-UX 的迁移成本,团队保留了 HP 3000 栈式架构的核心基因,却做出了一个颠覆行业的决定:采用向上生长的栈。
1986 年 2 月 26 日,PA-RISC 1.0(Precision Architecture RISC)随 HP 3000 Series 930 和 HP 9000 Model 840 正式发布。首款处理器 TS1(代号 PCX)诞生,主频 40MHz,IPC 达 1.0,性能较前代 FOCUS 架构提升 3 倍。

这款迟到的 RISC 芯片,终于让惠普实现了“硬件架构统一 + HP-UX 系统统一”的双重目标,得以在高端服务器和工作站市场与 Sun SPARC、IBM POWER 正面抗衡。
05. 天生防溢出的孤勇者
在所有主流架构(x86、ARM、MIPS、SPARC、Alpha)都采用“向下生长栈”时,PA-RISC 的“向上生长栈”堪称行业异类。
PA-RISC 的栈向上生长,这意味着栈帧中的关键数据——返回地址存放在低地址侧,而局部变量则存放在高地址侧。当发生缓冲区溢出时,溢出的数据是向更高地址扩散,永远碰不到位于低地址的返回地址。
相比之下,向下生长栈的返回地址在高地址侧,与局部变量相邻,一旦发生溢出,返回地址极易被覆盖,从而触发安全漏洞。

根据 HP 安全团队 1990 年的测试,x86 栈溢出攻击成功率高达 92%,而 PA-RISC 的成功率为 0%。这个源于 HP 3000 兼容性需求的设计,并非刻意为了安全,却意外成为 PA-RISC 最独特的技术优势,让它成为当时最安全的 RISC 架构之一。
06. 从巅峰到落幕
1989 年,HP 推出 PA-RISC 1.1,重点强化浮点执行单元与流水线效率。

1994 年,PA-RISC 2.0 架构完成 64 位扩展。1996 年,首款 64 位实现 PA-8000 发布,采用 0.35μm CMOS 工艺,支持 4 发射超标量与乱序执行。

惠普凭借“PA-RISC + 统一 HP-UX”生态,在高端 UNIX 服务器市场份额一度突破 20%,成为 Sun、IBM 之后的第三大巨头。
然而,转折点很快到来。1995 年,Intel 的 Pentium Pro 处理器开始向上侵蚀服务器市场。同时,HP 内部为削减研发成本,在 CEO 路・普莱特(Lew Platt)的主导下,决定与 Intel 合作开发下一代架构 Itanium(IA-64),PA-RISC 逐渐被战略边缘化。
惠普为从 PA-RISC 到安腾的过渡做了充分准备,包括在 Itanium 芯片中集成二进制翻译引擎、提供迁移工具链、实行双架构并行销售等。但计划赶不上变化,初代安腾延期 3 年发布,初期性能未达预期,且 AMD 的 x86-64 兼容架构快速崛起,导致大量 PA-RISC 客户转向了 x86 平台而非安腾。

最终,惠普于 2008 年正式停止 PA-RISC 服务器销售,2013 年终止所有技术支持。而 Itanium 也因市场萎缩,于 2021 年被 Intel 宣布停产。

x86 架构则凭借其巨大的生态优势,击败了 MIPS、SPARC、PA-RISC 等一众 RISC 架构,牢牢统治了服务器与桌面市场。这场以“降本增效”为名的战略选择,最终让独特的 PA-RISC 走向了落幕。
后记
PA-RISC 因“架构和操作系统双重分裂”的危机而生,却用统一的 RISC 架构与 HP-UX 证明了“垂直整合战略”的正确性。它那“向上生长”的栈,是兼容性需求与工程创新的意外结合,成为了抵御经典栈溢出漏洞攻击的天然屏障,也在计算机体系结构史上留下了独一无二的技术印记。
它的故事,既反映了技术浪潮中生态力量的碾压性优势,也折射出企业战略摇摆可能付出的沉重代价。那个特立独行的“向上生长栈”,像一位孤勇的挑战者,在主流架构的洪流中,完成了一次精彩而悲壮的谢幕。
本文由 云栈社区 整理发布,聚焦于计算机历史与技术深度解析。