跳转至

CGC 超级挑战赛

本节内容摘自李康教授于 2016 年 8 月 17 日 ISC 互联网安全大会演讲《网络超级挑战赛中的漏洞发掘与利用》。

CGC 网络超级挑战赛是全球首次机器网络攻防比赛,比赛过程全自动,无任何人工干预。考验机器自动漏洞挖掘、自动软件加固、自动漏洞利用和自动网络防护水平。使用简化的 Linux 操作系统------DECREE,类似 Snort的规则过滤防火墙。对 Linux 二进制程序进行漏洞挖掘。所有参赛队都没有程序源码。

在 2016 年的 CGC 比赛中,挑战的赛题包含了 53 种 CWE。其中包含 28 个堆溢出漏洞、24 个栈溢出漏洞、16 个空指针访问漏洞、13 个整数溢出漏洞和 8 个 UAF 漏洞。

攻防过程由组织方发出挑战程序,各团队服务器可以向组织方提供补丁程序,防火墙规则和攻击程序。修补过的程序和防火墙规则会分发给其他团队。组织方为每个团队运行挑战程序,进行服务测试和攻击并进行评估。

性能评价指标

  1. 服务正常访问的反应时间;
  2. 打补丁频率;
  3. 加固程序的效率;
  4. 成功防御攻击的次数统计;
  5. 攻击成功次数统计。

明确核心任务

拿到二进制程序,进行自动分析,在明确防火墙规则后对程序进行加固并生成攻击程序。

分析方法

  1. 具体执行-使用正常的执行模式;
  2. 符号执行-辅助 Fuzzing 阶段的路径选择;
  3. 混合执行-带有具体输入的符号执行,根据输入选择路径,但保留符号条件。

CGC 经验总结

  1. 完美防守的难度远大于生成攻击的难度;
  2. 二进制加固程序需要避免功能损失,并最小化性能损失;
  3. 安全自动化处理的大趋势已经形成,多数团队可以在几秒钟的时间对简单应用形成攻击并生成有效防守;
  4. 对抗中的策略值得研究,根据自身和对手的攻防能力,对资源和动作进行合理调整。