RAVEN(CI/CD 风险分析与漏洞枚举) 是一款强大的安全工具,专为大规模扫描 GitHub Actions CI 工作流并将发现的数据整合到 Neo4j 数据库中而设计。由 Cycode 研究团队开发和维护。
借助 Raven,我们能够识别并报告 GitHub 上一些最受欢迎的仓库中的安全漏洞,包括:
我们已将所有通过 Raven 发现的漏洞列在了工具的名人堂中。
该工具提供以下功能来扫描和分析潜在的 CI/CD 漏洞:
Raven 的可能用途:
该工具为 CI/CD 安全分析提供了可靠且可扩展的解决方案,使用户能够查询错误配置并获得关于其代码库安全状况的宝贵见解。
在过去的一年中,Cycode Labs 对 CI/CD 系统的基本安全问题进行了广泛研究。我们深入研究了多个系统、数千个项目以及多种配置。结论很明确——将安全责任委托给开发者的模式已经失败。这一点在我们之前的内容中多次得到证实:
上述每个漏洞都有其独特特征,使得开发者几乎不可能跟上最新的安全趋势。不幸的是,每个漏洞都有一个共同点——每次利用都可能影响数百万受害者。
正是出于这些原因,Raven 被创建为一个用于 CI/CD 安全工作流分析(首次用例是针对 GitHub Actions)的框架。在我们的关注点中,我们审查了复杂的场景,其中每个问题本身并不构成威胁,但组合起来却构成严重威胁。
要开始使用 Raven,请按照以下安装说明进行操作:
步骤 1:安装 Raven 包```bash pip3 install raven-cycode
**第二步**:搭建本地Redis服务器和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
另一种设置环境的方法是运行我们提供的docker compose文件:```bash git clone https://github.com/CycodeLabs/raven.git cd raven make setup
**步骤 3**: 运行 Raven Downloader
账户模式:```bash
raven download account --token $GITHUB_TOKEN --account-name RavenDemo
爬取模式:```bash raven download crawl --token $GITHUB_TOKEN --min-stars 1000
**步骤4**:运行 Raven Indexer```bash
raven index
步骤 5:通过报告器检查结果```bash raven report --format raw
此时,可以通过连接 http://localhost:7474/browser/ 来查看 Neo4j 数据库中的数据。
### 前提条件
- Python 3.9+
- Docker Compose v2.1.0+
- Docker Engine v1.13.0+
## 基础设施
Raven 使用两个主要的 Docker 容器:Redis 和 Neo4j。
`make setup` 将运行 `docker compose` 命令来准备该环境。

## 使用
该工具包含三个主要功能:`download`、`index` 和 `report`。
### 下载
#### 下载账户仓库```bash
usage: raven download account [-h] --token TOKEN [--debug] [--redis-host REDIS_HOST] [--redis-port REDIS_PORT] [--clean-redis] (--account-name ACCOUNT_NAME | --personal)