codeql学习笔记分享1 | xxxcodeql学习笔记分享1 – xxx
菜单

codeql学习笔记分享1

四月 15, 2024 - FreeBuf

1.环境安装

解释一下什么是codeql吧:

CodeQL 是一种强大的静态代码分析工具,由 GitHub 开发。它可以用于发现和修复软件中的安全漏洞、漏洞和代码质量问题。CodeQL 通过将编程语言的语法和语义建模为一种特殊的查询语言,使得用户可以编写自定义查询来分析代码库。它支持多种编程语言,包括 C、C++、C#、Java、JavaScript、Python 等。用户可以使用现有的查询来发现已知的问题,也可以编写自己的查询来查找特定的问题或需求。

CodeQL 的工作原理是首先将代码转换成一种中间表示(IR)也就是我们这里要用到的数据库,然后在这种 IR 上执行查询。这种方法可以让用户不受代码语言的限制,因为查询是在 IR 上执行的,而不是直接在源代码上。这使得用户可以使用相同的查询语言来分析不同编程语言的代码。同时,CodeQL 还提供了丰富的 API 和库,使得用户可以编写更加复杂和高效的查询。

1.环境准备

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

codeql学习笔记分享1

解压,设置环境变量

codeql学习笔记分享1

codeql学习笔记分享1

OK,第一步已经完成了。

2.规则库

官方规则库,各种内置的ql脚本,这部分是开源的。里面是各种ql脚本,也就是我们以后要学习的东西地址:

https://github.com/github/codeql(git clone下来,或者下载下来。最好和codeql_cli也就是上面那个放一起)

3.vscode_codeql插件

codeql学习笔记分享1

安装这个插件。设置可执行路径:

codeql学习笔记分享1

这里环境已经配置好了。

2.生成数据库

这里以java语言的数据库为示例:

原则要生成数据库的源文件:我这里选择的是java-sec-code 地址:https://github.com/JoyChou93/java-sec-code

因为java-sec-code是通过maven进行依赖管理,需要我们事先安装好maven,codeql识别出是个maven项目之后会自动对项目文件进行编译(用到mvn命令),通过编译得到的文件创建数据库。

安装maven: 默认你已经安装好java的jdk了,没有安装记得安装,并配置好环境变量

下载:https://maven.apache.org/download.cgicodeql学习笔记分享1

配置环境变量:codeql学习笔记分享1

codeql学习笔记分享1

codeql学习笔记分享1这就是安装好了。我在这里遇见一个错误。后面在创建数据库的时候,一直创建失败,就是这一部分的原因。这里maven识别到的一定要是jdk下的jre,不能是如图:codeql学习笔记分享1

codeql学习笔记分享1

注意看区别

创建数据库的命令:

codeql database create java-sce-code-database  –language=”java”  –command=”mvn clean install –file pom.xml” –source-root=D:CODEQLALLjava-sec-code-master

codeql学习笔记分享1codeql学习笔记分享1

成功。

3.利用利用数据库进行查询:

codeql学习笔记分享1

选择语言选择数据库

codeql学习笔记分享1

打开规则库:codeql学习笔记分享1

file ->open
找到Java的规则库如图:codeql学习笔记分享1

你可以在这创建一个.ql的脚本也可以直接用写好的。

我们自己写一个查看(我在src下面写了一个test.ql)

codeql学习笔记分享1

也可以在这个地方查看,会主动识别的codeql学习笔记分享1

我们写了一个查询调用了executeQuery方法的地方:codeql学习笔记分享1

点这两个地方运行。最好我们看一下查询结果:

codeql学习笔记分享1

codeql学习笔记分享1

# 漏洞 # web安全 # 网络安全技术 # Java代码审计 # CodeQL
codeql学习笔记分享1

codeql学习笔记分享1 已在FreeBuf发表 0 篇文章
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022

Notice: Undefined variable: canUpdate in /var/www/html/wordpress/wp-content/plugins/wp-autopost-pro/wp-autopost-function.php on line 51