写点什么

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

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

关注

评论

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

用 Tekton 来构建镜像并推送到极狐GitLab 私有仓库

极狐GitLab

官答|初始化GreatSQL报错无法找到数据目录或初始化数据字典失败

GreatSQL

故障排查 greatsql 官答

测试开发 | 人工智能在大规模数据分析中的崭新征程

测吧(北京)科技有限公司

测试

朋友们注意啦!破解脱壳接单了

Geek_7f3f61

小程序开发 定制开发 破解脱壳

一起学Elasticsearch系列-索引管理

Java随想录

Java 大数据 Elastic Search

让你的创意在EdgeView 4 for Mac上绽放

影影绰绰一往直前

湖南等保测评3家叫什么名字?分别在哪里?

行云管家

等级保护 等保测评 湖南

深入探索服装网商品详情API:实时数据获取、安全与隐私保护及商业价值实践

Noah

堡垒机的类型分类

尚思卓越

运维 堡垒机

以数据指标穿透企业经营,优化业务流程,加速企业运转

用友BIP

人才管理

数栈UI5.0设计实战|B端表单这样设计,不仅美观还提效

袋鼠云数栈

数据中台 设计 表单 表单设计

用友BIP全球司库助力央国企统一资金结算,更可控更高效

用友BIP

全球司库 资金结算

QCA9880: A multi-dimensional engine driving wireless communications

wallysSK

治理要从数据建模抓起 | 京东云技术团队

京东科技开发者

Excel可编辑PDF转化软件 PDF to Excel 最新激活版

胖墩儿不胖y

Mac软件 好用的办公软件推荐

测试开发 | 人工智能与分布式计算:驱动智能时代的强力结合

测吧(北京)科技有限公司

测试

模块一作业

大鹏

#架构实战营

HarmonyOS实践之应用状态变量共享

HarmonyOS开发者

HarmonyOS

中粮、中交、云投等众多央国企携手用友打造世界一流人才管理体系

用友BIP

人才管理

鞍钢集团共和国钢铁工业长子的财务转型之路

用友BIP

财务数智化

顺丰科技:打造智慧物流数据管理平台

新消费日报

Java多线程系列9:读写锁

BigBang!

Java多线程

测试开发 | 人工智能数据可视化:揭示数据之美、洞察智慧之源

测吧(北京)科技有限公司

测试

淘宝商品评论数据接口(Taobao.item_review)

tbapi

天猫商品评论接口 天猫评论接口 淘宝商品评论数据接口 淘宝评论接口 淘宝评论API接口

多功能音频处理工具:Sound Siphon最新激活版

mac大玩家j

Mac软件 音频处理工具 音频管理 音频工具

软件测试/测试开发丨Pytest测试框架-跳过用例或预期用例失败

测试人

软件测试 测试开发

低代码平台:多引擎、多应用,灵活构建企业数字化生态

天津汇柏科技有限公司

低代码

从 Linux Crontab 到 K8s CronJob,定时任务正在经历怎样的变革

阿里巴巴云原生

阿里云 云原生 可观测

概念回顾:REST API 和 GraphQL

NGINX开源社区

微服务 Rest API graphql REST API

Havenask分布式索引构建服务--Build Service

阿里技术

分布式 Havenask 分布式索引 Build Service

方太厨电,在创新科技中看见烟火人间

脑极体

方太

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