Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/xlab-si/iac-scan-runner
Sécurité de l'Infrastructure CloudScanners de VulnérabilitésAudit de ConfigurationDevSecOpsSécurité des API
GitHubxlab-si/iac-scan-runner

iac-scan-runner

Service qui analyse votre Infrastructure en tant que Code pour les vulnérabilités courantes

Voir le dépôt
4935il y a 2 ansVérifié par Kitploit
Site web

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

IaC Scan Runner

Service qui scanne votre Infrastructure en tant que Code à la recherche de vulnérabilités courantes.

GitHub Workflow Status Docker Image Version (latest by date) PyPI Test PyPI

AspectInformation
Nom de l'outilIaC Scan Runner
Image Dockerxscanner/runner
Paquet PyPIiac-scan-runner
Documentationdocs
Nous contacter[email protected]

Table des matières

  • Description
  • Exécution
    • Exécution avec Docker
    • Exécution depuis la CLI
    • Exécution depuis les sources
  • Licence
  • Contact
  • Remerciements

Objectif et description

IaC Scan Runner est un service d'API REST utilisé pour scanner un paquet IaC (Infrastructure en tant que Code) et effectuer différentes vérifications de code afin de trouver d'éventuelles vulnérabilités et améliorations. Consultez la documentation pour plus d'informations.

Exécution

Cette section explique comment exécuter l'API REST.

Exécution avec Docker

Vous pouvez exécuter l'API REST en utilisant l'image Docker publique xscanner/runner comme suit :

root@kitploit:~
# Exécuter l'API REST IaC Scan Runner dans un conteneur Docker et
# naviguer vers localhost:8080/swagger ou localhost:8080/redoc
$ docker run --name iac-scan-runner -p 8080:80 xscanner/runner

Ou vous pouvez construire l'image localement et l'exécuter ainsi :

root@kitploit:~
# Construire le conteneur Docker (cela prendra du temps)
$ docker build -t iac-scan-runner .
# Exécuter l'API REST IaC Scan Runner dans un conteneur Docker et
# naviguer vers localhost:8080/swagger ou localhost:8080/redoc
$ docker run --name iac-scan-runner -p 8080:80 iac-scan-runner

Exécution depuis la CLI

Pour exécuter en utilisant la CLI IaC Scan Runner :

root@kitploit:~
# Installer la CLI
$ python3 -m venv .venv && . .venv/bin/activate
(.venv) $ pip install iac-scan-runner
# Afficher la spécification OpenAPI
(.venv) $ iac-scan-runner openapi
# Installer les prérequis
(.venv) $ iac-scan-runner install
# Exécuter l'API REST IaC Scan Runner
(.venv) $ iac-scan-runner run

Exécution depuis les sources

Pour exécuter localement depuis les sources :

root@kitploit:~
# Exporter les variables d'environnement
export MONGODB_CONNECTION_STRING=mongodb://localhost:27017
export SCAN_PERSISTENCE=enabled
export USER_MANAGEMENT=enabled

# Configurer MongoDB
$ docker run --name mongodb -p 27017:27017 mongo

# Installer les prérequis
$ python3 -m venv .venv && . .venv/bin/activate
(.venv) $ pip install -r requirements.txt
(.venv) $ ./install-checks.sh
# Exécuter l'API REST IaC Scan Runner (ajouter le flag --reload pour appliquer les modifications de code à la volée)
(.venv) $ uvicorn src.iac_scan_runner.api:app

Utilisation et exemples

Cette partie montrera l'un des déploiements possibles et de courts exemples d'utilisation des appels API.

Nous allons d'abord cloner le dépôt iac scan runner et exécuter l'API.

root@kitploit:~
$ git clone https://github.com/xlab-si/iac-scan-runner.git
$ docker compose up

Après cela, vous pouvez utiliser différents points de terminaison API en appelant localhost:8000. Vous pouvez également naviguer vers localhost:8000/swagger ou localhost:8000/redoc et tester tous les points de terminaison API là-bas. Dans cet exemple, nous utiliserons curl pour appeler les points de terminaison API.

  1. Créons un projet nommé test.
root@kitploit:~
curl -X 'POST' \
  'http://0.0.0.0/project?creator_id=test' \
  -H 'accept: application/json' \
  -d ''

L'identifiant du projet nous sera retourné. Pour cet exemple, l'identifiant est 1e7b2a91-2896-40fd-8d53-83db56088026.

  1. Par exemple, supposons que nous voulions initier toutes les vérifications sauf ansible-lint. Désactivons-le.
root@kitploit:~
curl -X 'PUT' \
  'http://0.0.0.0:8000/projects/1e7b2a91-2896-40fd-8d53-83db56088026/checks/ansible-lint/disable' \
  -H 'accept: application/json'
  1. Maintenant que le projet est configuré, nous pouvons simplement choisir les fichiers que nous voulons scanner et les ziper. Pour que IaC-Scan-Runner fonctionne, les fichiers doivent être des archives compressées (généralement des fichiers zip). Dans ce cas, le type de réponse sera json, mais il est possible de le changer en html. Veuillez remplacer YOUR.zip par le chemin de votre fichier.
root@kitploit:~
curl -X 'POST' \
  'http://0.0.0.0:8000/projects/1e7b2a91-2896-40fd-8d53-83db56088026/scan?scan_response_type=json' \
  -H 'accept: application/json' \
  -H 'Content-Type: multipart/form-data' \
  -F '[email protected];type=application/zip'

C'est tout.

Étendre le workflow de scan avec de nouveaux outils de vérification

À un certain moment, il peut être nécessaire d'inclure de nouveaux outils de vérification dans le workflow de scan, afin de fournir une couverture plus large des normes IaC et des types de projets. Par conséquent, dans cette sous-section, une séquence d'étapes nécessaires à cette fin est identifiée et décrite. Cependant, les étapes doivent être effectuées manuellement comme décrit, mais il est prévu d'automatiser cette procédure à l'avenir via l'API et de fournir une interface conviviale qui aidera l'utilisateur lors de l'importation de nouveaux outils qui deviendront partie du catalogue disponible constituant le workflow de scan. La figure 16 illustre les étapes nécessaires pour étendre le workflow de scan avec un nouvel outil.

Étape 1 – Ajout d'une classe spécifique à l'outil dans le répertoire checks Tout d'abord, il est nécessaire d'ajouter une nouvelle classe Python spécifique à l'outil dans le répertoire checks du code source d'IaC Scan Runner : iac-scan-runner/src/iac_scan_runner/checks/new_tool.py La classe d'un nouvel outil hérite de la classe Check existante, qui fournit une généralisation des outils du workflow de scan. De plus, il est nécessaire de fournir une implémentation des méthodes suivantes :

  1. def configure(self, config_filename: Optional[str], secret: Optional[SecretStr])
  2. def run(self, directory: str) Alors que la première vise à fournir les paramètres spécifiques à l'outil nécessaires pour le configurer (tels que mots de passe, identifiants clients et jetons), l'autre spécifie comment l'outil lui-même est invoqué via l'API ou la CLI et son résultat brut est retourné.

Étape 2 – Ajout de l'instance de la classe d'outil de vérification dans le constructeur de ScanRunner Une fois la nouvelle classe dérivée de Check ajoutée au code source d'IaC Scan Runner, il est également nécessaire de modifier le code source de sa classe principale, appelée ScanRunner. En ce qui concerne les modifications de cette classe, il est d'abord nécessaire d'importer la classe spécifique à l'outil, de créer une nouvelle instance de classe d'outil de vérification et de l'ajouter au dictionnaire des vérifications IaC dans def init_checks(self). A. Importation de la classe d'outil de vérification from iac_scan_runner.checks.tfsec import TfsecCheck B. Création de la nouvelle instance de l'objet outil de vérification dans init_checks """Initiate predefined check objects""" new_tool = NewToolCheck() C. Ajout de celui-ci au dictionnaire self.iac_checks dans init_checks

root@kitploit:~
    self.iac_checks = {
        new_tool.name: new_tool,
        …
    }

Étape 3 – Ajout de l'outil de vérification à la matrice de compatibilité dans la classe Compatibility D'autre part, dans le fichier src/iac_scan_runner/compatibility.py, le dictionnaire représentant la matrice de compatibilité doit également être étendu. Deux cas sont possibles : a) un nouveau type de fichier doit être ajouté comme clé, avec la liste des outils pertinents comme valeur ; b) un nouvel outil doit être ajouté à la liste de compatibilité pour le type de fichier existant.

root@kitploit:~
    compatibility_matrix = {
        "new_type": ["new_tool_1", "new_tool_2"],
        …
        "old_typeK": ["tool_1", …  "tool_N", "new_tool_3"]
    }

Étape 4 – Prise en charge du résumé des résultats Enfin, la dernière étape de la séquence des modifications requises pour l'extension du workflow de scan consiste à modifier la classe ResultsSummary (src/iac_scan_runner/results_summary.py). Plus précisément, il est nécessaire d'ajouter une partie de code à sa méthode summarize_outcome qui recherchera des chaînes spécifiques, propres à l'outil, pouvant être utilisées pour identifier si la vérification a réussi ou échoué. Dans la boucle qui parcourt les vérifications compatibles, pour chaque nouvel outil, la structure if-else suivante doit être incluse :

root@kitploit:~
        if check == "new_tool":
            if outcome.find("Check pass string") > -1:
                self.outcomes[check]["status"] = "Passed"
                return "Passed"
            else:
                self.outcomes[check]["status"] = "Problems"
                return "Problems"

Licence

Ce travail est sous licence Apache License 2.0.

Contact

Vous pouvez contacter l'équipe xOpera en envoyant un e-mail à [email protected].

Remerciements

Ce projet a reçu un financement du programme de recherche et d'innovation Horizon 2020 de l'Union européenne dans le cadre de la convention de subvention n° 101000162 (PIACERE).

Télécharger l’outil