漏洞挖掘实战:从模糊测试到CVE发现的暑期安全之旅

本文详细记录了作者在Trail of Bits实习期间通过模糊测试技术发现VLC媒体播放器漏洞的全过程,包括AFL和MiniFuzz工具的使用、漏洞分析细节、CVE-2015-5949的披露,以及后续的Web安全评估和漏洞赏金实践。

Summer @ Trail of Bits

开始模糊测试

今年夏天,我有幸作为高中实习生加入Trail of Bits工作。作为回报,我需要写一篇关于这次实习的博客文章。那么,闲话少说,直接开始吧。

夏季从模糊测试开始,这是我听说过但从未尝试过的技术。基本概念是向程序输入随机数据直到它崩溃,然后分析崩溃来发现漏洞。由于时间限制,自己编写模糊器没有意义,所以我开始在网上寻找现有的模糊器。

我找到的第一个工具是CERT的Failure Observation Engine(FOE),看起来很有前途。FOE有很多选项可以精确调整模糊器,使其专门针对目标进行优化。然而,我对FOE的体验并不稳定。对于某些目标,该工具运行一次就停止,而不是持续运行(模糊器应该如此)。为了尽快开始,我决定转向其他工具。我最终选择了Linux的american fuzzy lop(AFL)和Windows的Microsoft MiniFuzz。它们各有优缺点。AFL最适合源代码,这限制了其适用范围为开源软件(虽然对闭源二进制文件有实验性支持,但速度明显较慢)。使用AFL从源代码编译可以让模糊器确定代码覆盖率并在其界面中提供有用的反馈。MiniFuzz则相反:它运行在闭源的Windows软件上,运行时提供的反馈很少。然而,崩溃数据非常有用,因为它提供了程序崩溃时所有寄存器的值——这是其他模糊器没有提供的。与AFL更复杂的编译设置相比,MiniFuzz非常即点即用。

分析崩溃

一旦模糊器在目标上设置并运行(例如Video Lan的VLC、Wireshark和Image Magick等),就开始分析崩溃。AFL在VLC中报告了几个崩溃。在验证这些崩溃是否可重现时,我注意到有几个是在尝试释放地址0x7d时出现的段错误。这让我觉得奇怪,因为地址太小了,所以我凭直觉在十六进制编辑器中打开崩溃输入并搜索‘7d’。果然,在文件深处有一个匹配:0x0000007d。我将其改为容易识别的0x41414141,并再次运行文件。这次段错误发生在,你猜对了,0x41414141!受到可以从文件中控制程序地址的鼓舞,我开始寻找这个漏洞。这涉及一个漫长的过程,让我不情愿地熟悉了gdb和VLC源代码。该漏洞允许释放两个任意的、用户控制的指针。

漏洞详情

VLC将文件的不同部分读取为盒子(boxes),并在标记联合(tagged union)中进行分类。该漏洞是由于文件中stsd盒子的大小被更改,增加其大小,导致其将后续的stts盒子视为其子项而导致的类型混淆。VLC通过根据盒子的类型及其父类型索引到函数表中来读取文件中的盒子。但由于父类型错误,它找不到匹配项,而是使用默认读取,将文件读取为vide类型盒子。后来,在释放盒子时,它仅通过检查自身类型来查找函数,因此触发了正确的函数。VLC尝试释放一个被读取为通用vide盒子的stts盒子,并直接从stts盒子中释放两个地址。

QuickTime容器原子

CVE-2015-5949

控制两个释放的地址很可能被利用,所以是时候报告这个漏洞了。我通过oCERT进行报告,他们非常 helpful 地与VLC开发者沟通修复问题并分配了CVE(CVE-2015-5949)。经过一些来回沟通,问题得到解决,是时候转向新事物了。

转向Web安全

夏季过半,还有另一半时间学习新东西,我开始探索Web安全。我从一些CTF和NYU Hack Night中对此有一些背景,但我想获得更深入和实用的理解。与模糊测试容易上手不同,Web安全需要更多的事先知识。我花了一周时间尽可能从《Web Application Hacker’s Handbook》和相应的MDSec实验室中学习。有了扎实的基础,我将这些培训付诸实践。

漏洞赏金狩猎

HackerOne有一个拥有漏洞赏金计划的公司的目录,这似乎是最好的起点。我按加入日期排序,选择了最新的公司——它们可能还没有被太多人看过。使用不可或缺的工具BurpSuite,我探查了这些网站,寻找任何异常。通过查看ok.ru、marktplaats.nl和united.com等网站,我搜索了易受攻击的功能和安全问题,并提交了一些报告。我有一些成功,但它们仍在披露过程中。

安全评估

为了结束实习,我对纽约的一家科技初创公司进行了安全评估,应用了我所获得的技能。我发现了应用逻辑、访问控制和会话管理中的漏洞,其中最严重的是一个逻辑缺陷,对公司构成了重大的财务风险。然后我有机会在与公司的会议中展示这些漏洞。报告得到了好评,公司正在实施修复。

结束语

在Trail of Bits的这段经历非常棒。我在应用和Web安全方面打下了坚实的基础,这是一个很好的工作场所。我将休息一周去看大学,但高年级期间我会回来兼职工作。

如果你喜欢这篇文章,请分享: Twitter LinkedIn GitHub Mastodon Hacker News


页面内容 开始模糊测试 分析崩溃 漏洞详情 CVE-2015-5949 转向Web安全 漏洞赏金狩猎 安全评估 结束语 近期文章 我们构建了MCP一直需要的安全层 利用废弃硬件中的零日漏洞 Inside EthCC[8]:成为智能合约审计员 使用Vendetect大规模检测代码复制 构建安全消息传递很难:对Bitchat安全辩论的 nuanced 看法 © 2025 Trail of Bits. 使用Hugo和Mainroad主题生成。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计