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

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

安全漏洞的火眼金睛 CodeQL

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

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

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

通过右键单击查询并选择“运行查询”来运行查询;

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

CodeQL“捕获标志”挑战

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

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

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

提升安全的更广泛计划

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

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

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

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

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

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

其中,QL 是查询语言,也是 CodeQL 的基础,专用于分析代码。这是一种逻辑编程语言,因此它由逻辑公式组成。QL 使用公共逻辑连接词(如 and,or,和 not)、量词(如 forall 和 exists)、以及其他重要的逻辑概念。查询语句示例如下(实现将 null 添加到集合):

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

上海交通大学党委书记姜斯宪在致辞时表示,上海交大将积极参与中央广播电视总台超高清视音频制播呈现国家重点实验室建设。依托学校在超高清、5G、人工智能等新技术研究方面的优势,为总台加快推动媒体融合转型发展发挥更大的作用。他表示,上海交大的优秀学子将有望成为推动中央广播电视总台和中国电视业科技转型的一支生力军。(完)

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

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

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

2. 查询代码并查找漏洞

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

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

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

据悉,中央广播电视总台目前已经初步形成“先网后台、台网并重、移动优先”的格局。今年以来原创视音频节目屡屡在海内外新媒体舆论场“爆款”。与此同时,新媒体、版权等领域的营收正在成为中央广播电视总台新的经济增长极,发展势头迅猛。

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

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

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