linuxsir首页 LinuxSir.Org | Linux、BSD、Solaris、Unix | 开源传万世,因有我参与欢迎您!
网站首页 | 设为首页 | 加入收藏
您所在的位置:主页 > Linux基础建设 >

GitHub开源代码分析引擎CodeQL,同步启动3000美元漏

时间:2019-12-03  来源:未知  作者:admin666

近日,GitHub 在全球开发者大会上,宣布启动了一个名为「安全实验室 (Security Lab)」的新社区计划。该计划中,GitHub 不仅开源了代码分析引擎 CodeQL,还设置了奖励金最高为 3000 美元的漏洞奖励计划。

GitHub 安全实验室的任务是启发并赋能全球安全研究社区,保护全球代码的安全;意将进一步解决代码安全难题,完善开源社区不足,为开源社区的优质代码贡献打下良好基础。这一计划也得到了很多大牛企业为代表的支持,包括 Microsoft,Google,Intel 等,现宅客频道将这一社区具体内容整理编辑如下。

GitHub 开源代码分析引擎 CodeQL,同步启动 3000 美元漏洞奖励计划

安全漏洞的火眼金睛 CodeQL

CodeQL 是 GitHub 刚推出的一款新开源工具。这是一款语义代码分析引擎,旨在查找大量代码中同一漏洞的不同版本。

CodeQL 可以帮助我们跨代码库发现漏洞;允许我们像查询数据一样查询代码、编写查询以查找漏洞的所有变体,并将其永久消除;共享该查询结果以帮助其他人消除漏洞。

GitHub 开源代码分析引擎 CodeQL,同步启动 3000 美元漏洞奖励计划

其中,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", "Collection") and

call.getAnArgument() instanceof NullLiteral

select call

QL 还支持递归和聚合,这允许我们可以使用简单的语法编写复杂的递归查询并直接使用函数库,比如:count,sum 和 average。

因此,使用 CodeQL 编写的查询可以发现漏洞及重要安全漏洞的变体。而除了 GitHub 平台外,CodeQL 也已经应用于其它平台的漏洞代码扫描活动中,如 Mozilla。

GitHub 开源代码分析引擎 CodeQL,同步启动 3000 美元漏洞奖励计划

更多关于 QL

https://help.semmle.com/QL/learn-ql/

CodeQL 该如何使用?在线查询

我们可以使用 LGTM 平台

(https://lgtm.com/query/rule:1823453799/lang:java/)上的 CodeQL 查询控制台,在流行的开源代码库上直接运行实际查询。

GitHub 开源代码分析引擎 CodeQL,同步启动 3000 美元漏洞奖励计划

▲LGTM 平台界面,直接编写需要查询的代码

当了解发现有漏洞的模式后,我们就能在整个代码库中查找出类似的情况。在下面的示例中,我们使用了内置的 CodeQL 库对不安全的反序列化模式进行编码,以进行数据流和污点跟踪。

UnsafeDeserialization.ql

from DataFlow::PathNode source, DataFlow::PathNode sink, UnsafeDeserializationConfig conf

where conf.hasFlowPath(source, sink)

select sink.getNode().(UnsafeDeserializationSink).getMethodAccess(), source, sink,

"Unsafe deserialization of $@.", source.getNode(), "user input"

本地查询

如果需要在本地编写和运行查询,可以通过安装 Visual Studio Code 的 CodeQL 扩展而实现。

GitHub 开源代码分析引擎 CodeQL,同步启动 3000 美元漏洞奖励计划

▲在 Visual Studio 中写入和运行查询代码

安装 CodeQL 扩展后,具体操作步骤为:

1. 获取 CodeQL 数据库

在 LGTM.com 上搜索要研究的开源项目,然后导入项目页面;

将所下载的和项目本身的 CodeQL 数据库添加到 VS 代码中,实现对这些指令的使用;

2. 查询代码并查找漏洞

复制 CodeQL starter 工作区并在 VS Code 中打开它;

通过右键单击查询并选择「运行查询」来运行查询;

有关详细信息,请参阅文档:

https://help.semmle.com/codeql/codeql-for-vscode.html

查询开源代码库

根据 OSI 批准的开源许可证相关规定,我们可以为符合条件的任何项目创建 CodeQL 数据库。

CodeQL 分析依赖于从代码中提取关系数据,并使用它来构建 CodeQL 数据库(https://help.semmle.com/codeql/glossary.html#codeql-database)——该目录包含在代码上运行查询所需的所有数据。

在生成 CodeQL 数据库之前,您需要:

安装并设置 CodeQL CLI。(有关更多信息,参见下面的 CodeQL CLI 入门)

迁出要分析的代码库的版本。该目录应已准备好建立,并已安装所有依赖项。

GitHub 开源代码分析引擎 CodeQL,同步启动 3000 美元漏洞奖励计划

▲查询开源代码库示例

但需要注意的是,GitHub CodeQL 只能用于在 OSI 批准的开源许可下发布的代码库,或者用于执行学术研究。它不能用于自动化分析、持续集成或持续交付,无论是作为正常软件工程过程的一部分还是其他。

CodeQL 扩展详细文档:

https://help.semmle.com/codeql/codeql-for-vscode.html

本地查询下载地址:

https://marketplace.visualstudio.com/items?itemName=github.vscode-codeql

CodeQL CLI 入门:

https://help.semmle.com/codeql/codeql-cli/procedures/get-started.html

CodeQL「捕获标志」挑战

如果你想挑战漏洞搜索技能并快速学习 Semmle CodeQL,可以尝试完成给出的任务,即通过使用 CodeQL 来找到 jQuery 插件的变体——这些变体会使客户机暴露于未记录的 XSS (跨站点脚本)漏洞。

具体而言,jQuery 是一个非常流行的、但很旧的开源 JavaScript 库,旨在简化 HTML 文档遍历和操作、事件处理、动画和 Ajax 等工作。截至 2019 年 5 月,jQuery 在 1000 万最受欢迎网站中的使用率为 73%。jQuery 库支持模块化插件,世界各地的开发人员已经实现了数千个插件,无缝地扩展了 jQuery 的功能。

GitHub 开源代码分析引擎 CodeQL,同步启动 3000 美元漏洞奖励计划

而 Bootstrap 则是一个广泛使用 jQuery 插件机制的流行库;但是 Bootstrap 中的 jQuery 插件过去是以一种不安全的方式实现,这可能会使 Bootstrap 的用户容易受到跨站点脚本(XSS)攻击。

这是指攻击者使用 web 应用程序向其他最终用户发送恶意代码(通常是以浏览器端脚本的形式);而这些恶意脚本可以访问浏览器保留并与该站点一起使用的任何 cookie、会话标记或其他敏感信息。

GitHub 开源代码分析引擎 CodeQL,同步启动 3000 美元漏洞奖励计划

因此,在整个查找过程中,你需要使用分步指南编写查询,从而查找引导中未安全实现的 jQuery 插件。完成后将答案发送至 ctf@github.com 则可获得获奖机会。GitHub 将选出 2019 年 12 月 31 日前收到的两个最佳 CodeQL 查询获得大奖;还将选择 10 个额外的 CodeQL 查询来赢得其它奖品。

查看以前的挑战:

https://securitylab.github.com/ctf/jquery

提升安全的更广泛计划

另外,最近 GitHub 还成为授权的 CVE 编号发布机构,即它能够为漏洞发布 CVE 编号。这一功能已经增加至「安全建议」服务功能中。漏洞修复后,项目所有人就可以发布安全公告,而 GitHub 将向所有使用原来维护人员的代码的易受攻击版本的上游项目所有人;但在发布安全公告前,项目所有人同时可以直接向 GitHub 请求并收到 CVE 编号。

当然,除了代表荣誉的 CVE 之外,Github 也发起了奖金机制,使用 CodeQL 进行挖掘新漏洞的安全研究员可以最高获得 2500 美元的赏金;如果编写的 CodeQL 查询代码质量够高,甚至还能被授予 3000 美元的奖励。

赏金详细规则:

https://securitylab.github.com/bounties

除了新推出的安全实验室外,GitHub 还推出了「GitHub 安全公告数据库」,用于收集平台上能找到的所有安全公告,可以为大家追踪在 GitHub 托管项目中找到的安全漏洞问题提供更大的便利空间。

最后,GitHub 还更新了 Token Scanning 自有服务。它能够扫描用户项目中不慎在源代码中遗留的 API 密钥和令牌。该服务此前能够为 20 种服务检测 API 令牌,而新版本能够检测的格式又增加四个厂商:GoCardless、HashiCorp、Postman 和腾讯云。

GitHub 开源代码分析引擎 CodeQL,同步启动 3000 美元漏洞奖励计划

Github 地址:

https://securitylab.github.com/tools/codeql/

友情链接
  • Mozilla发布Firefox 67.0.4,修复沙箱逃逸漏洞
  • 蚂蚁金服正式成为CNCF云原生计算基金会黄金会员
  • Firefox 68将采用Microsoft BITS安装更新
  • OpenSSH增加对存储在RAM中的私钥的保护
  • 谷歌想实现自己的curl,为什么?
  • Raspberry Pi 4发布:更快的CPU、更大的内存
  • Firefox的UA将移除CPU架构信息
  • Ubuntu放弃支持32位应用程序实属乌龙,Steam会否重回Ubuntu怀抱
  • Qt 5.13稳定版发布:引入glTF 2.0、改进Wayland以及支持Lottie动
  • 红帽企业Linux 7现已内置Redis 5最新版
  • Slack进入微软内部禁用服务清单,GitHub也在其列?
  • 安全的全新编程语言V发布首个可用版本
  • Windows Terminal已上架,快尝鲜
  • 阿里巴巴微服务开源生态报告No.1
  • 面世两年,Google地球将支持所有基于Chromium的浏览器
  • 推进企业容器化持续创新,Rancher ECIC千人盛典完美收官
  • CentOS 8.0最新构建状态公布,或于数周后发布
  • Debian移植RISC
  • 微软拆分操作系统的计划初现雏形
  • Oracle发布基于VS Code的开发者工具,轻松使用Oracle数据库
  • Ubuntu 19.10停止支持32位的x86架构
  • 微软为Windows Terminal推出全新logo
  • 联想ThinkPad P系列笔记本预装Ubuntu系统
  • 微软发布适用于Win7/8的Microsoft Edge预览版
  • 启智平台发布联邦学习开源数据协作项目OpenI纵横
  • 经过六个多月的延迟,微软终于推出Hyper
  • ZFS On Linux 0.8.1 发布,Python可移植性工作
  • DragonFly BSD 5.6.0 发布,HAMMER2状态良好
  • Linux Kernel 5.2
  • CentOS 8.0 看起来还需要几周的时间
  • 百度网盘Linux版正式发布
  • PCIe 6.0宣布:带宽翻倍 狂飙至256GB/s
  • PHP 7.4 Alpha 发布,FFI扩展,预加载Opcache以获得更好的性能
  • Canonical将在未来的Ubuntu版本中放弃对32位架构的支持
  • Scala 2.13 发布,改进的编译器性能
  • 微软的GitHub收购了Pull Panda,并且使所有订阅完全免费
  • Windows Subsystem for Linux 2 (WSL 2)现在适用于Windows 10用
  • Debian 10 “Buster”的RISC
  • MariaDB宣布发布MariaDB Enterprise Server 10.4
  • DXVK 1.2.2 发布,带来微小的CPU开销优化
  • DragonFlyBSD 5.6 RC1 发布,VM优化,默认为HAMMER2
  • PrimeNG 8.0.0 发布,支持Angular 8,FocusTrap等
  • GIMP 2.10.12 发布,一些有用的改进
  • 清华大学Anaconda 镜像服务即将恢复
  • Debian GNU/Linux 10 “Buster” 操作系统将于2019年7月6日发布
  • 时时彩论坛
  • 五星体育斯诺克
  • 北单比分直播
  • 河北11选5走势图
  • 福建体彩36选7开奖结果
  • 九龙图库下载