NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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:001289
用户头像

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

关注

评论

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

如何远程控制电脑,远程控制电脑的设置方法

RayLink远程工具

远程控制连接 远程控制电脑

远程桌面连接是什么?远程桌面连接使用教程

RayLink远程工具

ChatGPT编程秀-2:最小元素的设计

仝键

JavaScript 编程 架构 java ChatGPT

华为全新发布2023春季旗舰新品,智慧生活再进化

最新动态

业界数据库工具结合 ChatGPT 的(不完全)汇总

Bytebase

人工智能 数据库 dba ChatGPT

什么是远程控制软件?远程控制软件推荐

RayLink远程工具

远程控制软件

紧跟潮流,抓住趋势,跟上全民AI的节奏,开源IM项目OpenIM产品介绍,为AIGC贡献力量

Geek_1ef48b

低代码实现探索(五十七)脚本模板模式的生成

零道云-混合式低代码平台

免费的远程控制软件有哪些?远程控制软件哪个好用?

RayLink远程工具

远程控制软件 远控软件

好用的远程控制桌面连接工具有哪些?

RayLink远程工具

远程桌面连接

定位任意时刻性能问题,持续性能分析实践解析

阿里巴巴中间件

阿里云 云原生 可观测

官宣|Apache Flink 1.17 发布公告

Apache Flink

大数据 flink 实时计算

大数据分析工具Power BI(六):DAX表达式简单运用

Lansonli

大数据分析工具Power BI

远程桌面和远程协助的区别,选择哪个方式连接更好?

RayLink远程工具

远程协助 远程桌面连接

什么是远程桌面?远程桌面软件是如何进行连接工作的?

RayLink远程工具

远程桌面连接 远程桌面工具 远程桌面软件

时不我待,拥抱趋势,开源IM项目OpenIM技术简介

Geek_1ef48b

内网渗透之某后渗透利用

网络安全学海

黑客 网络安全 安全 信息安全 渗透测试

远程桌面连接有哪些方式?远程桌面工具推荐

RayLink远程工具

远程桌面连接 远程桌面工具

远程办公模式开启,该如何选择合适的办公软件?

RayLink远程工具

远程办公 远程协助 远程办公软件

2023 年最佳免费远程控制软件RayLink-远程办公必备

RayLink远程工具

远程控制软件 远程办公软件

远程桌面无法连接远程计算机是什么原因?

RayLink远程工具

远程桌面连接 远程桌面

华为春季发布会召开,旗舰新品全面支持空间音频

最新动态

GTC 2023的算力协奏曲,NVIDIA与宁畅“共舞”AI时代

脑极体

算力

电脑怎么远程连接服务器?如何进行远程桌面连接?

RayLink远程工具

远程桌面连接

远程桌面连接如何设置?远程桌面连接的设置方法

RayLink远程工具

远程桌面连接

Securtiy Code Reviewer 需要做些什么?6个安全实例一探究竟

极狐GitLab

DevOps Code Review 代码质量 代码安全 代码评审

华为Mate X3震撼发布!轻薄折叠屏携华为阅读带来全新精品阅听体验

最新动态

【必看答疑】为什么我的电脑远程连接不上?

RayLink远程工具

远程桌面连接

GPT-4正刮起新的生成式AI风暴

澳鹏Appen

人工智能 ChatGPT GPT-4

远程控制软件如何实现两台电脑连接

RayLink远程工具

远程控制软件

远程控制软件RayLink助力畅玩爆火双人游戏

RayLink远程工具

远程控制软件

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