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
raven — Analyse les workflows CI/CD GitHub Actions pour détecter les vulnérabilités de sécurité, indexe les résultats dans une base de données graphique Neo4j et fournit une bibliothèque de requêtes pour repérer les erreurs de configuration, les injections et les risques liés à la chaîne d'approvisionnement. | Kitploit
Outils/GitHubGitHub/cycodelabs/raven
Scanners de VulnérabilitésAnalyse de CodeDevSecOpsSécurité de la Chaîne LogistiqueMauvaise ConfigurationApprentissage et Éducation
GitHubcycodelabs/raven

raven

Voir le dépôt
74645il y a 1 anVérifié par Kitploit

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 →

À propos

Analyse les workflows CI/CD GitHub Actions pour détecter les vulnérabilités de sécurité, indexe les résultats dans une base de données graphique Neo4j et fournit une bibliothèque de requêtes pour repérer les erreurs de configuration, les injections et les risques liés à la chaîne d'approvisionnement.

Partager
Bannière Cygives Raven

License GitHub release (latest by date) Black Hat Arsenal 2023

Raven - Analyseur de sécurité CI/CD

RAVEN (Risk Analysis and Vulnerability Enumeration for CI/CD) est un puissant outil de sécurité conçu pour effectuer des analyses massives des workflows CI/CD GitHub Actions et traiter les données découvertes dans une base de données Neo4j. Développé et maintenu par l'équipe de recherche de Cycode.

Avec Raven, nous avons pu identifier et signaler des vulnérabilités de sécurité dans certains des dépôts les plus populaires hébergés sur GitHub, notamment :

  • FreeCodeCamp (le projet le plus populaire sur GitHub)
  • Storybook (l'un des frameworks frontend les plus populaires)
  • Fluent UI de Microsoft
  • et bien d'autres

Nous avons listé toutes les vulnérabilités découvertes avec Raven dans le Hall of Fame de l'outil.

Qu'est-ce que Raven

L'outil offre les fonctionnalités suivantes pour analyser et détecter les vulnérabilités CI/CD potentielles :

  • ⏬ Téléchargeur : Vous pouvez télécharger les workflows et actions nécessaires à l'analyse. Les workflows peuvent être téléchargés soit pour plusieurs comptes (utilisateur/organisation) simultanément, soit pour des dépôts GitHub publics, triés par nombre d'étoiles. Cette étape est un prérequis pour l'analyse des workflows.
  • 📊 Indexeur : Traitement des données téléchargées dans une base de données Neo4j basée sur des graphes. Ce processus établit des relations entre les workflows, actions, jobs, étapes, etc.
  • 📚 Bibliothèque de requêtes : Nous avons créé une bibliothèque de requêtes prédéfinies basées sur les recherches menées par la communauté.
  • ❗ Rapporteur : Raven dispose d'un moyen simple de signaler les résultats suspects. Par exemple, il peut être intégré au processus CI pour les pull requests et y être exécuté.

Utilisations possibles de Raven :

  • Scanner de sécurité pour votre propre organisation
  • Analyse d'organisations spécifiques dans le cadre de programmes de bug bounty
  • Analyse de tout et signalement des problèmes trouvés pour sauver Internet
  • Recherche et apprentissage

Cet outil fournit une solution fiable et scalable pour l'analyse de sécurité CI/CD, permettant aux utilisateurs d'interroger les mauvaises configurations et d'obtenir des informations précieuses sur la posture de sécurité de leur codebase.

Pourquoi Raven

Au cours de l'année écoulée, Cycode Labs a mené des recherches approfondies sur les problèmes de sécurité fondamentaux des systèmes CI/CD. Nous avons examiné les profondeurs de nombreux systèmes, des milliers de projets et plusieurs configurations. La conclusion est claire : le modèle dans lequel la sécurité est déléguée aux développeurs a échoué. Cela a été prouvé à plusieurs reprises dans notre contenu précédent :

  • Un scénario d'injection simple a exposé des dizaines de dépôts publics, y compris des projets open source populaires.
  • Nous avons découvert que l'un des frameworks frontend les plus populaires était vulnérable à la méthode innovante d'attaque par injection de branche.
  • Nous avons détaillé un vecteur d'attaque complètement différent, les risques d'intégration tierce, le projet le plus populaire sur GitHub, et des milliers d'autres.
  • Enfin, le framework UI de Microsoft 365, avec plus de 300 millions d'utilisateurs, est vulnérable à une nouvelle menace supplémentaire : une attaque par empoisonnement d'artefact.
  • De plus, nous avons trouvé, signalé et divulgué des centaines d'autres vulnérabilités en privé.

Chacune des vulnérabilités ci-dessus a des caractéristiques uniques, rendant presque impossible pour les développeurs de se tenir au courant des dernières tendances en matière de sécurité. Malheureusement, chaque vulnérabilité partage un point commun : chaque exploitation peut avoir un impact sur des millions de victimes.

C'est pour ces raisons que Raven a été créé, un framework pour l'analyse des workflows de sécurité CI/CD (et GitHub Actions comme premier cas d'utilisation). Dans notre focus, nous avons examiné des scénarios complexes où chaque problème n'est pas une menace en soi, mais lorsqu'ils sont combinés, ils constituent une menace grave.

Configuration et exécution

Pour commencer avec Raven, suivez ces instructions d'installation :

Étape 1 : Installez le package Raven```bash pip3 install raven-cycode

root@kitploit:~
**Étape 2**: Configurer un serveur Redis local et une base de données Neo4j```bash
docker run -d --name raven-neo4j -p7474:7474 -p7687:7687 --env NEO4J_AUTH=neo4j/123456789 --volume raven-neo4j:/data neo4j:5.12
docker run -d --name raven-redis -p6379:6379 --volume raven-redis:/data redis:7.2.1

Une autre façon de configurer l'environnement est d'exécuter notre fichier docker compose fourni :```bash git clone https://github.com/CycodeLabs/raven.git cd raven make setup

root@kitploit:~
**Étape 3**: Exécutez Raven Downloader

Mode compte :```bash
raven download account --token $GITHUB_TOKEN --account-name RavenDemo

Mode crawl:```bash raven download crawl --token $GITHUB_TOKEN --min-stars 1000

root@kitploit:~
**Étape 4**: Exécutez Raven Indexer```bash
raven index

Étape 5: Inspectez les résultats via le reporter```bash raven report --format raw

root@kitploit:~
À ce stade, il est possible d'inspecter les données dans la base de données Neo4j, en se connectant à http://localhost:7474/browser/.

### Prérequis

- Python 3.9+
- Docker Compose v2.1.0+
- Docker Engine v1.13.0+

## Infrastructure

Raven utilise deux conteneurs docker principaux : Redis et Neo4j.
`make setup` exécutera une commande `docker compose` pour préparer cet environnement.

![Infrastructure](https://assets.kitploit.com/production/public/readmes/6219/6e7554b76c0ec4f4ee7e5d54705be7bd6b29f8de03a0e251f75169621882a665.png)

## Utilisation

L'outil contient trois fonctionnalités principales : `download`, `index` et `report`.

### Téléchargement

#### Télécharger les dépôts du compte```bash
usage: raven download account [-h] --token TOKEN [--debug] [--redis-host REDIS_HOST] [--redis-port REDIS_PORT] [--clean-redis] (--account-name ACCOUNT_NAME | --personal)

options:
  -h, --help            show this help message and exit
  --token TOKEN         GITHUB_TOKEN to download data from Github API (Needed for effective rate-limiting)
  --debug               Whether to print debug statements, default: False
  --redis-host REDIS_HOST
                        Redis host, default: localhost
  --redis-port REDIS_PORT
                        Redis port, default: 6379
  --clean-redis, -cr    Whether to clean cache in the redis, default: False
  --account-name ACCOUNT_NAME
                        Account name for downloading the workflows, can be used multiple times
  --personal            Download repositories owned by the authenticated user

Télécharger les dépôts publics```bash

usage: raven download crawl [-h] --token TOKEN [--debug] [--redis-host REDIS_HOST] [--redis-port REDIS_PORT] [--clean-redis] [--max-stars MAX_STARS] [--min-stars MIN_STARS]

options: -h, --help show this help message and exit --token TOKEN GITHUB_TOKEN to download data from Github API (Needed for effective rate-limiting) --debug Whether to print debug statements, default: False --redis-host REDIS_HOST Redis host, default: localhost --redis-port REDIS_PORT Redis port, default: 6379 --clean-redis, -cr Whether to clean cache in the redis, default: False --max-stars MAX_STARS Maximum number of stars for a repository --min-stars MIN_STARS Minimum number of stars for a repository, default: 1000

root@kitploit:~
### Index```bash
usage: raven index [-h] [--redis-host REDIS_HOST] [--redis-port REDIS_PORT] [--clean-redis] [--neo4j-uri NEO4J_URI] [--neo4j-user NEO4J_USER] [--neo4j-pass NEO4J_PASS]
                   [--clean-neo4j] [--debug]

options:
  -h, --help            show this help message and exit
  --redis-host REDIS_HOST
                        Redis host, default: localhost
  --redis-port REDIS_PORT
                        Redis port, default: 6379
  --clean-redis, -cr    Whether to clean cache in the redis, default: False
  --neo4j-uri NEO4J_URI
                        Neo4j URI endpoint, default: neo4j://localhost:7687
  --neo4j-user NEO4J_USER
                        Neo4j username, default: neo4j
  --neo4j-pass NEO4J_PASS
                        Neo4j password, default: 123456789
  --clean-neo4j, -cn    Whether to clean cache, and index from scratch, default: False
  --debug               Whether to print debug statements, default: False

Rapport```bash

usage: raven report [-h] [--redis-host REDIS_HOST] [--redis-port REDIS_PORT] [--clean-redis] [--neo4j-uri NEO4J_URI] [--neo4j-user NEO4J_USER] [--neo4j-pass NEO4J_PASS] [--clean-neo4j] [--tag {injection,unauthenticated,fixed,priv-esc,supply-chain,best-practice,endoflife,reconnaissance}] [--severity {info,low,medium,high,critical}] [--query_ids RQ-1,..,RQ-16] [--queries-path QUERIES_PATH] [--format {raw,json}] {slack} ...

positional arguments: {slack} slack Send report to slack channel

options: -h, --help show this help message and exit --redis-host REDIS_HOST Redis host, default: localhost --redis-port REDIS_PORT Redis port, default: 6379 --clean-redis, -cr Whether to clean cache in the redis, default: False --neo4j-uri NEO4J_URI Neo4j URI endpoint, default: neo4j://localhost:7687 --neo4j-user NEO4J_USER Neo4j username, default: neo4j --neo4j-pass NEO4J_PASS Neo4j password, default: 123456789 --clean-neo4j, -cn Whether to clean cache, and index from scratch, default: False --tag {injection,unauthenticated,fixed,priv-esc,supply-chain,best-practice,endoflife,reconnaissance}, -t {injection,unauthenticated,fixed,priv-esc,supply-chain,best-practice,endoflife,reconnaissance} Filter queries with specific tag --severity {info,low,medium,high,critical}, -s {info,low,medium,high,critical} Filter queries by severity level (default: info) --query_ids RQ-1,..,RQ-16, -id RQ-1,..,RQ-16 Filter queries by query ids (example: RQ-2,RQ-8) --queries-path QUERIES_PATH, -dp QUERIES_PATH Queries folder (default: library) --format {raw,json}, -f {raw,json} Report format (default: raw)

root@kitploit:~
## Exemples

Récupérez tous les workflows et actions associés à n'importe quel compte (utilisateur/organisation).```bash
raven download account --token $GITHUB_TOKEN --account-name microsoft --account-name google --debug

Récupérer tous les dépôts GitHub accessibles publiquement.```bash raven download crawl --token $GITHUB_TOKEN --min-stars 100 --max-stars 1000 --debug

root@kitploit:~
Après avoir terminé le processus de téléchargement ou après une interruption avec Ctrl+C, procédez à l'indexation de tous les workflows et actions dans la base de données Neo4j.```bash
raven index --debug

Maintenant, nous pouvons générer un rapport en utilisant notre bibliothèque de requêtes.```bash raven report --severity high --tag injection --tag unauthenticated

root@kitploit:~
## Limitation de débit

Pour une limitation de débit efficace, vous devez fournir un token GitHub.
Pour les utilisateurs authentifiés, la limitation suivante s'applique :

- Recherche de code - 30 requêtes par minute
- Toute autre API - 5000 par heure

## Base de connaissances de recherche

- [Injections d'issues](https://github.com/CycodeLabs/raven/blob/main/docs/Issue%20Injections/README.md)
- [Injections de Pull Requests](https://github.com/CycodeLabs/raven/blob/main/docs/Pull%20Request%20Injections/README.md)
- [Injections d'exécutions de workflow](https://github.com/CycodeLabs/raven/blob/main/docs/Multi%20Prerequisite%20Exploits/README.md)
- [Injections CodeSee](https://github.com/CycodeLabs/raven/blob/main/docs/Codesee%20Injections/README.md)

## Limitations actuelles

- Il est possible d'exécuter une action externe en référençant un dossier contenant un `Dockerfile` (sans `action.yml`). Actuellement, ce comportement n'est pas pris en charge.
- Il est possible d'exécuter une action externe en référençant un conteneur docker via l'URL `docker://...`. Actuellement, ce comportement n'est pas pris en charge.
- Il est possible d'exécuter une action en la référençant localement. Cela crée un comportement complexe, car elle peut provenir d'un autre dépôt qui a été extrait précédemment. Le comportement actuel essaie de la trouver dans le dépôt existant.
- Nous ne modélisons pas toute la structure du workflow. Si des champs supplémentaires sont nécessaires, veuillez soumettre une pull request conformément aux directives de [contribution](https://github.com/CycodeLabs/raven/blob/main/CONTRIBUTING.md).

## Travaux de recherche futurs

- Implémentation de l'analyse de contamination (taint analysis). Exemple d'utilisation : un utilisateur peut passer le titre d'une pull request (qui est un paramètre contrôlable) à un paramètre d'action nommé `data`. Ce paramètre d'action peut être utilisé dans une commande d'exécution : `- run: echo ${{ inputs.data }}`, ce qui crée une voie pour une exécution de code.
- Étendre la recherche pour les découvertes d'utilisation abusive de `GITHUB_ENV`. Cela pourrait également utiliser l'analyse de contamination précédente.
- Rechercher si `actions/github-script` présente un paysage de menaces intéressant. Si c'est le cas, il peut être modélisé dans le graphe.

## Licence

[Licence Apache 2.0](https://github.com/CycodeLabs/raven/blob/main/LICENSE.md)

## Hall of Fame - Vulnérabilités découvertes et divulguées grâce à Raven

| Nom    | Étoiles   | Correction  | Sources supplémentaires   |
| ------ | -------- | ---- | -------------------- | 
| [freeCodeCamp/freeCodeCamp](https://github.com/freeCodeCamp/freeCodeCamp)                       | ![](https://img.shields.io/github/stars/freeCodeCamp/freeCodeCamp)            | Mise à jour du package CodeSee, [0871341](https://github.com/freeCodeCamp/freeCodeCamp/commit/0871341c9cbf96ab455bc3e0bce636e2ef2a2be2) | [Blog](https://cycode.com/blog/cycode-secures-thousands-of-open-source-projects/)                            |
| [Significant-Gravitas/AutoGPT](https://github.com/Significant-Gravitas/AutoGPT)                 | ![](https://img.shields.io/github/stars/Significant-Gravitas/AutoGPT)         | [cdae7f8](https://github.com/Significant-Gravitas/AutoGPT/pull/6313/commits/cdae7f84ce0b2879fdcc1fa04956cdaa42a07bfb)           |                                                                                                              |
| [storybookjs/storybook](https://github.com/storybookjs/storybook) | ![](https://img.shields.io/github/stars/storybookjs/storybook) | [ffb8558](https://github.com/storybookjs/storybook/commit/ffb8558b7e5df4644299e5ec7009ade6ca1a721c) | [Blog](https://cycode.com/ci-story-how-we-found-critical-vulnerabilities-in-storybook-project/) |
| [tiangolo/fastapi](https://github.com/tiangolo/fastapi)                                         | ![](https://img.shields.io/github/stars/tiangolo/fastapi)                     | [9efab1b](https://github.com/tiangolo/fastapi/commit/9efab1bd96ef061edf1753626573a0a2be1eef09)                                  | [LinkedIn](https://www.linkedin.com/feed/update/urn:li:activity:7011753940283203584/)                        |
| [withastro/astro](https://github.com/withastro/astro)                                           | ![](https://img.shields.io/github/stars/withastro/astro)                      | [650fb1a](https://github.com/withastro/astro/commit/650fb1aa51a1c843c10bc89a11732b45a6345b00)                                   | [Blog](https://cycode.com/github-actions-vulnerabilities/)                                                   |
| [statelyai/xstate](https://github.com/statelyai/xstate)                                         | ![](https://img.shields.io/github/stars/statelyai/xstate)                     | Mise à jour du package CodeSee                                                                                                          | [Blog](https://cycode.com/blog/cycode-secures-thousands-of-open-source-projects/)                            |
| [bazelbuild/bazel](https://github.com/bazelbuild/bazel)                                         | ![](https://img.shields.io/github/stars/bazelbuild/bazel)                     | [3561f07](https://github.com/bazelbuild/continuous-integration/commit/3561f079e0414d31ebba923815695e1e714937cb)                 | [Blog](https://cycode.com/blog/cycode-discovers-a-supply-chain-vulnerability-in-bazel/)                      |
| [docker-slim/docker-slim](https://github.com/docker-slim/docker-slim)                           | ![](https://img.shields.io/github/stars/docker-slim/docker-slim)              | Mise à jour du package CodeSee                                                                                                          | [Blog](https://cycode.com/blog/cycode-secures-thousands-of-open-source-projects/)                            |
| [microsoft/fluentui](https://github.com/microsoft/fluentui)                                     | ![](https://img.shields.io/github/stars/microsoft/fluentui)                   | [2ea6195](https://github.com/microsoft/fluentui/commit/2ea6195152131766641311ee5604e746b578d8e7)                                | [Blog](https://cycode.com/blog/analyzing-the-vulnerability-that-could-have-compromised-microsoft-365-users/) |
| [tiangolo/sqlmodel](https://github.com/tiangolo/sqlmodel)                                       | ![](https://img.shields.io/github/stars/tiangolo/sqlmodel)                    | [cf36b2d](https://github.com/tiangolo/sqlmodel/commit/cf36b2d9baccf527bc61071850f102e2cd8bf6bf)                                 | [LinkedIn](https://www.linkedin.com/feed/update/urn:li:activity:7011753940283203584/)                        |
| [tiangolo/typer](https://github.com/tiangolo/typer)                                             | ![](https://img.shields.io/github/stars/tiangolo/typer)                       | [0c106a1](https://github.com/tiangolo/typer/commit/0c106a169e5e3c7df6f98e32a6d8405c985b695a)                                    | [LinkedIn](https://www.linkedin.com/feed/update/urn:li:activity:7011753940283203584/)                        |
| [juspay/hyperswitch](https://github.com/juspay/hyperswitch)                                     | ![](https://img.shields.io/github/stars/juspay/hyperswitch)                   | [a052f9a](https://github.com/juspay/hyperswitch/pull/2797/commits/a052f9a9c921ec0ff8c526097841be5777faf835)                     |                                                                                                              |
| [autogluon/autogluon](https://github.com/autogluon/autogluon)                                   | ![](https://img.shields.io/github/stars/autogluon/autogluon)                  | [ca18fa9](https://github.com/autogluon/autogluon/commit/ca18fa9fa2071f670125fd19700cf3570a6b5119)                               |                                                                                                              |
| [apache/camel](https://github.com/apache/camel)                                                 | ![](https://img.shields.io/github/stars/apache/camel)                         | [02e512a](https://github.com/apache/camel/pull/11879/commits/02e512ae1ab0a471e80d86096ea79b45789aa105)                          |                                                                                                              |
| [liquibase/liquibase](https://github.com/liquibase/liquibase)     | ![](https://img.shields.io/github/stars/liquibase/liquibase)   | [3278525](https://github.com/liquibase/liquibase/commit/3278525eaf974daea20808926f9a6816aecd01a7)   | [Blog](https://cycode.com/github-actions-vulnerabilities/)                                      |
| [ossf/scorecard](https://github.com/ossf/scorecard)                                             | ![](https://img.shields.io/github/stars/ossf/scorecard)                       | [c9f582b](https://github.com/ossf/scorecard/commit/c9f582b620a57a1a476f4e3add505ff50c51a774)                                    |                                                                                                              |
| [Ombi-app/Ombi](https://github.com/Ombi-app/Ombi)                                               | ![](https://img.shields.io/github/stars/Ombi-app/Ombi)                        | [5cc0d77](https://github.com/Ombi-app/Ombi/commit/5cc0d7727d72fe1fee8a3f6c3874d44a5b785de4)                                     | [Blog](https://cycode.com/github-actions-vulnerabilities/)                                                   |
| [wireapp/wire-ios](https://github.com/wireapp/wire-ios)                                         | ![](https://img.shields.io/github/stars/wireapp/wire-ios)                     | [9d39d6c](https://github.com/wireapp/wire-ios/commit/9d39d6c93b5a58a0bc8c1aba10e0d67756359630)                                  | [Blog](https://cycode.com/github-actions-vulnerabilities/)                                                   |
| [cloudscape-design/components](https://github.com/cloudscape-design/components)                 | ![](https://img.shields.io/github/stars/cloudscape-design/components)         | [2921d2d](https://github.com/cloudscape-design/.github/commit/2921d2d1420fef5b849d5aecbcfb9138ac6b9dcc)                         |                                                                                                              |
| [DynamoDS/Dynamo](https://github.com/DynamoDS/Dynamo)                                           | ![](https://img.shields.io/github/stars/DynamoDS/Dynamo)                      | Workflow désactivé                                                                                                               | [Blog](https://cycode.com/github-actions-vulnerabilities/)                                                   |
| [fauna/faunadb-js](https://github.com/fauna/faunadb-js)                                         | ![](https://img.shields.io/github/stars/fauna/faunadb-js)                     | [ee6f53f](https://github.com/fauna/faunadb-js/commit/ee6f53f9c985bde41976743530e3846dee058587)                                  | [Blog](https://cycode.com/github-actions-vulnerabilities/)                                                   |
| [apache/incubator-kie-kogito-runtimes](https://github.com/apache/incubator-kie-kogito-runtimes) | ![](https://img.shields.io/github/stars/apache/incubator-kie-kogito-runtimes) | [53c18e5](https://github.com/apache/incubator-kie-kogito-runtimes/commit/53c18e5372e5306e0aa580f201f820b80359ad11)              | [Blog](https://cycode.com/github-actions-vulnerabilities/)                                                   |

## Vous voulez en savoir plus sur la sécurité CI/CD, AppSec et ASPM ? Découvrez Cycode

Si vous avez aimé Raven, vous adorerez probablement notre plateforme [Cycode](https://cycode.com/?utm_source=github_website&utm_medium=referral&utm_campaign=raven_page) qui offre des capacités encore plus avancées en matière de visibilité, de priorisation et de correction des vulnérabilités dans le cycle de livraison logicielle.

Si vous êtes intéressé par une solution robuste et axée sur la recherche en matière de sécurité des pipelines, de sécurité des applications ou d'ASPM, n'hésitez pas à nous contacter ou à demander une démo via le formulaire [https://cycode.com/book-a-demo/](https://cycode.com/book-a-demo/?utm_source=github_website&utm_medium=referral&utm_campaign=raven_page).
Télécharger l’outil