随着启动Semmle的获得,GitHub旨在将持续漏洞检测作为其持续集成和持续部署服务的一部分。
GitHub的首席执行官Nat Friedman在声明中写道:
Semmle的革命性语义代码分析引擎允许开发人员编写查询,以识别大型代码库中的代码模式,并搜索漏洞及其变体。
Semmle创建了LGTM,这是一个旨在识别软件系统漏洞的连续代码分析平台。 LGTM的核心是Semmle QL,它是一种查询语言和代码搜索引擎,使代码分析能够发现和消除安全漏洞。
QL使用变体分析,一种技术安全工程师通常用来从已知的漏洞开始识别漏洞,该漏洞被视为搜索过程的种子。 换句话说,一旦通过例如笔测试或其他技术来识别漏洞,安全研究人员就会对代码库的其余部分进行审计,以发现类似的问题。 这就是QL自动化和跨多个代码库扩展的过程,允许开发人员编写可以共享和重用的查询。 根据Semmle的说法,他们的解决方案已经被用来识别数千个漏洞,包括开源项目中的100多个CVE..
Semmle分析引擎的一个重要特性是它将代码视为AST级别的数据,而不是使用正则表达式操作的文本。 这是一个示例,说明如何分析一个C函数,该函数在作为参数传递的数组上迭代,并确保在每个调用位置传递一个足够长度的数组:
在上面的片段中,f是函数,c是函数调用,i是用于迭代调用参数的整数,a和b用于存储预期的数组大小和实际的数组大小。 下面的片段旨在确保类的所有公共字段都被声明为最终字段:
正如您所看到的,QL语法是声明式的(有点类似于SQL)和面向对象的。 Semmle目前支持C和C、C#、COBOL、Java、Java脚本和类型脚本以及Python。 去支援正在运作中。
Semmle QL不是一种新产品,已经被许多大公司使用,包括Uber、NASA、微软和谷歌。 这有助于建立一个大型的QL查询库。 根据Semmle的说法,开发人员可以重用数千个开源查询,并在发送新的拉请求时将其作为自动CI管道的一部分执行。
目前,SemmleQL可以通过LGTM使用,它能够连接到您的GitHub帐户,但是GitHub计划通过GitHubActions使它成为它CI/CD服务的组成部分。