Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
raven — Examina fluxos de trabalho CI/CD do GitHub Actions em busca de vulnerabilidades de segurança, indexa descobertas em um banco de dados gráfico Neo4j e fornece uma biblioteca de consultas para detectar configurações incorretas, injeções e riscos na cadeia de suprimentos. | Kitploit
Ferramentas/GitHubGitHub/cycodelabs/raven
Scanners de VulnerabilidadesAnálise de CódigoDevSecOpsSegurança da Cadeia de SuprimentosConfiguração IncorretaAprendizado e Educação
GitHubcycodelabs/raven

raven

Examina fluxos de trabalho CI/CD do GitHub Actions em busca de vulnerabilidades de segurança, indexa descobertas em um banco de dados gráfico Neo4j e fornece uma biblioteca de consultas para detectar configurações incorretas, injeções e riscos na cadeia de suprimentos.

Ver Repositório
74645há 1 anoRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Cygives Banner Raven

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

Raven - Analisador de Segurança CI/CD

RAVEN (Risk Analysis and Vulnerability Enumeration for CI/CD) é uma poderosa ferramenta de segurança projetada para realizar varreduras massivas em workflows de GitHub Actions CI e digerir os dados descobertos em um banco de dados Neo4j. Desenvolvida e mantida pela equipe de pesquisa da Cycode.

Com o Raven, conseguimos identificar e reportar vulnerabilidades de segurança em alguns dos repositórios mais populares hospedados no GitHub, incluindo:

  • FreeCodeCamp (o projeto mais popular no GitHub)
  • Storybook (um dos frameworks frontend mais populares)
  • Fluent UI da Microsoft
  • e muito mais

Listamos todas as vulnerabilidades descobertas usando o Raven na ferramenta Hall da Fama.

O que é o Raven

A ferramenta oferece as seguintes capacidades para escanear e analisar potenciais vulnerabilidades de CI/CD:

  • ⏬ Downloader: Você pode baixar workflows e ações necessárias para a análise. Workflows podem ser baixados para múltiplas contas (usuário/organização) simultaneamente ou para repositórios públicos do GitHub, ordenados por número de estrelas. Realizar esta etapa é um pré-requisito para a análise dos workflows.
  • 📊 Indexador: Digestão dos dados baixados em um banco de dados baseado em grafos Neo4j. Este processo envolve estabelecer relações entre workflows, ações, jobs, steps, etc.
  • 📚 Biblioteca de Consultas: Criamos uma biblioteca de consultas pré-definidas baseadas em pesquisas realizadas pela comunidade.
  • ❗ Relator: O Raven possui uma forma simples de reportar achados suspeitos. Como exemplo, pode ser incorporado no processo de CI para pull requests e executado lá.

Possíveis usos para o Raven:

  • Scanner para a segurança da sua própria organização
  • Escaneamento de organizações específicas para fins de bug bounty
  • Escaneie tudo e reporte problemas encontrados para salvar a internet
  • Propósitos de pesquisa e aprendizado

Esta ferramenta oferece uma solução confiável e escalável para análise de segurança CI/CD, permitindo que os usuários consultem configurações ruins e obtenham insights valiosos sobre a postura de segurança do seu código.

Por que o Raven

No ano passado, a Cycode Labs conduziu uma extensa pesquisa sobre questões fundamentais de segurança dos sistemas CI/CD. Examinamos as profundezas de muitos sistemas, milhares de projetos e diversas configurações. A conclusão é clara – o modelo no qual a segurança é delegada aos desenvolvedores falhou. Isso foi comprovado várias vezes em nosso conteúdo anterior:

  • Um simples cenário de injeção expôs dezenas de repositórios públicos, incluindo projetos open-source populares.
  • Descobrimos que um dos frameworks frontend mais populares era vulnerável ao método inovador de ataque de injeção de branch.
  • Detalhamos um vetor de ataque completamente diferente, riscos de integração de terceiros, o projeto mais popular do GitHub e milhares mais.
  • Finalmente, o framework de UI do Microsoft 365, com mais de 300 milhões de usuários, é vulnerável a uma nova ameaça adicional – um ataque de envenenamento de artefato.
  • Além disso, encontramos, reportamos e divulgamos centenas de outras vulnerabilidades em particular.

Cada uma das vulnerabilidades acima possui características únicas, tornando quase impossível para os desenvolvedores se manterem atualizados com as últimas tendências de segurança. Infelizmente, cada vulnerabilidade compartilha uma característica comum – cada exploração pode impactar milhões de vítimas.

Foi por essas razões que o Raven foi criado, um framework para análise de segurança de workflows CI/CD (e GitHub Actions como primeiro caso de uso). No nosso foco, examinamos cenários complexos onde cada problema não é uma ameaça por si só, mas quando combinados, representam uma ameaça grave.

Setup && Run

Para começar com o Raven, siga estas instruções de instalação:

Passo 1: Instale o pacote Raven```bash pip3 install raven-cycode

root@kitploit:~
**Passo 2**: Configurar um servidor Redis local e banco de dados 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

Outra forma de configurar o ambiente é executando nosso arquivo docker compose fornecido:```bash git clone https://github.com/CycodeLabs/raven.git cd raven make setup

root@kitploit:~
**Passo 3**: Executar o Raven Downloader

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

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

root@kitploit:~
**Passo 4**: Execute o Raven Indexer```bash
raven index

Passo 5: Inspecione os resultados através do reporter```bash raven report --format raw

root@kitploit:~
Neste ponto, é possível inspecionar os dados no banco de dados Neo4j, acessando http://localhost:7474/browser/.

### Pré-requisitos

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

## Infraestrutura

O Raven está usando dois contêineres docker principais: Redis e Neo4j.
`make setup` executará um comando `docker compose` para preparar esse ambiente.

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

## Uso

A ferramenta contém três funcionalidades principais: `download`, `index` e `report`.

### Download

#### Baixar Repositórios da Conta```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

Baixar Repositórios 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

Relatório```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:~
## Exemplos

Recupere todos os workflows e ações associados a qualquer conta (usuário/organização).```bash
raven download account --token $GITHUB_TOKEN --account-name microsoft --account-name google --debug

Raspe todos os repositórios públicos do GitHub.```bash raven download crawl --token $GITHUB_TOKEN --min-stars 100 --max-stars 1000 --debug

root@kitploit:~
Após terminar o processo de download ou se interrompido usando Ctrl+C, prossiga para indexar todos os workflows e ações no banco de dados Neo4j.```bash
raven index --debug

Agora, podemos gerar um relatório usando nossa biblioteca de consultas.```bash raven report --severity high --tag injection --tag unauthenticated

root@kitploit:~
## Limitação de Taxa

Para uma limitação de taxa eficaz, você deve fornecer um token do Github.
Para usuários autenticados, a seguinte limitação de taxa se aplica:

- Pesquisa de código - 30 consultas por minuto
- Qualquer outra API - 5000 por hora

## Base de Conhecimento de Pesquisa

- [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)

## Limitações Atuais

- É possível executar uma ação externa ao referenciar uma pasta com um `Dockerfile` (sem `action.yml`). Atualmente, esse comportamento não é suportado.
- É possível executar uma ação externa ao referenciar um contêiner docker através da URL `docker://...`. Atualmente, esse comportamento não é suportado.
- É possível executar uma ação ao referenciá-la localmente. Isso cria um comportamento complexo, pois pode vir de um repositório diferente que foi verificado anteriormente. O comportamento atual tenta encontrá-lo no repositório existente.
- Não estamos modelando toda a estrutura do workflow. Se campos adicionais forem necessários, envie um pull request de acordo com as diretrizes de [contribuição](https://github.com/CycodeLabs/raven/blob/main/CONTRIBUTING.md).

## Trabalho Futuro de Pesquisa

- Implementação de análise de contaminação (taint analysis). Exemplo de caso de uso - um usuário pode passar um título de pull request (que é um parâmetro controlável) para um parâmetro de ação chamado `data`. Esse parâmetro de ação pode ser usado em um comando de execução: `- run: echo ${{ inputs.data }}`, o que cria um caminho para execução de código.
- Expandir a pesquisa para descobertas de uso indevido prejudicial de `GITHUB_ENV`. Isso pode utilizar a análise de contaminação anterior também.
- Pesquisar se `actions/github-script` possui um cenário de ameaças interessante. Se sim, pode ser modelado no grafo.

## Licença

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

## Hall da Fama - Vulnerabilidades Encontradas e Divulgadas Usando Raven

| Nome    | Estrelas   | Correção  | Fontes Adicionais   |
| ------ | -------- | ---- | -------------------- | 
| [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/)                                                   |

## Quer mais sobre Segurança de CI/CD, AppSec e ASPM? Conheça a Cycode

Se você gostou do Raven, provavelmente amará nossa plataforma [Cycode](https://cycode.com/?utm_source=github_website&utm_medium=referral&utm_campaign=raven_page), que oferece capacidades ainda mais aprimoradas para visibilidade, priorização e remediação de vulnerabilidades ao longo da entrega de software.

Se você está interessado em uma solução robusta e orientada por pesquisa de Segurança de Pipeline, Segurança de Aplicações ou ASPM, não hesite em entrar em contato conosco ou solicitar uma demonstração usando o formulário [https://cycode.com/book-a-demo/](https://cycode.com/book-a-demo/?utm_source=github_website&utm_medium=referral&utm_campaign=raven_page).
Baixar ferramenta