
GitHub Actions CI/CD 워크플로우의 보안 취약점을 스캔하고, 발견된 내용을 Neo4j 그래프 데이터베이스에 인덱싱하며, 잘못된 구성, 인젝션 및 공급망 위험을 탐지하기 위한 쿼리 라이브러리를 제공합니다.
RAVEN (Risk Analysis and Vulnerability Enumeration for CI/CD) 은 GitHub Actions CI 워크플로를 대규모로 스캔하고 발견된 데이터를 Neo4j 데이터베이스에 통합하도록 설계된 강력한 보안 도구입니다. Cycode 연구팀이 개발 및 유지 관리합니다.
Raven을 통해 우리는 GitHub에서 호스팅되는 가장 인기 있는 저장소 중 일부에서 보안 취약점을 식별하고 보고할 수 있었습니다. 그 예는 다음과 같습니다.
Raven을 사용하여 발견된 모든 취약점은 도구 명예의 전당에 나열했습니다.
이 도구는 잠재적인 CI/CD 취약점을 스캔하고 분석하기 위해 다음과 같은 기능을 제공합니다.
Raven의 가능한 사용 사례:
이 도구는 CI/CD 보안 분석을 위한 신뢰할 수 있고 확장 가능한 솔루션을 제공하여 사용자가 잘못된 구성을 쿼리하고 코드베이스의 보안 상태에 대한 귀중한 통찰력을 얻을 수 있도록 합니다.
지난 1년간 Cycode Labs는 CI/CD 시스템의 근본적인 보안 문제에 대해 광범위한 연구를 수행했습니다. 우리는 많은 시스템, 수천 개의 프로젝트, 그리고 여러 구성을 깊이 있게 조사했습니다. 결론은 명확합니다. 보안을 개발자에게 위임하는 모델은 실패했습니다. 이는 이전 콘텐츠에서 여러 번 입증되었습니다.
위의 각 취약점은 고유한 특성을 가지고 있어 개발자가 최신 보안 트렌드를 따라잡는 것이 거의 불가능합니다. 불행히도 각 취약점은 공통점을 공유합니다. 각 악용은 수백만 명의 피해자에게 영향을 미칠 수 있습니다.
이러한 이유로 Raven이 만들어졌습니다. CI/CD 보안 분석 워크플로(첫 번째 사용 사례로 GitHub Actions)를 위한 프레임워크입니다. 우리의 초점은 각 문제가 단독으로는 위협이 아니지만 결합되면 심각한 위협이 되는 복잡한 시나리오를 조사하는 데 있습니다.
Raven을 시작하려면 다음 설치 지침을 따르십시오.
1단계: Raven 패키지 설치```bash pip3 install raven-cycode
**Step 2**: 로컬 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
Step 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` 명령을 실행합니다.