Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
raven — Analiza flujos de trabajo de CI/CD de GitHub Actions en busca de vulnerabilidades de seguridad, indexa los hallazgos en una base de datos de grafos Neo4j y proporciona una biblioteca de consultas para detectar configuraciones erróneas, inyecciones y riesgos en la cadena de suministro. | Kitploit
Herramientas/GitHubGitHub/cycodelabs/raven
Escáneres de VulnerabilidadesAnálisis de CódigoDevSecOpsSeguridad de Cadena de SuministroMala ConfiguraciónAprendizaje y Educación
GitHubcycodelabs/raven

raven

Ver Repositorio
74645hace 1 añoRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →

Acerca de

Analiza flujos de trabajo de CI/CD de GitHub Actions en busca de vulnerabilidades de seguridad, indexa los hallazgos en una base de datos de grafos Neo4j y proporciona una biblioteca de consultas para detectar configuraciones erróneas, inyecciones y riesgos en la cadena de suministro.

Compartir
Cygives Banner Raven

License GitHub release (latest by date)

Black Hat Arsenal 2023

Raven - Analizador de seguridad CI/CD

RAVEN (Risk Analysis and Vulnerability Enumeration for CI/CD) es una poderosa herramienta de seguridad diseñada para realizar escaneos masivos de flujos de trabajo de CI de GitHub Actions y digerir los datos descubiertos en una base de datos Neo4j. Desarrollada y mantenida por el equipo de investigación de Cycode.

Con Raven, pudimos identificar y reportar vulnerabilidades de seguridad en algunos de los repositorios más populares alojados en GitHub, incluyendo:

  • FreeCodeCamp (el proyecto más popular en GitHub)
  • Storybook (uno de los frameworks frontend más populares)
  • Fluent UI de Microsoft
  • y muchos más

Enumeramos todas las vulnerabilidades descubiertas usando Raven en el Salón de la Fama de la herramienta.

Qué es Raven

La herramienta ofrece las siguientes capacidades para escanear y analizar posibles vulnerabilidades de CI/CD:

  • ⏬ Descargador: Puedes descargar los flujos de trabajo y acciones necesarios para el análisis. Los flujos de trabajo se pueden descargar tanto para múltiples cuentas (usuario/organización) simultáneamente como para repositorios públicos de GitHub, ordenados por número de estrellas. Realizar este paso es un requisito previo para analizar los flujos de trabajo.
  • 📊 Indexador: Procesa los datos descargados en una base de datos gráfica Neo4j. Este proceso implica establecer relaciones entre flujos de trabajo, acciones, trabajos, pasos, etc.
  • 📚 Biblioteca de consultas: Creamos una biblioteca de consultas predefinidas basadas en investigaciones realizadas por la comunidad.
  • ❗ Informador: Raven tiene una forma sencilla de reportar hallazgos sospechosos. Como ejemplo, puede integrarse en el proceso de CI para pull requests y ejecutarse allí.

Posibles usos de Raven:

  • Escáner para la seguridad de tu propia organización
  • Escaneo de organizaciones específicas con fines de bug bounty
  • Escanear todo y reportar los problemas encontrados para salvar internet
  • Investigación y aprendizaje

Esta herramienta proporciona una solución confiable y escalable para el análisis de seguridad de CI/CD, permitiendo a los usuarios consultar configuraciones incorrectas y obtener información valiosa sobre la postura de seguridad de su base de código.

Por qué Raven

En el último año, Cycode Labs llevó a cabo una extensa investigación sobre los problemas de seguridad fundamentales de los sistemas CI/CD. Examinamos las profundidades de muchos sistemas, miles de proyectos y varias configuraciones. La conclusión es clara: el modelo en el que la seguridad se delega a los desarrolladores ha fracasado. Esto se ha demostrado varias veces en nuestro contenido anterior:

  • Un escenario simple de inyección expuso docenas de repositorios públicos, incluidos proyectos populares de código abierto.
  • Descubrimos que uno de los frameworks frontend más populares era vulnerable al innovador método de ataque de inyección de rama.
  • Detallamos un vector de ataque completamente diferente, los riesgos de integración de terceros, el proyecto más popular en GitHub y miles más.
  • Finalmente, el framework de UI de Microsoft 365, con más de 300 millones de usuarios, es vulnerable a una nueva amenaza adicional: un ataque de envenenamiento de artefactos.
  • Además, encontramos, reportamos y divulgamos privadamente cientos de otras vulnerabilidades.

Cada una de las vulnerabilidades anteriores tiene características únicas, lo que hace casi imposible para los desarrolladores mantenerse al día con las últimas tendencias de seguridad. Desafortunadamente, cada vulnerabilidad comparte una característica común: cada explotación puede afectar a millones de víctimas.

Fue por estas razones que se creó Raven, un framework para el análisis de seguridad de flujos de trabajo CI/CD (y GitHub Actions como primer caso de uso). En nuestro enfoque, examinamos escenarios complejos donde cada problema no es una amenaza por sí solo, pero cuando se combinan, representan una amenaza grave.

Configuración y ejecución

Para comenzar con Raven, sigue estas instrucciones de instalación:

Paso 1: Instala el paquete Raven```bash pip3 install raven-cycode

root@kitploit:~
**Paso 2**: Configurar un servidor Redis local y una base de datos 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

Otra forma de configurar el entorno es ejecutando nuestro archivo docker compose proporcionado:```bash git clone https://github.com/CycodeLabs/raven.git cd raven make setup

root@kitploit:~
**Paso 3**: Ejecutar Raven Downloader

Modo de cuenta:```bash
raven download account --token $GITHUB_TOKEN --account-name RavenDemo

Modo de rastreo:```bash raven download crawl --token $GITHUB_TOKEN --min-stars 1000

root@kitploit:~
**Paso 4**: Ejecutar Raven Indexer```bash
raven index

Paso 5: Inspecciona los resultados a través del reporter```bash raven report --format raw

root@kitploit:~
En este punto, es posible inspeccionar los datos en la base de datos Neo4j, conectándose a http://localhost:7474/browser/.

### Requisitos previos

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

## Infraestructura

Raven utiliza dos contenedores docker principales: Redis y Neo4j.
`make setup` ejecutará un comando `docker compose` para preparar ese entorno.

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

## Uso

La herramienta contiene tres funcionalidades principales: `download`, `index` y `report`.

### Descarga

#### Descargar repositorios de la cuenta```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

Descargar repositorios públicos```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:~
### Índice```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

Informe```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:~
## Ejemplos

Recupera todos los flujos de trabajo y acciones asociados con cualquier cuenta (usuario/organización).```bash
raven download account --token $GITHUB_TOKEN --account-name microsoft --account-name google --debug

Extraer todos los repositorios públicos de GitHub.```bash raven download crawl --token $GITHUB_TOKEN --min-stars 100 --max-stars 1000 --debug

root@kitploit:~
Después de finalizar el proceso de descarga o si se interrumpe usando Ctrl+C, proceda a indexar todos los flujos de trabajo y acciones en la base de datos Neo4j.```bash
raven index --debug

Ahora, podemos generar un informe usando nuestra biblioteca de consultas.```bash raven report --severity high --tag injection --tag unauthenticated

root@kitploit:~
## Límite de tasa

Para una limitación de tasa efectiva, debes proporcionar un token de Github.
Para usuarios autenticados, se aplica la siguiente limitación de tasa:

- Búsqueda de código - 30 consultas por minuto
- Cualquier otra API - 5000 por hora

## Base de conocimiento de investigación

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

## Limitaciones actuales

- Es posible ejecutar una acción externa referenciando una carpeta con un `Dockerfile` (sin `action.yml`). Actualmente, este comportamiento no es compatible.
- Es posible ejecutar una acción externa referenciando un contenedor docker a través de la URL `docker://...`. Actualmente, este comportamiento no es compatible.
- Es posible ejecutar una acción referenciándola localmente. Esto crea un comportamiento complejo, ya que puede provenir de un repositorio diferente que se haya verificado anteriormente. El comportamiento actual intenta encontrarla en el repositorio existente.
- No estamos modelando toda la estructura del workflow. Si se necesitan campos adicionales, por favor envía un pull request de acuerdo con las [guías de contribución](https://github.com/CycodeLabs/raven/blob/main/CONTRIBUTING.md).

## Trabajo de investigación futuro

- Implementación de análisis de manchas (taint analysis). Ejemplo de caso de uso: un usuario puede pasar el título de un pull request (que es un parámetro controlable) a un parámetro de acción llamado `data`. Ese parámetro de acción puede ser usado en un comando run: `- run: echo ${{ inputs.data }}`, lo que crea una ruta para la ejecución de código.
- Expandir la investigación para hallazgos de uso malicioso de `GITHUB_ENV`. Esto también puede utilizar el análisis de manchas anterior.
- Investigar si `actions/github-script` tiene un panorama de amenazas interesante. Si es así, puede ser modelado en el grafo.

## Licencia

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

## Salón de la Fama - Vulnerabilidades encontradas y divulgadas usando Raven

| Nombre | Estrellas | Corrección | Fuentes adicionales | 
| ------ | -------- | ---- | -------------------- | 
| [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/)                                                   |

## ¿Quieres más de Seguridad CI/CD, AppSec y ASPM? Visita Cycode

Si te gustó Raven, probablemente te encantará nuestra plataforma [Cycode](https://cycode.com/?utm_source=github_website&utm_medium=referral&utm_campaign=raven_page) que ofrece capacidades aún más mejoradas para visibilidad, priorización y remediación de vulnerabilidades en toda la entrega de software.

Si estás interesado en una solución robusta, impulsada por investigación, de Seguridad de Pipeline, Seguridad de Aplicaciones o ASPM, no dudes en contactarnos o solicitar una demostración usando el formulario [https://cycode.com/book-a-demo/](https://cycode.com/book-a-demo/?utm_source=github_website&utm_medium=referral&utm_campaign=raven_page).
Descargar herramienta