
Choccy - это проект, который контролирует обновления репозитория GitHub и автоматически выполняет сканирование анализа CodeQL на них.
Перед запуском необходимо настроить среду компиляции кода самостоятельно, среда CodeQL:
Скачать CodeQl Binary and Library https://github.com/github/codeql-cli-binaries/releases, https://github.com/github/codeql/tags
После декомпрессии он помещается в тот же каталог, что и бинарный файл Choccy, то есть:
$ tree . -L 1
.
├── choccy
├── codeql
└── codeql-codeql-cli-v2.19.4
Основные конфигурации и функции находятся в веб -интерфейсе, и есть только два параметра командной строки:
-addr string
监听地址和端口 (default "0.0.0.0:80")
-token string
系统Token
Когда программа работает в первый раз, она создаст папку choccy_data в каталоге, где она находится для сохранения данных. Если токен не указан, он будет сгенерирован случайным образом и выводит в командную строку. Сам проект имеет потенциальные функции, такие как произвольное выполнение команды и чтение файлов. Поэтому, если служба открыта для общедоступной сети, обязательно установите сильный пароль.
Вам нужно ввести в веб-каталог, чтобы сначала скомпилировать фронт-конце. При составлении задней части Golang файл ресурса переднего интерната будет автоматически встроен.
cd web
npm install
npm run build
cd ..
go build -o choccy main.go
# mac上交叉编译
# CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o choccy_linux_amd64 main.go
# CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o choccy_windows_amd64.exe main.go
# CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o choccy_darwin_amd64 main.go Перед использованием настраивайте среду CodeQL, и лучше всего настроить токен GitHub в设置, в противном случае он может быть ограничен доступом API GitHub.设置-其他- --ram 2048 в CodeQL附加命令行选项- это максимальная память, которую можно использовать CodeQL, а устройство - MB. Пожалуйста, увеличьте его по мере необходимости в соответствии с конфигурацией вашей системы, в противном случае это может повлиять на скорость сканирования или вызвать сбой сканирования.
В настоящее время он поддерживает сканирование выпуска, сканирование филиала по умолчанию и исходное сканирование базы данных CodeQL репозитория GitHub. GitHub автоматически компилируется базами данных CodeQL для многих репозиториев (можно просматривать через интерфейс https://api.github.com/repos/<owner>/<repo>/code-scanning/codeql/databases <ahroid>/<preo>/code-canning/codeql/databases). Это сохранит этапы настройки среды локальной компиляции и время для компиляции базы данных локально. Таким образом, режим сканирования будет приоритет исходной базе данных. Возьмите проект Java-Sec-Code в качестве примера:

Query Suite - это коллекция серии заявлений о запросе. Вы можете щелкнуть на查询套件в строке меню, чтобы просмотреть и редактировать его. Здесь вы можете сначала выбрать предустановку java_security.qls .
Затем нажмите加入扫描队列в правой стороне проекта, которая немедленно создаст задачу для версии проекта и сканирования.

На вкладке任务вы можете увидеть текущий журнал статуса выполнения задачи и выполнения:

После завершения выполнения вы можете увидеть конкретные результаты сканирования на вкладке分析结果. Отображение результатов полностью повторяет эффект отображения плагина CodeQL в VSCODE, и были сделаны некоторые оптимизации, включая информацию об уязвимости, местоположение уязвимости, соответствующий идентификатор правила, полную связь вызова уязвимости и код контекста уязвимости. Нажмите на гиперссылку, чтобы перейти в соответствующее местоположение кода репозитория GitHub.

После добавления проекта последняя версия будет вытягиваться каждую неделю для сканирования. Это может быть настроено в设置-其他-定时扫描Cron表达式:

Кроме того,设置-环境-环境变量может настроить прокси, когда система обращается к GitHub и т. Д.

Вы можете поместить свою собственную библиотеку запросов или заявление запроса в каталог Packs . После завершения размещения вы можете перейти на вкладку查询包, чтобы просмотреть:


Query Suite - это коллекция серии правил CodeQL, которые можно отредактировать и просмотреть на вкладке查询套件:

Официальный синтаксис-справочный документ: https://docs.github.com/zh/code-security/codeql-cli/using-the-advanced-function-of-the-codeql-cli/creating-codeql-query-suites
На странице数据库щелкните значок плюс в правом верхнем углу, чтобы упаковать локальную базу данных в пакет сжатого на молнии, затем загрузите, дождитесь загрузки и импорт (страница не может быть закрыта во время загрузки)
(Функция загрузки не использует передачу блоков, поэтому доступная память сервера должна быть больше, чем размер файла)


На странице任务нажмите значок плюс в правом верхнем углу и выберите пакет базы данных и запросов. Имя проекта такое же, как и имя базы данных по умолчанию.

На странице任务выберите значок плюс в правом верхнем углу и нажмите从GitHub批量创建

搜索语句представляет собой поиск репозитория, Справочник синтаксиса: https://docs.github.com/en/rest/search/search?apiversion=2022-11-28#search-repositories
扫描范围относится к какой части сканирования после сортировки в определенном порядке. На следующем скриншоте количество звезд будет отсортировано в обратном порядке, а 11 -й и 12 -й склады будут отсканированы.

Этот инструмент предназначен только для юридического обучения или исследовательского поведения. Во время использования этого инструмента вы должны убедиться, что все ваше поведение соответствует местным законам и нормативным актам. Если у вас есть какие -либо незаконные действия во время использования этого инструмента, вы будете нести все последствия по своему усмотрению, и все разработчики и все участники этого инструмента не несут никакой юридической или совместной ответственности. Пожалуйста, не устанавливайте и не используйте этот инструмент, если вы не прочитали, полностью поняли и не приняли все условия настоящего Соглашения. Ваше использование или ваше принятие настоящего Соглашения любым другим явным или подразумеваемым образом считается, что он читал и согласился с обязательностью настоящего Соглашения.