Instalación e implementación de la herramienta de escaneo de seguridad de código CodeQL

CodeQL es un motor de análisis que utilizan los desarrolladores para automatizar las comprobaciones de seguridad y que utilizan los investigadores de seguridad para realizar análisis de variantes.
En CodeQL, el código se trata como datos. Los agujeros de seguridad, los errores y otros errores se modelan como consultas que se pueden ejecutar en una base de datos extraída del código.
Puede ejecutar consultas estándar de CodeQL escritas por investigadores de GitHub y colaboradores de la comunidad, o escribir las suyas propias para un análisis personalizado. Las consultas que encuentran posibles errores resaltan los resultados directamente en el archivo de origen.

El análisis de CodeQL consta de tres pasos:

  1. Prepare su código creando una base de datos CodeQL
  2. Ejecutar consultas de CodeQL contra la base de datos
  3. interpretar los resultados de la consulta

Idiomas soportados por CodeQL:

idioma variantes traductor expandir
C/C++ Extensiones Clang (y clang-cl) (hasta Clang 12.0) Extensiones GNU (hasta GCC 11.1) Extensiones Microsoft (hasta VS 2019) Compilador Arm 5 .cpp, .c++, .cxx, .hpp, .hh, .h++, .hxx, .c, .cc, .h
C# C# hasta 9.0 Microsoft Visual Studio hasta 2019, .NET hasta 4.8, .NET Core hasta 3.1, .NET 5 .sln, .csproj, .cs, .cshtml, .xaml
Golang hasta 1.16 Ir a 1.11 o más reciente .ir
Java java 7 a 16 javac (OpenJDK y Oracle JDK), el compilador de Eclipse para Java (ECJ) .Java
JavaScript ECMAScript 2021 o anterior no aplica .js, .jsx, .mjs, .es, .es6, .htm, .html, .xhtm, .xhtml, .vue, .hbs, .ejs, .njk, .json, .yaml, .yml, .raml , .xml [6]
Pitón 2.7, 3.5, 3.6, 3.7, 3.8, 3.9 no aplica .py
Rubí hasta 3.0.2 no aplica .rb, .erb, .gemspec, Gemfile
Mecanografiado 2.6-4.5 Compilador estándar de TypeScript .ts, .tsx

Método de aplicación recomendado:

  • Use el código fuente oficial 1.2 para instalar.

  • Combinado con jenkins para detectar automáticamente la seguridad en CI.

  • Vea las detecciones y realice las correcciones con las extensiones VSCode y VisualStudio.

1. Instalar CodeQL

Para instalar utilizando el código fuente oficial, debe empaquetar y compilar el entorno usted mismo e ingresar Dotnet, NodeJS, Npm, etc.

Cree el directorio raíz CodeQLHome localmente

mkdir CodeQL
cd CodeQL
mkdir codeql-home
cd codeql-home

1.1 Instalar CLI

Dirección de descarga: https://github.com/github/codeql-cli-binaries/releases

Versión: 2.7.1

wget https://github.com/github/codeql-cli-binaries/releases/download/v2.7.1/codeql-linux64.zip

1.2 Instalar la biblioteca de consultas

La biblioteca de consultas es una colección de archivos .ql o .qls para filtrar código

Versión: 1.29.0

Dirección de descarga: https://github.com/github/codeql/tags

Entre ellos, "lgtm-xxxx" es el almacén, porque la gestión del código fuente es muy mala, si no puede encontrar la biblioteca de consultas, puede reemplazarla directamente con el código fuente.

wget https://github.com/github/codeql/archive/refs/tags/lgtm/v1.29.0.zip

1.3 Integración

  • Descomprima el paquete CLI en el directorio CodeQLHome y asígnele el nombre codeql

    unzip -o codeql-linux64.zip
    
  • Descomprima el paquete de la biblioteca de consultas en el directorio CodeQLHome y asígnele el nombre codeql-repo

    unzip -o v1.29.0.zip
    

1.4 configuración

Cambie la variable de entorno para que apunte al directorio de inicio de la CLI, CodeQLHome/codeql

sudo vim /etc/profile

Agregue lo siguiente al final del documento

#Path CodeQL
export PATH=$PATH:/home/username/CodeQL/codeql-home/codeql

Guarde el archivo y salga del editor.

Reiniciar la configuración de la aplicación

source  /etc/profile

Cambie a la línea de comando, ejecute

codeql version

Obtenga la salida correcta y la configuración estará completa

Ver configuración de Linux: https://www.jianshu.com/p/4274e679dec6

2. Inspección de código

2.1 Comprobación de JavaScript

Preparación del entorno:

Instale nodejs, instale nestjs (no es necesario), instale npm

1) Crear un repositorio

codeql  database create --language=javascript ./projects-result/test3_db -s ./projects-src/testproject

2) Actualizar configuración

codeql database upgrade ./projects-result/test3_db

3) Ejecutar la consulta

codeql database analyze ./projects-result/test3_db --format=sarifv2.1.0 --output=./projects-result/test3_db/issues.sarif javascript-security-and-quality.qls

2.2 Comprobación de red de puntos

Preparación del entorno:

Instale dotnetcore 3.1 y dotnet6 runtime.

Agregue global.jsonal directorio raíz del código fuente, este archivo puede resolver el soporte para .NET 5 6

{
    
    
  "sdk": {
    
    
    "version": "5.0.0",
    "rollForward": "latestMajor"
  }
}

Eleve los permisos de las carpetas porque los archivos se generan al compilar.

chmod -R 777 /home/username/CodeQL/projects-src
cd /home/username/CodeQL

1) Crear un repositorio

codeql  database create --language=csharp ./projects-result/test4_db -s ./projects-src/testproject2

2) Actualizar configuración

codeql database upgrade ./projects-result/test4_db

3) Ejecutar la consulta

codeql database analyze ./projects-result/test4_db --format=sarifv2.1.0 --output=./projects-result/test4_db/issues.sarif csharp-security-and-quality.qls

3. Ver los resultados

Dirección: https://sarifweb.azurewebsites.net/

4. Integración CI

Dirección: https://docs.github.com/en/code-security/code-scanning/using-codeql-code-scanning-with-your-existing-ci-system

4.1 Integración Jenkins

  1. Complemento: https://plugins.jenkins.io/codeql/

    Se recomienda que jenkins y CodeQL se implementen en el mismo servidor, de modo que el código fuente solo se deba descargar una vez y, al mismo tiempo, el paquete de secuencias de comandos implementado por el contenedor de CodeQL se pueda llamar convenientemente para simplificar las operaciones.

4.2 Integración de VSCcode

  • Busque e instale la extensión codeql

  • Configuraciones extendidas

Executable Path->D:/Software/CodeQLHome/codeql/codeql.exe
  • Generación de biblioteca de destino de código fuente

Suponiendo que el código local está en el programa TypeScript de D:\Projects\Local\Test\npmRes\abc

Generar base de datos:

codeql database create --language=javascript D:\Projects\Local\CodeQL\RESULT0127\source_db -s D:\Projects\Local\Test\npmRes\abc
  • VSCode especifica la biblioteca de código fuente

Ingrese el ícono pequeño en la parte inferior izquierda de CodeQL de VSCode, seleccione "Seleccionar de la carpeta" y configúrelo como la biblioteca disponible actualmente.

  • seleccionar espacio de trabajo

Seleccione la carpeta D:/Software/CodeQLHome/codeql-repo

进入"javascript/ql/src/"->任意*.ql文件右键->CodeQL:Run queries
  • Ver los resultados a la derecha

Supongo que te gusta

Origin blog.csdn.net/black0707/article/details/124419749
Recomendado
Clasificación