CGC 超级挑战赛¶
本节内容摘自李康教授于 2016 年 8 月 17 日 ISC 互联网安全大会演讲《网络超级挑战赛中的漏洞发掘与利用》。
CGC 网络超级挑战赛是全球首次机器网络攻防比赛,比赛过程全自动,无任何人工干预。考验机器自动漏洞挖掘、自动软件加固、自动漏洞利用和自动网络防护水平。使用简化的 Linux 操作系统------DECREE,类似 Snort的规则过滤防火墙。对 Linux 二进制程序进行漏洞挖掘。所有参赛队都没有程序源码。
在 2016 年的 CGC 比赛中,挑战的赛题包含了 53 种 CWE。其中包含 28 个堆溢出漏洞、24 个栈溢出漏洞、16 个空指针访问漏洞、13 个整数溢出漏洞和 8 个 UAF 漏洞。
攻防过程由组织方发出挑战程序,各团队服务器可以向组织方提供补丁程序,防火墙规则和攻击程序。修补过的程序和防火墙规则会分发给其他团队。组织方为每个团队运行挑战程序,进行服务测试和攻击并进行评估。
性能评价指标¶
- 服务正常访问的反应时间;
- 打补丁频率;
- 加固程序的效率;
- 成功防御攻击的次数统计;
- 攻击成功次数统计。
明确核心任务¶
拿到二进制程序,进行自动分析,在明确防火墙规则后对程序进行加固并生成攻击程序。
分析方法¶
- 具体执行-使用正常的执行模式;
- 符号执行-辅助 Fuzzing 阶段的路径选择;
- 混合执行-带有具体输入的符号执行,根据输入选择路径,但保留符号条件。
CGC 经验总结¶
- 完美防守的难度远大于生成攻击的难度;
- 二进制加固程序需要避免功能损失,并最小化性能损失;
- 安全自动化处理的大趋势已经形成,多数团队可以在几秒钟的时间对简单应用形成攻击并生成有效防守;
- 对抗中的策略值得研究,根据自身和对手的攻防能力,对资源和动作进行合理调整。