Aller au contenu

Introduction

Bienvenue dans la documentation de VulnAPI !

Démo


VulnAPI est un outil DAST Open Source qui analyse les API à la recherche de vulnérabilités et de risques de sécurité. Il fournit des rapports sur toutes les vulnérabilités détectées au cours de l’analyse, incluant le niveau de risque, la vulnérabilité, la description et l’opération effectuée lorsque la vulnérabilité a été détectée.

VulnAPI propose trois méthodes pour analyser les API :

  • Via l’interface CLI de type Curl : invoquez directement l’interface de ligne de commande avec des paramètres similaires aux commandes curl.
  • Via les contrats OpenAPI : utilisez une spécification OpenAPI pour énumérer tous les points de terminaison à analyser.
  • Via GraphQL : pointez VulnAPI vers un point de terminaison GraphQL pour y rechercher des vulnérabilités.

Avant d’effectuer votre première analyse avec VulnAPI, vous devez le télécharger et l’installer. Veuillez suivre les instructions sur la page Installation.

Avant de procéder à l’analyse, vous pouvez découvrir des informations utiles sur l’API cible à l’aide de la commande discover.

Pour découvrir des informations utiles sur l’API cible, exécutez la commande suivante :

Terminal window
vulnapi discover api [API_URL]

Exemple de sortie :

Terminal window
| WELL-KNOWN PATHS | URL |
|------------------|------------------------------------|
| OpenAPI | http://localhost:5000/openapi.json |
| GraphQL | N/A |
| TECHNOLOGIE/SERVICE | VALUE |
|---------------------|---------------|
| Framework | Flask:2.2.3 |
| Language | Python:3.7.17 |
| Server | Flask:2.2.3 |

Pour effectuer une analyse à l’aide de la CLI de type Curl, exécutez la commande suivante :

Terminal window
vulnapi scan curl [API_URL] [CURL_OPTIONS]

Remplacez [API_URL] par l’URL de l’API à analyser, et [CURL_OPTIONS] par toute option curl supplémentaire que vous souhaitez inclure.

Pour effectuer une analyse à l’aide de contrats OpenAPI, exécutez la commande suivante :

Terminal window
echo "[JWT_TOKEN]" | vulnapi scan openapi [PATH_OR_URL_TO_OPENAPI_FILE]

Remplacez [PATH_OR_URL_TO_OPENAPI_FILE] par le chemin ou l’URL du fichier JSON du contrat OpenAPI et [JWT_TOKEN] par le jeton JWT à utiliser pour l’authentification.

Pour effectuer une analyse sur un point de terminaison GraphQL, exécutez la commande suivante :

Terminal window
vulnapi scan graphql [GRAPHQL_ENDPOINT] -H "Authorization: Bearer [JWT_TOKEN]"

La CLI fournit des rapports détaillés sur toutes les vulnérabilités détectées lors de l’analyse. En voici un exemple condensé :

OPERATIONRISK LEVELCVSS 4.0 SCOREOWASPVULNERABILITY
GET /Medium5.1API8:2023 SecurityX-Frame-Options Header is
Misconfigurationmissing
High9.3API2:2023 BrokenJWT Token is not verified
Authentication
Info0.0API8:2023 SecurityHSTS Header is missing
Misconfiguration

Consultez la référence des Formats de sortie pour obtenir tous les détails sur les colonnes du tableau, les formats JSON/YAML et l’intégration CI/CD.

Toutes les vulnérabilités détectées par le projet sont répertoriées à cette URL : Vulnérabilités d’API détectées.

Davantage de vulnérabilités et de bonnes pratiques seront ajoutées dans les prochaines versions. Si vous avez des suggestions ou des demandes concernant de nouvelles vulnérabilités ou de bonnes pratiques à inclure, n’hésitez pas à ouvrir un ticket (issue) ou à soumettre une pull request.

Le scanner prend en charge les configurations de proxy pour analyser les API situées derrière un serveur proxy. Pour utiliser un proxy, définissez les variables d’environnement HTTP_PROXY ou HTTPS_PROXY avec l’URL du proxy.

Un argument de commande --proxy est également disponible pour spécifier l’URL du proxy.

Consultez la Référence de la CLI pour obtenir la documentation complète des commandes.

Le scanner collecte des données d’utilisation anonymes afin de contribuer à l’amélioration de l’outil. Ces données comprennent le nombre d’analyses effectuées, le nombre de vulnérabilités détectées et la sévérité de ces dernières. Aucune information sensible n’est collectée. Vous pouvez désactiver la télémétrie en transmettant le drapeau (flag) --sqa-opt-out.

Clause de non-responsabilité (Disclaimer)

Section titled “Clause de non-responsabilité (Disclaimer)”

Ce scanner est fourni uniquement à des fins éducatives et d’information. Il ne doit pas être utilisé à des fins malveillantes ou pour attaquer un système sans autorisation préalable. Respectez toujours la sécurité et la vie privée d’autrui.