雷锋网AI开发者按:近日,GitHub在全球开发者大会上,宣布启动了一个名为「安全实验室(SecurityLab)」的新社区计划。该计划中,GitHub不仅开源了代码分析引擎CodeQL,还设置了奖励金最高为美元的漏洞奖励计划。
GitHub安全实验室的任务是启发并赋能全球安全研究社区,保护全球代码的安全;意将进一步解决代码安全难题,完善开源社区不足,为开源社区的优质代码贡献打下良好基础。这一计划也得到了很多大牛企业为代表的支持,包括Microsoft,Google,Intel等,现雷锋网AI开发者将这一社区具体内容整理编辑如下。
安全漏洞的火眼金睛CodeQL
CodeQL是GitHub刚推出的一款新开源工具。这是一款语义代码分析引擎,旨在查找大量代码中同一漏洞的不同版本。
CodeQL可以帮助我们跨代码库发现漏洞;允许我们像查询数据一样查询代码、编写查询以查找漏洞的所有变体,并将其永久消除;共享该查询结果以帮助其他人消除漏洞。
其中,QL是查询语言,也是CodeQL的基础,专用于分析代码。这是一种逻辑编程语言,因此它由逻辑公式组成。QL使用公共逻辑连接词(如and,or,和not)、量词(如forall和exists)、以及其他重要的逻辑概念。查询语句示例如下(实现将null添加到集合):
importjavafromMethodAccesscall,Methodaddwherecall.getMethod().overrides*(add)andadd.hasName(add)andadd.getDeclaringType().getSourceDeclaration().hasQualifiedName(java.util,Collection)andcall.getAnArgument()instanceofNullLiteralselectcall
QL还支持递归和聚合,这允许我们可以使用简单的语法编写复杂的递归查询并直接使用函数库,比如:count,sum和average。
因此,使用CodeQL编写的查询可以发现漏洞及重要安全漏洞的变体。而除了GitHub平台外,CodeQL也已经应用于其它平台的漏洞代码扫描活动中,如Mozilla。
更多关于QL