白盒代码审计工具——CodeQL安装与使用教程【Linux+Windows】

这篇具有很好参考价值的文章主要介绍了白盒代码审计工具——CodeQL安装与使用教程【Linux+Windows】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CodeQL安装与使用教程(Linux+Windows)


该文章参考以下文章,总结提炼而成:
CodeQL从入门到放弃
白盒审计工具codeql的安装(踩坑)
CodeQL基础知识


CodeQL简介

Github为了解决其托管的海量项目的安全性问题,收购了CodeQL的创业公司,并宣布开源CodeQL的规则部分,这样全世界的安全工程师就可以贡献高效的QL审计规则给Github,帮助它解决托管项目的安全问题。

对于安全工程师,也就多了一个非商业的开源代码自动化审计工具。
CodeQL支持非常多的语言,在官网有如下支持的语言和框架列表。代码审计工具,笔记,安全性测试,安全,系统安全

CodeQL原理

代码转化成类似数据库的形式,并基于该database进行分析。

在 CodeQL 中,代码被视为数据。安全漏洞、Bug 和其他错误被建模为可针对从代码中提取的数据库执行的查询。

CodeQL 的整体思路是把源代码转化成一个可查询的数据库,通过 Extractor 模块对源代码工程进行关键信息分析提取,构成一个关系型数据库。CodeQL 的数据库并没有使用现有的数据库技术,而是一套基于文件的自己的实现。
对于编译型语言,Extractor 会监控编译过程,编译器每处理一个源代码文件,它都会收集源代码的相关信息,如:语法信息(AST 抽象语法树)、语意信息(名称绑定、类型信息、运算操作等),控制流、数据流等,同时也会复制一份源代码文件。而对于解释性语言,Extractor 则直接分析源代码,得到类似的相关信息。
关键信息提取完成后,所有分析所需的数据都会导入一个文件夹,这个就是 CodeQL database, 其中包括了源代码文件、关系数据、语言相关的 database schema(schema 定义了数据之间的相互关系)。

CodeQL安装

CodeQL本身包含两部分 解析引擎 + SDK

  • 解析引擎:不开源,解析我们编写的规则,但是可以直接在官网下载二进制文件直接使用。
  • SDK(规则库):完全开源,里面包含大部分现成的漏洞规则,我们也可以利用其编写自定义规则。

解析引擎安装

URL: https://github.com/github/codeql-cli-binaries/releases

下载已经编译好的codeql执行程序,解压之后把codeql文件夹放入~/CodeQL。

为了方便测试我们需要把ql可执行程序加入到环境变量当中:

#Windows
加入系统path
#Linux
cd /usr/bin
sudo ln -s /root/Codeql/codeql/codeql codeql
source /etc/profile

检验:命令行输入codeql,出现如下内容就表示引擎设置完成。
代码审计工具,笔记,安全性测试,安全,系统安全

SDK安装

我们使用Git下载QL语言工具包,也放入~/CodeQL文件夹。

git clone https://github.com/github/codeql.git

这样在~/CodeQL目录下就包含了2个文件夹,引擎文件夹(codeql)和SDK文件夹(ql)。

➜  CodeQL ls
codeql ql

VSCode开发插件安装(命令行方法可不用)

CodeQL需要使用Visual Studio Code来开发和调试规则,所以我们需要在VSCode上面安装CodeQL的插件。
我们安装好Visual Studio Code后,在它的扩展里面搜索codeql, 点击安装。
然后我们配置一下上面我们安装的codeql引擎路径。

代码审计工具,笔记,安全性测试,安全,系统安全

到此,我们就设置好了CodeQL的开发环境。

生成数据库

codeql只可以对解析引擎编译生成的数据库进行扫描,所以需要先生成目标数据库。

本地生成(推荐!!)

codeql database create 数据库名 --language=cpp --source-root=源码路径 --command="编译命令"

比如现在要对xxl-job这个项目进行漏洞扫描

下载项目源码并进入该目录

#下载源代码
git clone https://gitee.com/xuxueli0323/xxl-job 

#创建源码数据库:
codeql database create DatabaseName --language=java --command="mvn clean install" --source-root=D:\xxl-job 
#eg:codeql database create libtiff1_dbjob --language=cpp --command="make -j$(nproc)"

主要参数:

  • –command 参数如果不指定,会使用默认的编译命令和参数
  • –source-root 源码路径
  • –overwrite 表示 create 的目标 database 对已有的 database 做覆盖
  • –language 要根据具体项目的编译语言指定
    对应关系如下:
Language Identity
C/C++ cpp
C# csharp
Go go
Java java
javascript/Typescript javascript
Python python

PS:–command 中指定的脚本的要求:

  • Confirm that there is some source code for the specified language in the project.
  • For codebases written in Go, JavaScript, TypeScript, and Python, do not specify an explicit --command.
  • For other languages, the --command must specify a “clean” build which compiles all the source code files without reusing existing build artefacts. 即如果项目中原本有任何编译产生的临时或最终文件,都需要删除,一定保证编译过程完全“ clean ”。
  • 如某个项目的 build.sh
rm -r build && mkdir build
cd build && cmake .. && make -j

成功生成:
代码审计工具,笔记,安全性测试,安全,系统安全

线上生成

url:https://lgtm.com/dashboard
codeql database create openjdk8u322-db  --language=java --command='make images JOBS=4'
PS:适合不需要打包的如python等    
此方法只是为了生成数据库,和上述第三步一样,区别只是在线生成和本地生成。

1.输入链接,点击follow生成

2.生成完成后点击下方进入下载到本地

进行项目漏洞扫描

VSCode

​ 主要参考

  • 在 VSCode 打开扫描规则 CodeQL libraries and queries(ql),并保存工作区(文件 —> 工作区另存)

  • VSCode 添加数据库

  • 打开工作区,选择要使用的扫描 CodeQL RUN Query

  • 执行规则扫描
    右键选择具体语言的规则进行扫描,例如:java语言的规则。ql后缀的文件是规则扫描文件
    代码审计工具,笔记,安全性测试,安全,系统安全

  • 点击 CodeQL:Run Queries in Selected Files 后,弹出一个对话框,选择Yes;即可执行扫描操作。
    PS:可以一次选择一条或者多条规则就行扫描;但是一次性不能超过 20 条规则。

  • 结果查看

命令行方法(好用!!)

#创建数据库
codeql database create databaseName --source-root=D:/xxljob --language=java

#更新数据库
codeql database upgrade databaseName

#执行扫描规则
codeql database analyze databasePath codeql-repo/java --format=csv --output=result.csv
#eg:codeql database analyze ./libtiff1_dbjob /root/Codeql/ql/codeql/cpp/ql/src/Security/CWE --format=csv --output=result.csv
  • codeql-repo/java :java 扫描规则路径
  • –format:结果输出格式
  • –output:结果文件输出路径
    代码审计工具,笔记,安全性测试,安全,系统安全

有感:最后发现命令行真香!!!因为可以一次性扫很多条规则,但是vscode最多只支持20条,而且需要手动一个个选择,很麻烦。而且很多开发环境都涉及到Linux,所以建议抛弃vscode直接用命令行。到这里基本上可以正常使用了~如果有问题,欢迎一起来沟通!文章来源地址https://www.toymoban.com/news/detail-785351.html


到了这里,关于白盒代码审计工具——CodeQL安装与使用教程【Linux+Windows】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【最详细教程Cursor】智能 AI 代码生成工具 Cursor 安装和使用介绍

    Cursor.so 是一个集成了 GPT-4 的国内直接可以访问的,优秀而强大的免费代码生成器,可以帮助你快速编写、编辑和讨论代码。 它支持多种编程语言,如 Python, Java, C#, JavaScript 等,并且可以根据你的输入和需求自动生成代码片段。 Cursor.so 还可以帮助你重构、理解和优化代码,

    2023年04月19日
    浏览(48)
  • Cockpit - 基于Web的Linux管理工具的安装和使用教程

    Cockpit - 基于Web的Linux管理工具的安装和使用教程 一、基本介绍 1,什么是 Cockpit? (1) Cockpit 是一个免费且开源的基于 web 的 Linux 服务器管理工具并且在 CentOS 8 和 RHEL 8 中, Cockpit 更是成为其默认服务器管理工具。 (2)通过 Cockpit 提供的友好的 Web 前端界面可以轻松地监视

    2024年02月08日
    浏览(45)
  • 【开发工具】适用于Windows的Linux子系统一一WSL安装使用教程

    一、简介 Windows Subsystem for Linux(简称WSL)是一个在Windows 1011上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,其目标是使纯正的Ubuntu、Debian等映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上

    2024年02月05日
    浏览(55)
  • 探索 Sweet Justice:一个快速、安全的代码审计工具

    在软件开发过程中,对代码进行审计是非常重要的一步。这可以帮助我们发现潜在的安全漏洞、性能问题以及其他可能影响产品质量的因素。然而,手动审计是一项耗时且繁琐的任务,因此需要一种更有效的方法来帮助开发者更快地完成这项任务。 这就是 Sweet Justice 的作用所

    2024年04月10日
    浏览(40)
  • Linux 可视化管理(webmin 和 bt(宝塔)运维工具的详细安装教程:webmin 安装配置和使用,bt 宝塔 的安装配置和使用)

    目录 第十八章 webmin 和 bt(宝塔) 运维工具 18.1 webmin 安装配置和使用 18.1.1 基本介绍 18.1.2 安装 webmin配置 18.1.3 简单使用演示 18.2 bt 宝塔 的安装配置和使用 18.2.1 基本介绍 18.2.2 安装和使用 18.2.3 bt 宝塔使用介绍 18.2.4 如果 bt 的用户名,密码忘记了。使用 bt default 可以查看 18.1

    2024年02月09日
    浏览(47)
  • CppCheck静态代码检查工具教程【Windows和Linux端】

    目录 1、背景 2、特性介绍 2.1、检查结果 2.2、检查范围 2.3、支持的检查规则(列举一些): 2.4、自定义规则 3、linux 端 4、windows 端         最近调研了几款 c/c++ 代码静态检查工具,包括 cppcheck、cpplint、cppdepend、splint、tscancode、sonaqube 等,对比后认为 cppcheck 使用起来最方

    2024年02月03日
    浏览(41)
  • CodeQL基本使用

    去github下载一个对应版本的codeql捆绑包。 https://github.com/github/codeql-action/releases 然后解压,这里我是解压到桌面 然后用添加到环境变量中 然后在任意位置输入codeql命令,如果能有以下提示就表示安装成功 然后下载vscode, 并且给vscode安装codeql扩展 在使用 CodeQL 分析代码之前,需

    2024年02月03日
    浏览(30)
  • 【安全】linux audit审计使用入门

    1 audit简介 audit是Linux内核提供的一种审计机制,由于audit是内核提供的,因此,在使用audit的过程中就包含内核空间和用户空间部分: rules:审计规则,其中配置了审计系统需要审计的操作 auditctl:用户态程序,用于审计规则配置和配置变更 kaudit:内核空间程序,根据配置好

    2024年02月06日
    浏览(39)
  • LINUX 抓包工具Tcpdump离线安装教程

    本次教程基于内网环境无法访问网络使用安装包进行安装抓包工具 1、首先给大家看下一共有6个安装包,依次进行解压,包我就放到csdn上了,需要的可以联系我进行下载 2打包然后传到服务器任意一个目录下,进入到当前目录,然后进行解压安装 先安装支持libpcap这个包的环

    2024年01月21日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包