提交之前,请使用CodeQL查找源代码漏洞
#教程 #python #安全 #shiftleft

您有大量的Python代码来为您的新Django API投入。停止!提交并推动之前,首先使用CodeQl CLI扫描源代码!

Insecure

iMattSmartUnsplash

照片

解决方案

在本教程中,我们将使用CodeQl CLI扫描Python源代码,以了解开发环境中的漏洞。

先决条件

要完成本教程,您将需要安装CodeQl CLI。

我们的开发环境

本教程是使用Ubuntu 22.10,Python 3.10.6,CodeQl CLI 2.13.1和Visual Studio Code 1.78.2开发的。某些命令/构造可能非常跨平台。

什么是codeql?

codeQl是一种静态应用程序安全测试(SAST)扫描仪,可扫描源代码是否存在漏洞。漏洞是应用程序中的弱点,它允许攻击者对依赖应用程序的应用程序的所有者,应用程序用户和/或组织造成伤害。 al。大众攻击包括:SQL注入,跨场脚本和蛮力攻击。在开发过程的早期使用CodeQL之类的工具可以节省时间,金钱,并可能防止公司声誉损害。

1)设置CodeQL CLI

下载CodeQL CLI

将您的浏览器指向github上的CodeQL释放页面,然后下载与您使用的平台相对应的存档。对于本教程,我们正在下载并使用文件名中的Linux64指定的版本。

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

下载文件后,请从存档中提取文件。对于我们的Linux系统,我们将使用UNZIP命令。

$ unzip codeql-linux64.zip -d ~/bin/codeql/

我们将再迈出一个步骤,并将CodeQl可执行文件添加到我们的路径变量中,以便我们可以从OS中的任何位置调用codeqlâ。在我们的Ubuntu系统上,我们可以通过附加CODEQL可执行文件的路径来修改〜/.profile文件中的路径变量来实现此操作。

测试CodeQL CLI

我们可以通过在命令行中检查版本来测试CodeQl CLI。

$ codeql ––version

如果一切都正确设置,我们应该看到这样的输出:

CodeQL command-line toolchain release 2.13.1.
Copyright (C) 2019-2023 GitHub, Inc.
Unpacked in: /home/user/bin/codeql
Analysis results depend critically on separately distributed query and
extractor modules. To list modules that are visible to the toolchain,
use ‘codeql resolve qlpacks’ and ‘codeql resolve languages’.

您可以通过使用以下命令获取可以使用的语言列表进行进一步测试。

$ codeql resolve languages

下载CodeQL语言包

要下载python的预编译查询,请使用以下命令:

$ codeql pack download codeql/python-queries

2)创建CodeQL数据库

现在我们已经下载并配置了CodeQl,我们可以创建CodeQL数据库。

为CodeQL数据库创建目录

我们需要做的第一件事就是创建一个目录以容纳CodeQL数据库。

$ mkdir ~/codeql-dbs

创建CodeQL数据库

现在我们有一个数据库的位置,让我们更改为您的应用程序的目录。

$ cd ~/source/python-app

现在,我们设置了使用以下命令创建CodeQL数据库:

参数:
〜/codeql-dbs/python-app: codeql数据库位置。
语言:扫描语言。在这种情况下,Python。

$ codeql database create ~/codeql-dbs/python-app \
––language=python

如果一切都进行了计划,则数据库创建命令的输出将以这样的结尾:

“Successfully created database at /home/user/codeql-dbs/python-app.”

3)扫描源代码中的漏洞

使用CodeQL数据库创建,我们可以开始扫描我们的源代码。

为CodeQL输出创建目录

codeql在输出文件中汇总了其发现。让我们创建一个目录以容纳输出文件。

$ mkdir ./codeql-output/

代码分析

运行以下命令将指示CodeQl使用先前构建的数据库来分析代码。

参数:
〜/codeql-dbs/python-app: codeql数据库位置。
格式:输出格式。 (还支持SARIF和图形格式)
输出:输出文件的路径。

$ codeql database analyze ~/codeql-dbs/python-app \
––format=”csv” \
––output=”./codeql-output/scan.csv”

当CodeQl完成其分析时,控制台应显示一条消息:

Shutting down query evaluator.
Interpreting results.
Analysis produced the following diagnostic data:
| Diagnostic | Summary |
+——————————+———–+
| Compilation message | 3 results |
| Successfully extracted files | 6 results |
Analysis produced the following metric data:
| Metric | Value |
+—————————————-+——–+
| Total lines of Python code in the database | 13,700 |

查看CodeQL分析输出

$ nano ./codeql-output/scan.csv

概括

我们已经结束了本教程,您在其中学习了如何使用Codeql CLI扫描开发环境中的漏洞。

现在,在提交该django api的代码之前