CodeQL Agent es un proyecto destinado a automatizar el uso de CodeQL. El proyecto ayuda a crear una base de datos y ejecutar el análisis CodeQL. CodeQL Agent es una imagen Docker.
CodeQL Agent for Docker también es la imagen base de CodeQL Agent for Visual Studio Code, una extensión para el código Visual Studio que simplifica el uso de CodeQL y ejecuta el escaneo de código automáticamente.
La imagen del agente CodeQL se publica en Docker Hub bajo el nombre doublevkay/codeql-agent . Puedes usarlo sin construir localmente.
CodeQL Agent for Docker proporciona estas características clave:
El enlace monta la fuente, la carpeta de resultados y ejecuta la imagen codeql-agent con el siguiente comando Docker.
docker run --rm --name codeql-agent-docker
-v "$PWD:/opt/src"
-v "$PWD/codeql-agent-results:/opt/results"
doublevkay/codeql-agentTambién puede especificar más opciones para ejecutar el agente CodeQL. Consulte las opciones compatibles para más detalles.
Puede establecer variables de entorno para usar las siguientes opciones compatibles:
| Variable | Descripción |
|---|---|
LANGUAGE | Valor <language> . Establezca el lenguaje del proyecto para crear una base de datos o ejecutar SAST. El <language> debe ser: go , java , cpp , csharp , python , javascript , ruby . |
USERID | Valor <id> . Establezca el propietario de la carpeta de resultados en <id> . |
GROUPID | Valor <group_id> . Establezca el propietario del grupo de la carpeta de resultados en <group_id> . |
THREADS | Valor <number_of_threads> . Use esto muchos hilos para crear una base de datos y evaluar consultas. El valor predeterminado es 1. Puede pasar 0 para usar un hilo por núcleo en la máquina. |
OVERWRITE_FLAG | Valor --overwrite . Habilitar/deshabilitar sobrescribir la base de datos cuando la ruta de la base de datos existe y no un directorio vacío. Este indicador es útil para reconstruir por la fuerza la base de datos. |
QS | Valor <queries-suite> . Especifique una lista de consultas para ejecutar su base de datos. El valor predeterminado es <language>-security-extended.qls . Para obtener más detalles, consulte el análisis de bases de datos con la CLI CodeQL. |
SAVE_CACHE_FLAG | Valor --save-cache . Guardar agresivamente los resultados intermedios en el caché del disco. Esto puede acelerar las consultas posteriores si son similares. Tenga en cuenta que usar esta opción aumentará en gran medida el uso del disco y el tiempo de evaluación inicial. |
ACTION | Value create-database-only . Creación de la base de datos CodeQL solo sin ejecutar el análisis CodeQL. |
COMMAND | Valor <command> . La variable utilizada cuando crea una base de datos CodeQL para uno o más lenguajes compilados, omita si los únicos idiomas solicitados son Python y JavaScript. Esto especifica los comandos de compilación necesarios para invocar el compilador. Si no establece esta variable, CodeQL intentará detectar el sistema de compilación automáticamente, utilizando un Autobuilder incorporado. |
Descargo de responsabilidad: CodeQL Agent reenvía directamente estas opciones a los argumentos de comando mientras se ejecuta el contenedor. Tómelo como su responsabilidad de seguridad.
docker run --rm --name codeql-agent-docker
-v " $PWD :/opt/src "
-v " $PWD /codeql-agent-results:/opt/results "
doublevkay/codeql-agentdocker run --rm --name codeql-agent-docker
-v " $PWD :/opt/src "
-v " $PWD /codeql-agent-results:/opt/results "
-e " THREADS=0 "
doublevkay/codeql-agentdocker run --rm --name codeql-agent-docker
-v " $PWD :/opt/src "
-v " $PWD /codeql-agent-results:/opt/results "
-e " ACTION=create-database-only "
doublevkay/codeql-agentdocker run --rm --name codeql-agent-docker
-v " $PWD :/opt/src "
-v " $PWD /codeql-agent-results:/opt/results "
-e " LANGUAGE=java "
-e " QS=java-security-and-quality.qls "
doublevkay/codeql-agentdocker run --rm --name codeql-agent-docker
-v " $PWD :/opt/src "
-v " $PWD /codeql-agent-results:/opt/results "
-e " USERID= $( id -u ${USER} ) " -e " GROUPID= $( id -g ${USER} )
doublevkay/codeql-agentPor defecto, usamos JDK 11 y Maven 3.6.3 para la imagen del agente CodeQL. Podemos cambiar las versiones de Java y Maven montando un volumen y estableciendo las variables de entorno Java_Home y Maven_Home en el contenedor de agente CodeQL. Por ejemplo:
FROM --platform=amd64 maven:3-jdk-8-slim
RUN mkdir -p /opt/jdk/ /opt/maven/
RUN cp -r $JAVA_HOME/* /opt/jdk/
RUN cp -r $MAVEN_HOME/* /opt/maven/
CMD [ "echo" ] docker buildx build -t codeql-java -f Dockerfile-java .
docker run --rm -v " jdkvol:/opt/jdk " -v " mavenvol:/opt/maven " codeql-javadocker run --rm --name codeql-agent-docker
-v " $PWD :/opt/src "
-v " $PWD /codeql-agent-results:/opt/results "
-v " jdkvol:/opt/jdk "
-v " mavenvol:/opt/maven "
-e " LANGUAGE=java "
-e " JAVA_HOME=/opt/jdk "
-e " MAVEN_HOME=/opt/maven "
-e " COMMAND=mvn clean install "
doublevkay/codeql-agentPuede usar la imagen del agente CodeQL en Docker Hub o personalizarla y construirla localmente.
# Build codeql-agent docker image locally
cd codeql-agent
docker build -t codeql-agent . CodeQL Agent es una imagen Docker. Se realizan los siguientes pasos para lograr los objetivos de automatizar el uso de CodeQL.
En este paso, la imagen prepara el entorno para ejecutar CodeQL. Incluye: usar la imagen base de Ubuntu; descargar e instalar el paquete CodeQL (que contiene la CLI CodeQL y las consultas de la biblioteca precompiladas para reducir el tiempo de ejecución de CodeQL); Instalación de los software necesarios como
java,maven,nodejs,typescript, ... para crear una base de datos CodeQL con éxito.
CodeQL Agent utiliza GitHub/Linguist para detectar el lenguaje del código fuente.
CodeQL Agent ejecuta el comando CodeQL Crear base de datos.
codeql database create --threads= $THREADS --language= $LANGUAGE $COMMAND $DB -s $SRC $OVERWRITE_FLAGAnalizar bases de datos requiere especificar un conjunto de consultas. De acuerdo con los objetivos de la aplicación, los objetivos de Pruebas de seguridad de aplicaciones estáticas (SAST), CodeQL Agent usa
<language>-security-extended.qlscomo el conjunto de consultas predeterminado.
CodeQL Agent ejecuta el comando de análisis de la base de datos CodeQL.
codeql database analyze --format= $FORMAT --threads= $THREADS $SAVE_CACHE_FLAG --output= $OUTPUT /issues. $FORMAT $DB $QSEl agente de CodeQL convertirá el resultado CodeQL del formato SARIF a los esquemas de informe de seguridad (proporcionados por GITLAB). Este paso se realiza mapeando los campos de dos formatos. Los detalles de implementación están en el script SARIF2Sast. Puede usar este script de forma independiente como una solución para resolver el número de GitLab 118496.
Este repositorio se basa en Microsoft/CodeQL-Container y J3SSIE/CodeQL-Docker con más opciones de función. Específicamente:
Puede abrir un problema en el repositorio de Github
¡Las contribuciones siempre son bienvenidas! Simplemente cree una solicitud de extracción o contácteme
Ver detalles
El agente CodeQL se usa CodeQL CLI como el motor central. Siga los términos y condiciones del código de GitHub y tómelo como su propia responsabilidad.