Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
raven — Scansiona i workflow CI/CD di GitHub Actions per vulnerabilità di sicurezza, indicizza i risultati in un database grafico Neo4j e fornisce una libreria di query per rilevare misconfigurazioni, injection e rischi legati alla supply chain. | Kitploit
Strumenti/GitHubGitHub/cycodelabs/raven
Scanner di VulnerabilitàAnalisi del CodiceDevSecOpsSicurezza della Supply ChainConfigurazione ErrataApprendimento e Formazione
GitHubcycodelabs/raven

raven

Scansiona i workflow CI/CD di GitHub Actions per vulnerabilità di sicurezza, indicizza i risultati in un database grafico Neo4j e fornisce una libreria di query per rilevare misconfigurazioni, injection e rischi legati alla supply chain.

Vedi Repository
746451 anno faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Banner Cygives Raven

Licenza Rilascio GitHub (ultima data) Black Hat Arsenal 2023

Raven - Analizzatore di Sicurezza CI/CD

RAVEN (Risk Analysis and Vulnerability Enumeration for CI/CD) è un potente strumento di sicurezza progettato per eseguire scansioni massive dei workflow CI di GitHub Actions e digerire i dati scoperti in un database Neo4j. Sviluppato e mantenuto dal team di ricerca Cycode.

Con Raven, siamo stati in grado di identificare e segnalare vulnerabilità di sicurezza in alcuni dei repository più popolari ospitati su GitHub, tra cui:

  • FreeCodeCamp (il progetto più popolare su GitHub)
  • Storybook (Uno dei framework frontend più popolari)
  • Fluent UI di Microsoft
  • e molti altri

Abbiamo elencato tutte le vulnerabilità scoperte con Raven nella Hall of Fame dello strumento.

Cos'è Raven

Lo strumento fornisce le seguenti capacità per scansionare e analizzare potenziali vulnerabilità CI/CD:

  • ⏬ Scaricatore: Puoi scaricare workflow e azioni necessari per l'analisi. I workflow possono essere scaricati sia per più account (utente/organizzazione) contemporaneamente che per repository pubblici GitHub, ordinati per numero di stelle. Eseguire questo passaggio è un prerequisito per analizzare i workflow.
  • 📊 Indicizzatore: Digestione dei dati scaricati in un database grafico Neo4j. Questo processo implica la creazione di relazioni tra workflow, azioni, job, step, ecc.
  • 📚 Libreria di Query: Abbiamo creato una libreria di query predefinite basate sulla ricerca condotta dalla community.
  • ❗ Report: Raven ha un modo semplice per segnalare risultati sospetti. Ad esempio, può essere incorporato nel processo CI per le pull request ed eseguito lì.

Possibili utilizzi di Raven:

  • Scanner per la sicurezza della propria organizzazione
  • Scansione di organizzazioni specifiche per scopi di bug bounty
  • Scansionare tutto e segnalare i problemi trovati per salvare Internet
  • Scopi di ricerca e apprendimento

Questo strumento fornisce una soluzione affidabile e scalabile per l'analisi della sicurezza CI/CD, consentendo agli utenti di interrogare configurazioni errate e ottenere preziose informazioni sulla postura di sicurezza del proprio codebase.

Perché Raven

Nell'ultimo anno, Cycode Labs ha condotto una ricerca approfondita sui problemi di sicurezza fondamentali dei sistemi CI/CD. Abbiamo esaminato le profondità di molti sistemi, migliaia di progetti e diverse configurazioni. La conclusione è chiara: il modello in cui la sicurezza è delegata agli sviluppatori ha fallito. Questo è stato dimostrato più volte nei nostri contenuti precedenti:

  • Un semplice scenario di iniezione ha esposto dozzine di repository pubblici, inclusi popolari progetti open-source.
  • Abbiamo scoperto che uno dei framework frontend più popolari era vulnerabile al metodo innovativo di attacco di branch injection.
  • Abbiamo dettagliato un vettore d'attacco completamente diverso, i rischi di integrazione di terze parti, il progetto più popolare su GitHub e migliaia di altri.
  • Infine, il framework UI di Microsoft 365, con oltre 300 milioni di utenti, è vulnerabile a un'ulteriore nuova minaccia: un attacco di avvelenamento degli artefatti.
  • Inoltre, abbiamo trovato, segnalato e divulgato privatamente centinaia di altre vulnerabilità.

Ognuna delle vulnerabilità sopra ha caratteristiche uniche, rendendo quasi impossibile per gli sviluppatori rimanere aggiornati con le ultime tendenze di sicurezza. Sfortunatamente, ogni vulnerabilità condivide una caratteristica comune: ogni sfruttamento può avere un impatto su milioni di vittime.

È per questi motivi che è stato creato Raven, un framework per l'analisi della sicurezza dei workflow CI/CD (e GitHub Actions come primo caso d'uso). Nel nostro focus, abbiamo esaminato scenari complessi in cui ogni problema non è una minaccia di per sé, ma quando combinati, rappresentano una grave minaccia.

Configurazione ed esecuzione

Per iniziare con Raven, segui queste istruzioni di installazione:

Passaggio 1: Installa il pacchetto Raven```bash pip3 install raven-cycode

root@kitploit:~
**Step 2**: Configura un server Redis locale e un database 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

Un altro modo per configurare l'ambiente è eseguire il nostro file docker compose fornito:```bash git clone https://github.com/CycodeLabs/raven.git cd raven make setup

root@kitploit:~
**Passo 3**: Esegui Raven Downloader

Modalità Account:```bash
raven download account --token $GITHUB_TOKEN --account-name RavenDemo

Modalità di scansione:```bash raven download crawl --token $GITHUB_TOKEN --min-stars 1000

root@kitploit:~
**Passaggio 4**: Esegui Raven Indexer```bash
raven index

Passo 5: Ispeziona i risultati tramite il reporter```bash raven report --format raw

root@kitploit:~
A questo punto, è possibile ispezionare i dati nel database Neo4j collegandosi a http://localhost:7474/browser/.

### Prerequisiti

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

## Infrastruttura

Raven utilizza due contenitori docker principali: Redis e Neo4j.
Il comando `make setup` eseguirà un comando `docker compose` per preparare tale ambiente.

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

## Utilizzo

Lo strumento contiene tre funzionalità principali: `download`, `index` e `report`.

### Download

#### Scaricare i Repository di un Account```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

Scarica repository pubblici```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:~
### Indice```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

Rapporto```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:~
## Esempi

Recupera tutti i flussi di lavoro e le azioni associati a qualsiasi account (utente/organizzazione).```bash
raven download account --token $GITHUB_TOKEN --account-name microsoft --account-name google --debug

Esegui lo scraping di tutti i repository GitHub pubblicamente accessibili.```bash raven download crawl --token $GITHUB_TOKEN --min-stars 100 --max-stars 1000 --debug

root@kitploit:~
Dopo aver completato il processo di download o se interrotto utilizzando Ctrl+C, procedi a indicizzare tutti i workflow e le azioni nel database Neo4j.```bash
raven index --debug

Ora possiamo generare un report utilizzando la nostra libreria di query.```bash raven report --severity high --tag injection --tag unauthenticated

root@kitploit:~
## Limitazione di Velocità

Per una limitazione della velocità efficace, dovresti fornire un token Github.
Per gli utenti autenticati, si applicano le seguenti limitazioni di velocità:

- Ricerca codice - 30 query al minuto
- Qualsiasi altra API - 5000 all'ora

## Base di Conoscenza della Ricerca

- [Issue Injections](https://github.com/CycodeLabs/raven/blob/main/docs/Issue%20Injections/README.md)
- [Pull Request Injections](https://github.com/CycodeLabs/raven/blob/main/docs/Pull%20Request%20Injections/README.md)
- [Workflow Run Injections](https://github.com/CycodeLabs/raven/blob/main/docs/Multi%20Prerequisite%20Exploits/README.md)
- [CodeSee Injections](https://github.com/CycodeLabs/raven/blob/main/docs/Codesee%20Injections/README.md)

## Limitazioni Attuali

- È possibile eseguire un'azione esterna facendo riferimento a una cartella con un `Dockerfile` (senza `action.yml`). Attualmente, questo comportamento non è supportato.
- È possibile eseguire un'azione esterna facendo riferimento a un container docker tramite l'URL `docker://...`. Attualmente, questo comportamento non è supportato.
- È possibile eseguire un'azione facendo riferimento locale. Questo crea un comportamento complesso, poiché potrebbe provenire da un repository diverso che è stato precedentemente scaricato. Il comportamento attuale cerca di trovarlo nel repository esistente.
- Non stiamo modellando l'intera struttura del workflow. Se sono necessari campi aggiuntivi, invia una pull request secondo le linee guida per i [contributi](https://github.com/CycodeLabs/raven/blob/main/CONTRIBUTING.md).

## Lavoro di Ricerca Futuro

- Implementazione dell'analisi di taint. Esempio di caso d'uso - un utente può passare un titolo di pull request (che è un parametro controllabile) a un parametro dell'azione chiamato `data`. Quel parametro dell'azione può essere utilizzato in un comando run: `- run: echo ${{ inputs.data }}`, il che crea un percorso per un'esecuzione di codice.
- Espandere la ricerca per scoperte di uso improprio dannoso di `GITHUB_ENV`. Questo può utilizzare anche la precedente analisi di taint.
- Ricercare se `actions/github-script` ha un panorama di minacce interessante. Se sì, può essere modellato nel grafo.

## Licenza

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

## Hall of Fame - Vulnerabilità Trovate e Divulgate Usando Raven

| Nome    | Stelle   | Correzione   | Fonti Aggiuntive   |
| ------ | -------- | ---- | -------------------- | 
| [freeCodeCamp/freeCodeCamp](https://github.com/freeCodeCamp/freeCodeCamp)                       | ![](https://img.shields.io/github/stars/freeCodeCamp/freeCodeCamp)            | CodeSee package update, [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)                     | CodeSee package update                                                                                                          | [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)              | CodeSee package update                                                                                                          | [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)                      | Disabled workflow                                                                                                               | [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/)                                                   |

## Vuoi saperne di più su Sicurezza CI/CD, AppSec e ASPM? Scopri Cycode

Se ti è piaciuto Raven, probabilmente adorerai la nostra piattaforma [Cycode](https://cycode.com/?utm_source=github_website&utm_medium=referral&utm_campaign=raven_page) che offre capacità ancora più avanzate per visibilità, prioritizzazione e correzione delle vulnerabilità lungo tutta la distribuzione del software.

Se sei interessato a una soluzione robusta e basata sulla ricerca per Pipeline Security, Application Security o ASPM, non esitare a contattarci o richiedere una demo usando il modulo [https://cycode.com/book-a-demo/](https://cycode.com/book-a-demo/?utm_source=github_website&utm_medium=referral&utm_campaign=raven_page).
Scarica lo strumento