雷锋网 AI 开发者按:近日,GitHub 在全球开发者大会上,宣布启动了一个名为「安全实验室 (Security Lab)」的新社区计划。该计划中,GitHub 不仅开源了代码分析引擎 CodeQL,还设置了奖励金最高为 3000 美元的漏洞奖励计划。
GitHub 安全实验室的任务是启发并赋能全球安全研究社区,保护全球代码的安全;意将进一步解决代码安全难题,完善开源社区不足,为开源社区的优质代码贡献打下良好基础。这一计划也得到了很多大牛企业为代表的支持,包括 Microsoft,Google,Intel 等,现雷锋网 AI 开发者将这一社区具体内容整理编辑如下。
![4205df729e25f080e76c8b91137d4b8c.png](https://i-blog.csdnimg.cn/blog_migrate/237543040f5ab732f901f1cfb47ddffb.jpeg)
安全漏洞的火眼金睛 CodeQL
CodeQL 是 GitHub 刚推出的一款新开源工具。这是一款语义代码分析引擎,旨在查找大量代码中同一漏洞的不同版本。
CodeQL 可以帮助我们跨代码库发现漏洞;允许我们像查询数据一样查询代码、编写查询以查找漏洞的所有变体,并将其永久消除;共享该查询结果以帮助其他人消除漏洞。
![158afe55aefefbfc19e413dcd5809515.png](https://i-blog.csdnimg.cn/blog_migrate/1c612546f3404e19f5bda53064df5655.jpeg)
其中,QL 是查询语言,也是 CodeQL 的基础,专用于分析代码。这是一种逻辑编程语言,因此它由逻辑公式组成。QL 使用公共逻辑连接词(如 and,or,和 not)、量词(如 forall 和 exists)、以及其他重要的逻辑概念。查询语句示例如下(实现将 null 添加到集合):
import java
from MethodAccess call, Method add
where
call.getMethod.overrides*(add) and
add.hasName("add") and
add.getDeclaringType.getSourceDeclaration.hasQualifiedName("java.util