【NASAC 2018】原型竞赛—命题型(漏洞检测)

2018-12-26 16:06:11 / 打印

2018年11月23日,第十七届全国软件与应用学术会议(NASAC 2018)源代码漏洞检测原型竞赛(复赛)在深圳大学顺利举行。通过初赛的四个原型工具及其研发团队经过漏洞检测和技术汇报两个环节的激烈角逐,最终由清华大学研制的Tsmart和香港科技大学研制的Secpoint拔得头筹,并列一等奖(各获得奖金3万元)。中科院计算所研制的Wukong虽以微弱差距屈居二等奖(奖金2万元),但在检测“真实”赛题以及技术汇报环节均有出色表现。

本次源代码漏洞检测原型竞赛采取“真枪实弹”的现场比拼形式,根据漏洞检测(占80%)与技术汇报(占20%)两个环节的加权得分决出最终名次。按照参赛工具所能支持的程序语言,出题方分别设计了C/C++和Java两套赛题,并预置了包含缓冲区溢出、双重释放、命令注入等在内的可能导致严重危害的多种类型的漏洞。为进一步推动和探讨静态漏洞检测系统如何在效率与精度、误报与漏洞之间合理权衡等核心技术问题,出题方还依据近年来实际软件中出现的造成严重影响的真实漏洞(如OpenSSH的心脏滴血漏洞)专门设计了难度逐级递增的“真实”赛题,并对不同级别赛题的漏报和误报设置了不同的得分标准。

与紧张激烈的漏洞检测环节相比,技术汇报环节气氛活跃、互动热烈。来自中科院信工所、360代码卫士、清华大学以及南京大学的7位评委及现场观众在听取了各参赛队伍代表的汇报后,就影响漏洞检测精度的指针分析技术、各参赛系统在大规模真实程序的应用效果等问题进行了深入的交流与探讨。

“全国软件及应用学术会议”(NASAC)从2008年开始组织原型系统交流,并得到了计算机学会(CCF)的支持;2013起,在原型系统交流的基础上,由软件工程专委与系统软件专委联合举办“软件研究成果原型系统竞赛”,分为“自由型”和“命题型”。本届“命题型”原型系统竞赛分两个命题,源代码漏洞检测原型竞赛是其中之一,由CCF系统软件专委会、中国科学院信息工程研究所以及深圳大学计算机与软件学院共同承办,信工所负责赛事组织与赛题设计,深圳大学负责比赛环境与技术支持,华为和360代码卫士提供经费赞助。

Tsmart是清华大学自主研发的面向C软件代码安全的分析工具集,具有代码合规性分析、缺陷静态检测、缺陷自动修复等功能,可支持数十类常见的内存安全和整数运算缺陷的检测,可检测对象的规模达百万行级别代码检测。该工具集已在国产操作系统、轨道交通、航空航天、装备控制领域帮助重点行业单位检测到若干难以发现、调试的重要缺陷,减小了因为软件缺陷导致的成本和损失。

Secpoint是源伞最新的Java分析引擎之一,采用定理证明技术来推导程序语义逻辑。 其独有的基于JVM字节码的二进制分析能力,可以在不丢失精度,不接触源码的情况下进行高精度程序验证。并将c/c++/java多语言的分析能力统一到一个分析框架中,通过机器学习的方法自动对代码中的质量安全风险点进行建模和分析。

Wukong可以有效弥补已有的众多开源及商业静态分析工具的不足,准确高效地检测出深度安全错误。为达到这一技术效果,工具实现了最新的上下文敏感流敏感的指针分析方法来分析跨过程的指针间依赖关系,并对指针分析结果进行进一步路径敏感的精化。且出于效率考虑,并没有采用通用的SMT求解器来进行路径敏感分析,而是采用定制的约束求解方法高效求解常见约束条件。实验表明,Wukong可以有效分析包括谷歌浏览器Chrome(>1500万行C++代码) 在内的大规模应用,并从 Chrome中检测到上百个全新的深度安全错误。