GitLab combine Fortify pour réaliser une pratique d'audit de code automatisée

1. Origines

Un camarade de classe qui assure la sécurité dans le groupe A peut avoir un travail d'audit de code, il doit généralement extraire le code de gitlab, puis utiliser l'outil d'audit de code pour scanner, puis confirmer manuellement les résultats ;

Les choses qui doivent être faites dans ce processus sont fastidieuses, comme comment configurer le jeton dans gitlab, comment extraire automatiquement le code vers le local, comment appeler fortify pour réaliser une analyse par lots et bien d'autres problèmes fastidieux.

Cet article prend la construction de la sécurité du code de sécurité de la partie A comme ligne principale et explique comment permettre à l'outil d'audit de code d'analyser automatiquement le code dans l'entrepôt gitlab. Et fournit un environnement expérimental pratique que tout le monde peut tester.

Dans l'expérience de cet article, une variété d'outils d'audit de code (notamment semgrep, fortify, Murphy et Hippo) ont été utilisés. Parmi eux, le logiciel fortify est de nature commerciale et cet article ne peut pas fournir le logiciel. Si vous avez besoin pour préparer ce logiciel et le stocker dans le répertoire hôte /data/share/ fortify), après avoir terminé le test, vous pouvez voir la comparaison des effets de chaque outil d'audit de code.

2. Préparer l'environnement

Pour la commodité de tous, je partage directement l'adresse de mon gitlab expérimental, et tout le monde peut d'abord utiliser cet environnement partagé.

URL:http://123.249.6.139:1880/
用户名:root
密码:qingtingtest
token:glpat-SMsSWy6xzB4x8B6rFryB

Configurer l'environnement gitlab

Afin de vraiment simuler Fortify en analysant le code de l'entrepôt gitlab, je dois créer rapidement un entrepôt gitlab. Ici, le moyen le plus simple d'expérimenter avec docker est d'exécuter la commande suivante

docker run --detach --hostname gitlab.thinkpad --publish 8443:443 --publish 880:80 --publish 222:22 --name gitlab --restart always --volume /data/gitlab/config:/etc/gitlab --volume /data/gitlab/logs:/var/log/gitlab --volume /data/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce

Une fois la commande exécutée, Docker extraira automatiquement l'image Docker et créera un conteneur Gitlab. Après le démarrage du service, un mot de passe pour l'utilisateur root sera généré de manière aléatoire. Vous pouvez afficher le mot de passe d'initialisation de l'utilisateur root via la commande suivante

docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

Une fois la commande exécutée, vous pouvez voir le mot de passe dans le terminal comme indiqué ci-dessous

Password: UnSoOs7l8YN6dYDQRP/1/dzpKswF7dq7fpyhKBey95A=

Vous pouvez maintenant utiliser le navigateur pour accéder à la page gitlab, l'adresse d'accès est http://x.x.x.x:880/, puis le navigateur accédera automatiquement à la page de connexion, comme le montre la figure ci-dessous.

Sur la page de connexion, nous entrons root pour le nom d'utilisateur et le mot de passe que nous venons d'obtenir pour le mot de passe ; après une connexion réussie, il passera automatiquement à la page d'accueil du workbench, comme le montre la figure ci-dessous.

Créer un jeton pour l'accès à l'API

Pour que fortify puisse accéder au code de l'entrepôt gitlab, nous devons créer un jeton pour l'accès à l'API ; développez le menu déroulant à la position de l'avatar, sélectionnez préférences->Jetons d'accès, remplissez les paramètres pertinents, l'interface est comme suit

Une fois la création terminée, copiez le jeton généré, qui sera utilisé ultérieurement

glpat-ggjo6Z6aQXWCZ2FNJcsz

Une fois gitlab construit, il y a un projet vide par défaut et fortify ne peut pas éliminer les failles précieuses. Afin de faciliter les tests, vous devez importer le projet à l'emplacement du nouveau projet, ouvrir l'adresse URL, puis sélectionner, puis remplissez un fichier qui peut
http://10.1.1.140:880/projects/new#import_projectêtre Repository by URLextrait Adresse de l'entrepôt, ici j'en propose une pour que chacun puisse expérimenter, comme le montre la figure ci-dessous

https://gitee.com/songboy/QingScan

Après avoir importé le projet, gitlab extraira automatiquement le code vers le serveur, comme le montre la figure ci-dessous.

3. Paramètres de configuration

Maintenant que vous disposez de l'environnement expérimental gitlab, vous pouvez officiellement démarrer l'expérience. Tout d'abord, ouvrez la page du marché de Dragonfly. L'adresse URL est la suivante

http://qingting.starcross.cn/scenario/store

Vous serez peut-être invité à vous connecter. Si vous accédez à la console de sécurité Dragonfly pour la première fois, elle s'enregistrera automatiquement après l'analyse et la connexion.

Ensuite, vous devez exécuter la commande shell pour ajouter des nœuds sur le serveur, suivez simplement les invites, comme le montre la figure suivante

Revenez maintenant à la page du marché, recherchez la vulnérabilité Quick Mining 0day, il y a un bouton en bas, ajoutez-le au flux de travail, comme indiqué dans la figure ci-dessous.

Après avoir ajouté au workflow, vous verrez les informations du workflow, où vous pourrez remplir les informations de configuration de gitlab, vous devez cliquer pour entrer dans le processus d'orchestration, comme indiqué dans la figure ci-dessous

Sur la page du workflow d'orchestration, il y a une petite icône pour définir les variables globales en haut, suivez les invites pour configurer les paramètres nécessaires, comme indiqué dans la figure ci-dessous.

4. Exécutez le programme

Après avoir exécuté les variables globales, vous pouvez cliquer avec le bouton droit sur le premier nœud et cliquer à nouveau sur l'option d'exécution pour exécuter le flux de travail. L'état du nœud changera au cours du processus en cours.

Le nœud fonctionnera de haut en bas et l'icône d'état continuera de tourner pendant le processus en cours. Lorsque l'exécution est terminée, vous pouvez voir la petite icône de réussite.

Une fois l'opération terminée, vous pouvez accéder au centre de données pour afficher les résultats de l'opération et les filtrer en fonction du nœud et de l'ID de tâche, comme indiqué dans la figure ci-dessous.

J'ai sélectionné le code fortifié pour analyser le nœud, et la page de liste filtrée est la suivante

Seule une petite partie des données est affichée sur la page de liste. Vous pouvez cliquer sur le bouton Afficher pour afficher des informations détaillées sur les vulnérabilités sur la page de détails pour le marquage d'audit, comme le montre la figure ci-dessous.

Le code du nœud ci-dessus est open source dans GitHub, et les petits partenaires dans le besoin peuvent également le trouver dans GitHub.

https://github.com/StarCrossPortal/QingTing

Adresse GitHub : https://github.com/StarCrossPortal/QingTing

Je suppose que tu aimes

Origine blog.csdn.net/u013431141/article/details/128241049
conseillé
Classement