Агент CodeQL - это проект, направленный на автоматизацию использования CodeQL. Проект помогает создать базу данных и выполнить анализ CodeQL. Агент CodeQL - это изображение Docker.
Агент CodeQL для Docker также является базовым изображением агента CodeQL для кода Visual Studio - расширение для Visual Studio Code, которое автоматически упрощает использование CodeQL и автоматически выполняет сканирование кода.
Изображение агента CodeQL выпускается в Docker Hub под именем doublevkay/codeql-agent . Вы можете использовать его без строительства локально.
Агент CodeQL для Docker предоставляет эти ключевые функции:
Свяжите источник, папку результатов и запустите изображение codeql-agent со следующей командой Docker.
docker run --rm --name codeql-agent-docker
-v "$PWD:/opt/src"
-v "$PWD/codeql-agent-results:/opt/results"
doublevkay/codeql-agentВы также можете указать больше параметров для запуска агента CodeQL. См. Поддерживаемые варианты для более подробной информации.
Вы можете установить переменные среды для использования следующих поддерживаемых параметров:
| Переменная | Описание |
|---|---|
LANGUAGE | Ценность <language> . Установите язык проекта для создания базы данных или выполнения SAST. <language> должен быть: go , java , cpp , csharp , python , javascript , ruby . |
USERID | Значение <id> . Установите владельца папки «Результаты» <id> . |
GROUPID | Значение <group_id> . Установите владельца группы папки «Результаты» <group_id> . |
THREADS | Значение <number_of_threads> . Используйте это множество потоков для создания базы данных и оценки запросов. По умолчанию 1. Вы можете пройти 0, чтобы использовать один поток на ядро на машине. |
OVERWRITE_FLAG | Значение --overwrite . Включить/отключить базу данных перезаписи, когда существует путь базы данных, а не пустой каталог. Этот флаг полезен для насильственного восстановления базы данных. |
QS | Значение <queries-suite> . Укажите список запросов для запуска вашей базы данных. Значение по умолчанию <language>-security-extended.qls . Для получения более подробной информации см. Анализ баз данных с помощью CLI CODEQL. |
SAVE_CACHE_FLAG | Значение --save-cache . Агрессивно сохранить промежуточные результаты в кеш диска. Это может ускорить последующие запросы, если они похожи. Имейте в виду, что использование этой опции значительно увеличит использование диска и начальное время оценки. |
ACTION | Значение create-database-only . Создание базы данных CodeQL только без выполнения анализа CodeQL. |
COMMAND | Значение <command> . Переменная, используемая при создании базы данных CodeQL для одного или нескольких скомпилированных языков, пропустите, если единственными запрашиваемыми языками являются Python и JavaScript. Это указывает команды сборки, необходимые для вызова компилятора. Если вы не установите эту переменную, CodeQL попытается автоматически обнаружить систему сборки, используя встроенный автобулдер. |
Отказ от ответственности: агент CodeQL непосредственно пересылает эти параметры в командные аргументы при запуске контейнера. Пожалуйста, воспринимайте это как свою ответственность за безопасность.
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-agentПо умолчанию мы используем JDK 11 и Maven 3.6.3 для изображения агента CodeQL. Мы можем изменить версии Java и Maven, установив объем и установив переменные среды Java_home и Maven_home в контейнере агента CodeQL. Например:
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-agentВы можете использовать изображение агента CodeQL на Docker Hub или настраивать и построить его локально.
# Build codeql-agent docker image locally
cd codeql-agent
docker build -t codeql-agent . Агент CodeQL - это изображение Docker. Следующие шаги сделаны для достижения целей автоматизации использования CodeQL.
На этом этапе изображение готовит среду для выполнения CodeQL. Он включает в себя: использование базового изображения Ubuntu; загрузка и установка пакета CodeQL (который содержит CLI CODEQL и предварительно скомпилированные записи библиотеки, чтобы сократить время выполнения CodeQL); Установка необходимых программ, таких как
java,maven,nodejs,typescript, ... для успешного создания базы данных CodeQL.
Агент CodeQL использует GitHub/лингвист для обнаружения языка исходного кода.
Агент CodeQL запускает команду CodeQL Create Database.
codeql database create --threads= $THREADS --language= $LANGUAGE $COMMAND $DB -s $SRC $OVERWRITE_FLAGАнализ баз данных требует определения набора запросов. Согласно целям целей приложения статического тестирования безопасности приложений (SAST), агент CodeQL использует
<language>-security-extended.qlsв качестве набора запросов по умолчанию.
Агент CodeQL запускает команду анализа базы данных CodeQL.
codeql database analyze --format= $FORMAT --threads= $THREADS $SAVE_CACHE_FLAG --output= $OUTPUT /issues. $FORMAT $DB $QSАгент CodeQL преобразует результат CodeQL из формата SARIF в схемы отчета о безопасности (предоставленные Gitlab). Этот шаг выполняется путем отображения полей двух форматов. Детали реализации находятся в сценарии Sarif2SAST. Вы можете использовать этот сценарий независимо в качестве обходного пути для решения выпуска Gitlab 118496.
Этот репо основан на Microsoft/CodeQL-Container и J3SSIE/CodeQL-Docker с большими параметрами функций. Конкретно:
Вы можете открыть проблему на GitHub Repo
Вклад всегда приветствуются! Просто создайте запрос на тяжесть или свяжитесь со мной
Смотрите детали
Agent CodeQL использует CodeQL CLI в качестве основного двигателя. Пожалуйста, следуйте положениям и условиям GitHub CodeQL и воспринимайте их как свою ответственность.