一念Jeff LiWriting · zhipeng.li中文

Aleph One and His Classic "Smashing The Stack For Fun And Profit"

Aleph One和他的名篇《Smashing The Stack For Fun And Profit》

Taking his handle from Cantor's ℵ₁, Elias Levy ran Bugtraq for five years and made full disclosure an industry norm, only to be branded a sellout when SecurityFocus was sold to Symantec. His 1996 stack-overflow tutorial in Phrack issue 49 went from stack frames and return addresses all the way to shellcode, and it forced defenders to come up with StackGuard and ASLR. Back in the Active Defense Lab, I worked through it until dawn before I finally cleared that hurdle.

Elias Levy,化名 Aleph One,生于1970年代(具体日期不详),是阿根廷裔美国计算机科学家,现被公认为网络安全领域的先驱人物。他在阿根廷度过童年,随后随家人移民美国,定居加利福尼亚州。Levy 的成长正值个人计算机革命的兴起,1980年代的 BBS(公告板系统)文化和早期互联网为他提供了探索技术的土壤。少年时期,他对编程和电子设备表现出浓厚兴趣,尤其被 Unix 系统和 C 语言的强大功能所吸引。虽然没有公开的学历细节,但推测他通过自学和社区交流积累了深厚的技术知识,这在当时的黑客文化中颇为常见。

Levy 的化名“Aleph One”源于数学符号“ℵ₁”,表示第一个无穷基数,暗示他对知识的无限追求和对技术边界的挑战。这一名字不仅反映了他的技术哲学,也成为黑客社区中的标志性符号。他的早期活动集中于 BBS 和邮件列表,化名让他在匿名性与声誉之间找到平衡。

1996年5月14日,Levy 成为 Bugtraq 邮件列表的管理员,这是一个专注于安全漏洞“完全披露”(full disclosure)的平台。Bugtraq 由 Scott Chasin 创建,但 Levy 在1996年至2001年10月15日的管理期间将其推向高峰。他接手时,网络安全尚属新兴领域,厂商常隐瞒漏洞,而 Levy 坚持公开披露,迫使企业正视问题。他的管理风格严谨,要求投稿者提供技术细节而非空洞声明,确保 Bugtraq 成为可靠资源。

在 Bugtraq 的五年多时间里,Levy 审核了数千份漏洞报告,涵盖操作系统、应用程序和网络协议。他不仅提升了社区对漏洞的认识,还改变了厂商的响应方式。例如,微软在1990年代末开始重视补丁发布,部分得益于 Bugtraq 的压力。Levy 的工作让系统管理员和开发者受益匪浅,推动了安全行业从被动防御到主动修补的转变。

2000年,Levy 与人共同创立一家专注于安全情报的公司,(为了致敬xundi/quack/casper他们的xfocus), Aleph One的新公司取名SecurityFocus,他担任首席技术官(CTO)。SecurityFocus 整合了 Bugtraq 和其他资源,提供漏洞数据库和分析工具,成为业内标杆。2002年8月6日,Symantec 以7500万美元收购 SecurityFocus,这一决定引发争议。许多黑客指责 Levy “出卖原则”,认为商业化违背了 Bugtraq 的自由精神。为此,Full-Disclosure 邮件列表诞生,作为对 Levy“妥协”的抗议。尽管如此,Levy 在 Symantec 任职期间继续推动安全研究,直至逐渐淡出公众视野。

1996年11月8日,Levy 以 Aleph One 的身份在 Phrack 第49期发表《Smashing The Stack For Fun And Profit》。这篇文章是他的代表作,也是网络安全史上的里程碑。它首次以清晰、系统的方式向公众介绍了栈缓冲区溢出漏洞及其利用技术,彻底改变了漏洞研究的格局。文章发布时,Levy 已通过 Bugtraq 建立声誉,但此文让他从管理员转型为技术教育者。

文章的影响深远。它不仅普及了缓冲区溢出攻击的概念,还启发了无数安全研究人员和黑客。1990年代末,基于此技术的攻击激增,迫使操作系统(如 Linux 和 Windows)引入保护机制,如栈随机化和不可执行栈。Levy 的文章还间接推动了安全教育,至今仍是大学课程和认证培训的参考资料。

然而,Levy 的成功也带来争议。部分人认为他公开技术细节助长了恶意攻击,但他坚称知识共享是进步的关键。他在1996年接受 NetCafe 采访时表示:“隐藏问题不会解决问题,只有公开才能迫使改进。”这种理念贯穿了他的职业生涯。

离开 Symantec 后,Levy 的公开活动减少。他未再以 Aleph One 的身份发表重要作品,生活细节也鲜为人知。据推测,他可能从事咨询或私人研究,避开了聚光灯。2010年代,网络安全社区仍不时提及他的贡献,如在 DEF CON 和 Black Hat 大会上回顾其文章的影响。

Levy 的遗产在于他对安全文化的塑造。Bugtraq 奠定了漏洞披露的规范,SecurityFocus 开创了商业安全情报的先河,而《Smashing The Stack》则定义了现代漏洞利用的起点。他的工作促成了 EFF 等组织的诞生,也为 OWASP 等后续项目铺路。今天,尽管技术已远超1996年的水平,Levy 的思想——好奇心、公开性和责任感——仍指引着安全领域。

**

**

我对这篇文章的记忆应该是1998/1999年了。那时Sunxm博士他们搞了一个攻击实验室,后来在院士的建议下改名为积极防御实验室。他们搭建了一个实验环境,可以让大家来做攻击。有很多关卡,一关比一关难,很好玩。好像是倒数第二关是一个缓冲区溢出的问题,当时我就翻出了知道但没仔细读的这篇文章,照着文章现学现用,直到天亮了才过了这一关,然后赶快去上班。说起来,这应该是最早的网络安全CTF了吧。

《Smashing The Stack For Fun And Profit》发表于 Phrack 杂志第49期(1996年11月8日),文件编号为“File 14 of 16”。Phrack 当时由 daemon9 编辑,是黑客社区的权威刊物,吸引了技术先锋和地下文化爱好者。文章发布时,互联网正迅速普及,Unix 系统广泛用于服务器,但安全意识和技术防护尚不成熟。缓冲区溢出漏洞虽已被少数专家知晓,却未被广泛理解或利用。Levy 的文章填补了这一空白,以通俗语言和详细示例揭示了漏洞的本质。

文章标题既幽默又挑衅,暗示了对技术的玩乐态度和潜在的破坏力。它在 Bugtraq、r00t 和 Underground.Org 的支持下发布,体现了社区协作精神。Levy 的目标不仅是展示技术,更是激发读者“像攻击者一样思考”,推动安全领域的进步。

文章分为几个核心部分,系统讲解栈缓冲区溢出的原理与利用:

  1. 栈基础:
  • Levy 从 C 语言的栈结构入手,解释了栈如何存储局部变量、返回地址和函数参数。他用图示展示了栈帧布局,如:
bottom of  DDDDDDDDEEEEEEEEEEEE  EEEE  FFFF  FFFF  FFFF  FFFF  top of
memory     89ABCDEF0123456789AB  CDEF  0123  4567  89AB  CDEF  memory
           buffer                sfp   ret   a     b     c
<------   [SSSSSSSSSSSSSSSSSSSS][SSSS][0xD8][0x01][0x02][0x03]
  • 他指出,当程序向栈缓冲区写入超出分配的数据时,会覆盖相邻内存,包括返回地址。
  1. 溢出原理:
  • 通过示例(如 char buffer[5]),Levy 展示了溢出如何发生。例如,向 5 字节缓冲区写入 10 字节数据,可能改写返回地址,导致程序跳转到任意位置。

  • 他用 gdb(GNU 调试器)演示如何定位栈变量和返回地址,强调溢出可控性。

  1. 利用技术:
  • Levy 介绍了“shellcode”概念,即注入的可执行代码。他提供了一个简单的 C 程序:
#include <stdio.h>
void main() {
    char *name[2];
    name[0] = "/bin/sh";
    name[1] = NULL;
    execve(name[0], name, NULL);
}
  • 他将其编译为汇编,生成二进制 shellcode(如 \\\\x31\\\\xc0\\\\x50\\\\x68\\\\x2f\\\\x2f\\\\x73\\\\x68),并说明如何将其嵌入溢出数据。

  • 通过调整返回地址指向 shellcode,攻击者可获得 shell(如 /bin/sh)。

  1. 实战示例:
  • Levy 提供了一个溢出程序:
void function(int a, int b, int c) {
    char buffer1[5];
    char buffer2[10];
    int *ret = buffer1 + 12;
    (*ret) += 8;
}
  • 他用 gdb 调试,计算偏移量(如加 8 字节跳过某指令),展示如何精确操控程序流。
  1. 退出机制:
  • 为避免溢出失败导致崩溃,他补充了退出系统调用(如 exit(0)),确保程序优雅终止。

文章的技术创新在于其系统性和可操作性:

  • 栈溢出普及化:此前,缓冲区溢出被少数专家(如 Robert T. Morris,1988年蠕虫作者)利用,Levy 首次公开详细步骤,包括栈布局、shellcode 生成和调试。

  • 工具使用:他推荐 gdb 和静态编译(static),让读者能复现实验,降低了入门门槛。

  • 思想启发:Levy 强调“smash the stack”不仅是技术行为,更是思维方式,鼓励读者探索系统边界。

文章假设读者熟悉 C 和 Unix,但不要求深厚背景。Levy 的幽默(如“for fun and profit”)和直白风格(如“代码出错是因为我搞砸了,不是它讨厌我”)增加了可读性。

《Smashing The Stack For Fun And Profit》对网络安全影响深远:它普及了栈溢出技术,导致1990年代末攻击激增,如 Code Red 蠕虫(2001年)。操作系统开发者被迫引入保护,如栈保护(StackGuard)和地址随机化(ASLR)。文章成为安全研究的入门经典,被大学(如卡内基梅隆)和认证(如 CEH)引用。至今,缓冲区溢出仍是安全课程的基础。黑客社区既赞扬其开放性,也担忧其助长恶意行为。Levy 在 Bugtraq 的声誉为此文增添权威,但也让他背负“教唆犯罪”的指责。

争议焦点在于其双刃剑效应。支持者认为,公开漏洞是改进系统的唯一途径;批评者则称其为“犯罪教科书”。Levy 在1996年采访中回应:“知识本身无罪,关键在于使用它的人。”这一立场与他的 Bugtraq 理念一致。

尽管文章基于1996年的技术(如非保护栈的 Unix),其核心思想不过时。现代溢出攻击转向堆溢出或格式化字符串漏洞,但栈溢出的基本原理仍适用。保护机制的普及(如 DEP 和 ASLR)让复现原文示例需额外步骤(如禁用保护),但 Levy 的方法论——理解内存、调试程序、设计 payload——仍是漏洞研究的基石。

Elias Levy(Aleph One)通过 Bugtraq 和 SecurityFocus 塑造了安全披露文化,而《Smashing The Stack For Fun And Profit》则定义了漏洞利用的起点。

Originally published on the WeChat account 网安志异, 2025-03-07 · original

Comments

    No sign-in needed; comments appear right away.