O CodeQL Agent é um projeto destinado a automatizar o uso do CodeQL. O projeto ajuda a criar banco de dados e executar a análise CodeQL. O CodeQL Agent é uma imagem do Docker.
O CodeQL Agent for Docker também é a imagem base do CodeQL Agent for Visual Studio Code - uma extensão para o código do Visual Studio que simplifica o uso do CodeQL e executa automaticamente a digitalização de código.
A imagem CodeQL Agent é lançada no Docker Hub sob o nome doublevkay/codeql-agent . Você pode usá -lo sem construir localmente.
O CodeQL Agent for Docker fornece estes principais recursos:
Amarre montar a fonte, a pasta de resultados e executar a imagem codeql-agent com o seguinte comando Docker.
docker run --rm --name codeql-agent-docker
-v "$PWD:/opt/src"
-v "$PWD/codeql-agent-results:/opt/results"
doublevkay/codeql-agentVocê também pode especificar mais opções para executar o CodeQL Agent. Consulte Opções suportadas para obter mais detalhes.
Você pode definir variáveis de ambiente para usar as seguintes opções suportadas:
| Variável | Descrição |
|---|---|
LANGUAGE | Valor <language> . Defina o idioma do projeto para criar banco de dados ou executar o SAST. O <language> deve ser: go , java , cpp , csharp , python , javascript , ruby . |
USERID | Valor <id> . Defina o proprietário da pasta de resultados como <id> . |
GROUPID | Valor <group_id> . Defina o proprietário do grupo da pasta de resultados como <group_id> . |
THREADS | Valor <number_of_threads> . Use esses threads para criar banco de dados e avaliar consultas. Padrão para 1. Você pode passar 0 para usar um thread por núcleo na máquina. |
OVERWRITE_FLAG | Valor --overwrite . Ativar/desativar o banco de dados de substituição quando o caminho do banco de dados existir e não um diretório vazio. Este sinalizador é útil para reconstruir à força o banco de dados. |
QS | Valor <queries-suite> . Especifique uma lista de consultas para executar seu banco de dados. O valor padrão é <language>-security-extended.qls . Para obter mais detalhes, consulte Analisando bancos de dados com a CELL CLI. |
SAVE_CACHE_FLAG | Valor --save-cache . Salvar agressivamente os resultados intermediários no cache do disco. Isso pode acelerar as consultas subsequentes se forem semelhantes. Esteja ciente de que o uso dessa opção aumentará bastante o uso de disco e o tempo de avaliação inicial. |
ACTION | Valor create-database-only . Criando o banco de dados CodeQL apenas sem executar a análise CodeQL. |
COMMAND | Valor <command> . A variável usada quando você cria um banco de dados CodeQL para um ou mais idiomas compilados, omita se os únicos idiomas solicitados forem Python e JavaScript. Isso especifica os comandos de compilação necessários para invocar o compilador. Se você não definir essa variável, o CodeQL tentará detectar o sistema de construção automaticamente, usando um autobuilder embutido. |
Isenção de responsabilidade: o CodeQL Agent encaminha diretamente essas opções para os argumentos de comando durante a execução do contêiner. Por favor, tome isso como sua responsabilidade de segurança.
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 padrão, usamos o JDK 11 e o Maven 3.6.3 para a imagem do CodeQL Agent. Podemos alterar as versões de Java e Maven, montando um volume e configurando as variáveis de ambiente Java_Home e Maven_Home no contêiner CodeQL Agent. Por exemplo:
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-agentVocê pode usar a imagem do CodeQL Agent no Docker Hub ou personalizar e construí -lo localmente.
# Build codeql-agent docker image locally
cd codeql-agent
docker build -t codeql-agent . O CodeQL Agent é uma imagem do Docker. As etapas a seguir são feitas para atingir os objetivos de automação do uso do CodeQL.
Nesta etapa, a imagem prepara o ambiente para a execução do CodeQL. Inclui: usando a imagem base do Ubuntu; baixar e instalar o pacote CodeQL (que contém as consultas CodeQL CLI e as bibliotecas pré -compiladas para reduzir o tempo de execução CodeQL); Instalando os softwares necessários como
java,maven,nodejs,typescript, ... para criar um banco de dados CodeQL com sucesso.
O CodeQL Agent usa o Github/Linguist para detectar o idioma do código -fonte.
O CodeQL Agent executa o comando CodeQL Create Database.
codeql database create --threads= $THREADS --language= $LANGUAGE $COMMAND $DB -s $SRC $OVERWRITE_FLAGA análise dos bancos de dados requer a especificação de um conjunto de consultas. De acordo com as metas do Application Static Application Security Testing (SAST), o CodeQL Agent usa
<language>-security-extended.qlscomo o conjunto de consultas padrão.
O CodeQL Agent executa o comando CodeQL Database Analysis.
codeql database analyze --format= $FORMAT --threads= $THREADS $SAVE_CACHE_FLAG --output= $OUTPUT /issues. $FORMAT $DB $QSO CodeQL Agent converterá o resultado do CodeQL do formato SARIF em esquemas de relatório de segurança (fornecidos pelo GitLab). Esta etapa é feita mapeando os campos de dois formatos. Os detalhes da implementação estão no script Sarif2Sast. Você pode usar esse script de forma independente como uma solução alternativa para resolver a edição do GitLab 118496.
Este repositório é baseado no Microsoft/CodeQL-container e J3SSIE/CodeQL-Docker com mais opções de função. Especificamente:
Você pode abrir um problema no repositório do GitHub
As contribuições são sempre bem -vindas! Basta criar um pedido de tração ou entrar em contato comigo
Veja detalhes
O CodeQL Agent é usar o CodeQL CLI como o mecanismo principal. Siga os termos e condições do GitHub CodeQL e tome -o como sua própria responsabilidade.