首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >灰盒自动化漏洞利用生成:Gollum针对解释器堆溢出的模块化利用方案

灰盒自动化漏洞利用生成:Gollum针对解释器堆溢出的模块化利用方案

原创
作者头像
qife122
发布2025-08-22 14:28:34
发布2025-08-22 14:28:34
950
举报

Gollum:针对解释器中堆溢出的模块化灰盒漏洞利用生成方案

在即将召开的ACM计算机与通信安全会议(CCS)上,我将发表一篇关于自动化漏洞利用生成(AEG)的论文,标题与本博客文章相同。论文可在此处获取。文中讨论了一个利用解释器中堆溢出漏洞自动发现原语并构建利用链的系统。该方法与大多数AEG方案的不同之处在于完全采用灰盒测试,依赖轻量级插桩和各类模糊测试式输入生成。下图展示了系统的工作流程,每个阶段在论文中均有详细说明。

在评估方面,我使用PHP和Python解释器中的10个漏洞作为测试样本,将其输入Gollum系统以搜索利用原语并构建漏洞利用链。

论文中值得重点关注的三个核心要点(详见论文):

  1. 多阶段灰盒测试方法undefinedAEG是一个多阶段过程。通过将问题分解为不同阶段,可以利用轻量级插桩与相对简单的输入生成相结合(类似模糊测试)的方式攻破多个阶段。传统AEG系统主要依赖符号执行,虽然存在优势,但也伴随可扩展性问题。在去年USENIX Security的论文中,我展示了如何通过轻量级插桩,结合应用程序现有测试用例与模糊器,来发现可用于堆布局操作的语言片段及待破坏的目标对象。在CCS论文中,我进一步展示了如何用类似方法发现利用原语,并在特定场景下构建完整利用链。值得注意的是,Wu等人的FUZE论文也采用了类似方法。预计未来几年,模糊测试驱动的漏洞利用生成将成为主流,而符号执行将仅在需要位精确推理且状态空间爆炸可控的场景中辅助使用。
  2. 堆布局延迟解析方案undefined针对堆溢出的自动化利用构建需要解决两个问题:实现目标堆布局和构建利用链其余部分。本文提出"延迟解析"方法,逆序处理堆布局操作与利用链生成。这样做的原因很直接:若实现堆布局的过程远比其他步骤耗时(如Gollum中),则应先验证在假设堆布局可行的前提下能否生成利用链,仅当确认有效时才真正解决布局问题。具体实现中,我构建了一个可请求特定布局的堆分配器,先假设布局成立并尝试生成利用链,最后再实际解决布局问题。undefined这种方法可推广至其他漏洞类型的利用生成(如竞态条件漏洞),允许先请求特定调度方案,验证其可行性后再搜索实现该调度的输入。此外,该方法支持人工与自动组件混合使用:当堆布局解决方案的预条件不满足时,仍可自动生成假设布局成立时的利用链,最终由开发者手动完成布局破解。
  3. 遗传算法优化堆布局undefined在去年USENIX Security论文中,我讨论了用于堆布局操作的随机搜索算法。实验表明,采用遗传算法(以目标内存块相邻距离为优化目标)能显著提升性能,但代价是实现更复杂且耗时。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Gollum:针对解释器中堆溢出的模块化灰盒漏洞利用生成方案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档