【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

GitHub 准备集成 Semmle 代码分析用于持续的漏洞检测

  • 2019-10-08
  • 本文字数:1198 字

    阅读完需:约 4 分钟

GitHub准备集成Semmle代码分析用于持续的漏洞检测

借助对初创企业Semmle的收购,GitHub 旨在让持续的漏洞检测成为其持续集成/持续部署服务的一部分。


在宣布本次收购时,GitHub 的 首席执行官 Nat Friedman 表示:


Semmle 的革命性语义代码分析引擎允许开发人员编写查询,以在大型代码库中识别代码模式,并搜索漏洞及其变体。


Semmle 创建了LGTM,这是一个持续代码分析平台,旨在识别软件系统中的漏洞。LGTM 的核心是Semmle QL,这是一种查询语言和代码搜索引擎,使代码分析能够找到并根除安全漏洞。


QL 使用变体分析,这是一种安全工程师经常用来识别漏洞的技术,该技术从已知漏洞开始,把它作为搜索过程的种子。换句话说,一旦通过渗透测试(pen-testing)或其他技术确定了漏洞,安全研究人员就会审查代码库的其余部分以发现类似的问题。这是 QL 自动化的过程,并跨多个代码库扩展,允许开发人员编写可以共享和重用的查询。根据 Semmle 的说法,他们的解决方案已经识别出数千个漏洞,包括开源项目中的 100 多个 CVE。


Semmle 分析引擎的一个重要特征是,它把代码当作在 AST 级别上的数据而不是我们在正则表达式上操作的文本。下面是个例子,来看看我们如何分析一个C语言函数,它对一个作为参数传递的数组进行迭代,并确保在每个调用位置传递一个足够长的数组:


import cpp
from Function f, FunctionCall c, int i, int a, int bwhere f = c.getTarget() and a = c.getArgument(i).getType().(ArrayType).getArraySize() and b = f.getParameter(i).getType().(ArrayType).getArraySize() and a < bselect c.getArgument(i), "Array of size " + a + " passed to $@, which expects an array of size " + b + ".", f, f.getName()
复制代码


在上面的代码段中,f 是函数,c 是函数调用,i 是用来在调用参数上迭代的整数,a 和 b 用于存储预期的数组大小和实际的数组大小。下面的代码段旨在确保将某个类的所有公共字段声明为final


from Field f where f.hasModifier("public")       and       not(f.hasModifier("final")) select f.getDeclaringType().getPackage(),        f.getDeclaringType(),        f
复制代码


正如我们所看到的,QL 语法是声明性的(有点类似于 SQL)和面向对象的。目前,Semmle 支持 C 和 C++、C#、COBOL、Java、JavaScript 和 TypeScript 以及 Python。对 Go 的支持工作还在进行中。


Semmle QL 不是一个新产品,根据 Semmle 的说法,很多大公司已经在使用了,其中包括 Uber、NASA、微软和谷歌。这有助于构建一个大型 QL 查询库。根据 Semmle 的说法,开发人员可以重用数以千计的开源查询,并且,在发送一个新的拉取请求时,将其作为自动 CI 管道的一部分执行。


目前,可以通过 LGTM(LGTM 能够连接到我们的 GitHub 账号)使用 Semmle QL,但是 GitHub 计划通过 GitHub Actions 把它作为 CI/CD 服务的一部分。


原文链接:


GitHub To Integrate Semmle Code Analysis for Continuous Vulnerability Detection


2019-10-08 08:001285
用户头像

发布了 199 篇内容, 共 81.7 次阅读, 收获喜欢 293 次。

关注

评论

发布
暂无评论
发现更多内容

Flink DataStream API-数据源、数据转换、数据输出

不焦躁的程序员

4. Python的流程控制

茶桁

Python

C++实现对回收站里的文件进行操作

二哈侠

技术问题--查询过大引发的Dubbo问题

不焦躁的程序员

新专辑《AI秘籍》,你所感兴趣的一切

茶桁

Python AI CV nlp BI

自然语言理解问答对话文本数据,赋予计算机智能交流的能力

来自四九城儿

情感语音识别为人工智能赋予情感洞察的能力

来自四九城儿

Programming Abstractions in C阅读笔记:p72-p75

codists

8. 字符串详解

茶桁

Python

HarmonyOS NEXT,生命之树初长成

脑极体

鸿蒙 AI 应用

10分钟入门Flink--架构和原理

不焦躁的程序员

flink

10分钟入门Flink--安装

不焦躁的程序员

Flink 平台 Flink安装

7. Python的内置函数

茶桁

Python

CentOS 7内核升级教程。

百度搜索:蓝易云

云计算 Linux centos 运维 内核

Zebec Payroll :计划推出 WageLink On-Demand Pay,进军薪酬发放领域

BlockChain先知

CTO如何帮助业务成功

不焦躁的程序员

程序员是否适合创业

不焦躁的程序员

创业 程序员

10分钟了解Flink窗口计算

不焦躁的程序员

6. Python的高阶函数

茶桁

Python

5. 模块化编程

茶桁

Python

华为阅读看好“短故事”新赛道 签约知乎盐言故事开启轻阅读

最新动态

从价值的角度看,为何 POSE 通证值得长期看好

股市老人

从价值的角度看,为何 POSE 通证值得长期看好

EOSdreamer111

程序员创业踩过的10个坑

不焦躁的程序员

创业 程序员

Flink DataStream API-概念、模式、作业流程和程序

不焦躁的程序员

ChatGenTitle:使用百万arXiv论文信息在LLaMA模型上进行微调的论文题目生成模型

汀丶人工智能

人工智能 自然语言处理 LLM模型

2. 初识Python脚本

茶桁

Python

语音识别唤醒词:让智能设备主动“听”你的声音

来自四九城儿

从价值的角度看,为何 POSE 通证值得长期看好

BlockChain先知

1. Python的特性和语法

茶桁

Python

3. Python3 运算符

茶桁

Python

GitHub准备集成Semmle代码分析用于持续的漏洞检测_语言 & 开发_Sergio De Simone_InfoQ精选文章