
Choccy est un projet qui surveille les mises à jour du référentiel GitHub et effectue automatiquement des analyses d'analyse CodeQL.
Avant d'exécuter, vous devez configurer l'environnement de compilation de code vous-même, Environnement CodeQL:
Télécharger CodeQL Binary and Library https://github.com/github/codeql-cli-binaries/releases, https://github.com/github/codeql/tags
Après la décompression, il est placé dans le même répertoire que le fichier binaire Choccy, c'est-à-dire:
$ tree . -L 1
.
├── choccy
├── codeql
└── codeql-codeql-cli-v2.19.4
Les principales configurations et fonctions sont dans l'interface Web, et il n'y a que deux paramètres de ligne de commande:
-addr string
监听地址和端口 (default "0.0.0.0:80")
-token string
系统Token
Lorsque le programme s'exécute pour la première fois, il créera un dossier choccy_data dans le répertoire où il se trouve pour enregistrer les données. Si le jeton n'est pas spécifié, il sera généré au hasard et sortira sur la ligne de commande. Le projet lui-même a des fonctions potentielles telles que l'exécution de la commande arbitraire et la lecture de fichiers. Par conséquent, si le service est ouvert au réseau public, assurez-vous de définir un mot de passe solide.
Vous devez saisir le répertoire Web pour compiler d'abord le frontal. Lors de la compilation du back-end Golang, le fichier de ressources frontal sera automatiquement intégré.
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 Avant d'utiliser, configurez l'environnement CodeQL et il est préférable de configurer également le jeton GitHub dans设置, sinon il peut être limité à l'accès par l'API GitHub.设置-其他- --ram 2048 dans CodeQL附加命令行选项est la mémoire maximale autorisée à être utilisée par CodeQL, et l'unité est MB. Veuillez l'augmenter le cas échéant en fonction de la configuration de votre système, sinon elle peut affecter la vitesse de balayage ou provoquer une défaillance de balayage.
Actuellement, il prend en charge la numérisation de publication, la numérisation de la branche par défaut et la balayage de base de données CodeQL d'origine du référentiel GitHub. GitHub compilera automatiquement les bases de données CodeQL pour de nombreux référentiels (peut être affiché via l'interface https://api.github.com/repos/<owner>/<repo>/code-scanning/codeql/databases <wewear> / <popo> / code-scanning / codeql / databases). Cela sauvera les étapes de configuration de l'environnement de compilation local et le temps de compiler la base de données localement. Par conséquent, le mode de numérisation donnera la priorité à la base de données d'origine. Prenez le projet Java-Sec-Code comme exemple:

La suite de requêtes est une collection d'une série de déclarations de requête. Vous pouvez cliquer sur查询套件dans la barre de menu pour afficher et la modifier. Ici, vous pouvez d'abord sélectionner le préréglage java_security.qls .
Cliquez ensuite sur加入扫描队列sur le côté droit du projet, qui créera immédiatement une tâche pour verser le projet et la numérisation.

Dans l'onglet任务, vous pouvez voir l'état d'exécution de la tâche actuel et le journal d'exécution:

Une fois l'exécution terminée, vous pouvez voir les résultats de numérisation spécifiques dans l'onglet分析结果. L'affichage des résultats reproduit complètement l'effet d'affichage du plug-in CodeQL dans VSCODE, et certaines optimisations ont été faites, y compris les informations de vulnérabilité, l'emplacement de la vulnérabilité, l'ID de règle correspondant, le lien d'appel complet de la vulnérabilité et le code de contexte de vulnérabilité. Cliquez sur l'hyperlien pour passer à l'emplacement du code correspondant du référentiel GitHub.

Une fois le projet ajouté, la dernière version sera retirée chaque semaine pour la numérisation. Ceci peut être configuré dans设置-其他-定时扫描Cron表达式:

De plus, la环境变量设置-环境- Environnement peut configurer le proxy lorsque le système accède à GitHub, etc.

Vous pouvez mettre votre propre bibliothèque de requêtes ou une déclaration de requête dans le répertoire Packs . Une fois le placement terminé, vous pouvez accéder à查询包pour afficher:


Query Suite est une collection d'une série de règles CodeQL qui peuvent être modifiées et visualisées dans查询套件:

Le document de référence de syntaxe officiel: https://docs.github.com/zh/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/creating-codeql-query-suites
Sur数据库, cliquez sur l'icône Plus dans le coin supérieur droit pour emballer la base de données locale dans un package compressé par Zip, puis télécharger, attendre le téléchargement et l'importation pour terminer (la page ne peut pas être fermée pendant le téléchargement)
(La fonction de téléchargement n'utilise pas la transmission de blocs, donc la mémoire disponible du serveur doit être supérieure à la taille du fichier)


Sur任务, cliquez sur l'icône Plus dans le coin supérieur droit et sélectionnez la base de données et la suite de requête. Le nom du projet est le même que le nom de la base de données par défaut.

Sur任务, sélectionnez l'icône plus dans le coin supérieur droit et cliquez sur从GitHub批量创建

搜索语句est une recherche du référentiel, référence de syntaxe: https://docs.github.com/en/rest/search/search?apiversion=2022-11-28#search-repostories
扫描范围fait référence à quelle partie du scan après le tri dans un certain ordre. Dans la capture d'écran suivante, le nombre d'étoiles sera trié dans l'ordre inverse, et les 11e et 12e entrepôts seront analysés.

Cet outil concerne uniquement l'apprentissage juridique ou le comportement de recherche. Lors de l'utilisation de cet outil, vous devez vous assurer que tout votre comportement est conforme aux lois et réglementations locales. Si vous avez des actes illégaux lors de l'utilisation de cet outil, vous supporterez toutes les conséquences à votre pouvoir discrétionnaire, et tous les développeurs et tous les contributeurs de cet outil ne sont pas responsables légales ou conjointes. Veuillez ne pas installer et utiliser cet outil, sauf si vous avez entièrement lu, entièrement compris et accepté toutes les conditions de cet accord. Votre utilisation ou votre acceptation du présent accord par toute autre manière expresse ou implicite est réputée avoir lu et accepté la contrainte du présent accord.