
인증 우회, IDOR, 로직 버그를 찾는 AI 기반 SAST 스캐너로 Semgrep/CodeQL이 놓치는 부분을 찾습니다. 무료 GitHub Action. Python, JS/TS, Go, PHP, Ruby를 지원합니다.
AI 기반 코드 보안 스캐너로, Semgrep와 CodeQL이 놓치는 취약점을 찾아냅니다.
빠른 시작 • GitHub Action • 비교 • 언어 • FAQ
전통적인 SAST 도구는 패턴 매칭과 AST 규칙에 의존합니다. 알려진 취약점 패턴을 잡는 데는 뛰어나지만, 근본적으로 의도를 추론할 수 없습니다.
API에 20개의 엔드포인트가 있고 그중 19개가 리소스에 대해 작업을 수행하기 전에 인증을 확인한다면, Semgrep은 그렇지 않은 하나를 표시할 방법이 없습니다. 매칭할 패턴이 없기 때문입니다. 취약점은 패턴의 부재입니다.
VulnHawk는 AI로 코드를 분석하며, 검사하는 모든 코드 조각에 대해 코드베이스 내 다른 곳의 관련 코드를 컨텍스트로 포함시킵니다. 이 강화 단계를 통해 AI는 유사한 컴포넌트들이 보안을 어떻게 처리하는지 비교하고, 그렇지 않은 것을 발견할 수 있습니다.
pip install vulnhawk
백엔드 선택:
# Claude Code CLI - 구독자 무료 (권장)
vulnhawk scan ./src -b claude-code
# Codex CLI - ChatGPT Pro/Plus 구독자 무료
vulnhawk scan ./src -b codex
# Claude API
export ANTHROPIC_API_KEY=sk-ant-...
vulnhawk scan ./src
# OpenAI API
vulnhawk scan ./src -b openai -m gpt-4o
# Ollama - 무료, 로컬, 완전 비공개
vulnhawk scan ./src -b ollama -m llama3.1
설정 파일 없음. 규칙 작성 불필요. 데이터베이스 구축 필요 없음.
Claude Code 및 Codex 백엔드는 기존 구독이 있는 사용자에게 무료입니다. VulnHawk는 로컬 CLI를 통해 프롬프트를 전달하므로 추가 API 비용이 없습니다.
*Claude Code, Codex CLI 또는 Ollama로 무료 사용 가능. API 백엔드는 스캔당 약 $0.50-$2.00 비용이 듭니다.
| 계층 | 도구 | 목적 |
|---|---|---|
| 1 |
vulnhawk scan ./src # 전체 스캔 (기본값)
vulnhawk scan ./src --mode auth # 인증 우회, 누락된 검사, 세션 결함
vulnhawk scan ./src --mode injection # SQLi, 명령 주입, SSTI, XSS
vulnhawk scan ./src --mode secrets # 하드코딩된 키, 토큰, 비밀번호
vulnhawk scan ./src --mode config # 디버그 모드, 허용적 CORS, 안전하지 않은 쿠키
vulnhawk scan ./src --mode crypto # 약한 해싱, 하드코딩된 키, 나쁜 RNG
vulnhawk scan ./src -o json -f results.json # JSON
vulnhawk scan ./src -o sarif -f results.sarif # SARIF (GitHub Code Scanning)
vulnhawk scan ./src -o markdown -f report.md # Markdown 보고서
vulnhawk scan ./src --severity high # Critical + High만
vulnhawk scan ./src --severity info # 모든 항목
Semgrep, CodeQL 또는 SARIF를 생성하는 모든 도구의 출력을 VulnHawk에 공급하세요. VulnHawk는 이러한 결과를 추가 컨텍스트로 사용하여 검증, 확장 및 체인하여 더 깊은 취약점을 찾아냅니다.
# 먼저 Semgrep을 실행한 후 VulnHawk로 강화
semgrep --config auto ./src -o semgrep.sarif --sarif
vulnhawk scan ./src --sarif-input semgrep.sarif
이를 통해 가능한 것:
vulnhawk info ./src # 파일, 청크 및 언어 분류 미리보기
VulnHawk는 기본 브랜치에서 기준 스캔으로 실행되며 모든 풀 리퀘스트에서 증분 스캔으로 실행됩니다.
name: VulnHawk Security Scan
on:
push:
branches: [main, master]
pull_request:
permissions:
security-events: write
contents: read
jobs:
vulnhawk:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: momenbasel/vulnhawk@main
with:
target: '.'
backend: 'claude-code'
claude-code-oauth-token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
severity: 'medium'
fail-on-findings: 'true'
결과는 SARIF를 통해 GitHub의 Security > Code Scanning 탭에 자동으로 업로드됩니다.
steps:
- uses: actions/checkout@v4
- name: Semgrep (빠른 패턴 스캔)
uses: returntocorp/semgrep-action@v1
with:
config: auto
generateSarif: true
- name: VulnHawk (심층 AI 분석)
uses: momenbasel/vulnhawk@main
with:
target: '.'
backend: 'claude-code'
claude-code-oauth-token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
sarif-input: 'semgrep.sarif'
코드베이스 ──> 발견 ──> 청크 ──> 강화 ──> 분석 ──> 검증 ──> 보고
│ │ │ │ │
.gitignore 및 함수 동일 디렉토리 + LLM + 보안 중복 제거 +
.vulnhawk- 클래스 인증 패턴의 프롬프트 신뢰도
ignore 준수 라우트 등 관련 코드 점수
모듈
강화 단계가 핵심 차별화 요소입니다. 각 코드 청크에 대해 VulnHawk는 다음을 포함합니다:
이를 통해 AI는 불일치를 식별하는 데 필요한 컨텍스트를 얻습니다.
스캔에서 경로 제외 (gitignore 구문):
generated/
vendor/
third_party/
*.gen.go
| 변수 | 설명 |
|---|---|
CLAUDE_CODE_OAUTH_TOKEN | Claude Code CLI 인증 (구독자 무료) |
ANTHROPIC_API_KEY | Claude API 키 |
OPENAI_API_KEY | OpenAI API 키 |
Claude Code 구독 (Max $100-$200/월, 또는 Team 요금제)에는 무제한 CLI 사용이 포함됩니다. VulnHawk는 내부적으로 claude --print를 호출하여 기존 구독을 통해 분석 프롬프트를 전송합니다. API 키가 필요 없습니다. 토큰당 요금이 없습니다.
로컬 머신에서 claude config get oauth_token을 실행하세요. 출력을 GitHub Actions 시크릿 CLAUDE_CODE_OAUTH_TOKEN으로 추가하세요.
둘 다 실행해야 합니다. main에 푸시할 때 스캔하면 보안 기준선을 설정하고 Security 탭을 채웁니다. PR 스캔은 병합 전에 새로운 취약점을 발견합니다. 권장 워크플로 구성은 두 트리거를 모두 처리합니다.
예 - 코드 청크는 구성된 LLM 제공업체(Anthropic 또는 OpenAI)로 전송됩니다. 완전히 비공개이고 에어갭된 스캔을 위해서는 로컬 머신에서만 실행되는 Ollama 백엔드를 사용하세요.
아니요. VulnHawk는 보완 계층입니다. Semgrep과 CodeQL은 각자의 역할(패턴 매칭 및 오염 추적)에서 탁월합니다. VulnHawk는 규칙으로 표현할 수 없는 비즈니스 로직 버그, 인증 갭 및 불일치를 잡아냅니다. 세 가지를 모두 함께 사용하여 가장 강력한 커버리지를 확보하세요.
예. VulnHawk는 두 프레임워크 모두에 대해 프레임워크 인식 청킹을 포함합니다. Laravel의 Route::get() 정의, PHP 클래스/트레이트/인터페이스, Rails 라우트 선언(get, post, resources) 및 Ruby 클래스/모듈을 감지합니다. 또한 프레임워크별 임포트(use, require, include)도 추출합니다.
다른 스캐너(Semgrep, CodeQL, Snyk 등)에서 생성된 SARIF 파일을 VulnHawk에 제공할 수 있습니다. VulnHawk는 분석 중에 해당 결과를 추가 컨텍스트로 사용하여 검증, 근처 관련 문제 발견, 여러 도구의 결과를 연결하는 다단계 공격 체인 구축을 수행합니다.
CONTRIBUTING.md를 참조하세요.
git clone https://github.com/momenbasel/vulnhawk.git
cd vulnhawk
uv venv .venv && source .venv/bin/activate
uv pip install -e ".[dev]"
pytest
VulnHawk가 유용하다면, 프로젝트 후원을 통해 지속적인 개발을 지원해 주세요.
VulnHawk는 미국에 등록된 공격적 보안 회사인 GreyCore Labs에서 개발 및 유지 관리합니다. 귀하의 제품에도 동일한 관심을 원하십니까?
VulnHawk는 VulnHawk 라이선스에 따라 소스 이용 가능입니다.
모두 무료 - 개인, 팀, 스타트업, 기업은 공식 배포 채널을 통해 설치한 경우 내부 보안 스캔 목적으로 VulnHawk를 무료로 사용할 수 있습니다:
소프트웨어를 판매하거나, 경쟁 서비스로 제공하거나, 포크를 제품으로 재배포할 수 없습니다. 포크는 이 저장소에 풀 리퀘스트를 제출하기 위한 목적으로만 허용됩니다. 전체 약관은 LICENSE를 참조하세요.
| 기능 | VulnHawk | Semgrep | CodeQL | Snyk Code | Checkmarx | SonarQube |
|---|
| 감지 방법 | AI 추론 | AST 패턴 | QL 데이터 흐름 | ML + 규칙 | 패턴 + 흐름 | 패턴 |
| 비즈니스 로직 결함 | 예 | 아니요 | 제한적 | 제한적 | 제한적 | 아니요 |
| 파일 간 컨텍스트 | 자동 | 사용자 정의 규칙 | 사용자 정의 쿼리 | 일부 | 유료 티어 | 제한적 |
| 설정 복잡성 | 설정 불필요 | 규칙 구성 | DB 구축 + QL | 설정 파일 | 복잡함 | 서버 설정 |
| 사용자 정의 규칙 필요 | 아니요 | 예 (YAML) | 예 (QL) | 일부 | 예 | 예 |
| 컨텍스트 인식 수정 | 예 | 일반적 | 일반적 | 일반적 | 일반적 | 일반적 |
| 로컬/비공개 모드 | Ollama | 예 | 예 | 아니요 | 아니요 | 자가 호스팅 |
| CI/CD 통합 | 1줄 Action | Action | Action | Action | 플러그인 | 플러그인 |
| SARIF 입력 (도구 체인) | 예 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 |
| 가격 | 무료* | 무료/유료 | 무료/유료 | 무료/$$$ | $$$$$ | 무료/$$$ |
| 취약점 클래스 | 규칙 기반 도구가 놓치는 이유 |
|---|
| N개 중 1개의 엔드포인트에서 인증 누락 | 매칭할 패턴이 없음 - 버그는 검사 부재 |
| IDOR / BOLA | JWT의 사용자 ID가 URL의 ID와 일치해야 함을 이해해야 함 |
| 결제 금액 조작 | 비즈니스 로직 - 금액 필드를 클라이언트에서 신뢰해서는 안 됨 |
| 일관되지 않은 입력 검증 | 5개의 핸들러는 검증, 6번째는 안 함 - 파일 간 비교 필요 |
| 저장된 입력 오용 | 안전하게 저장되었지만 3파일 떨어진 곳에서 eval() 또는 원시 SQL로 사용됨 |
| 상태 업데이트의 경쟁 조건 | 잠금 없는 동시 잔액 수정 |
| Semgrep |
| 알려진 악성 패턴에 대한 빠르고 결정론적인 게이트키핑 |
| 2 | CodeQL | 복잡한 호출 체인을 통한 깊은 오염 추적 |
| 3 | VulnHawk | 규칙이 표현할 수 없는 비즈니스 로직, 인증 갭, IDOR 및 불일치 |
| 백엔드 | 구성 |
|---|---|
| Claude Code (무료) |
다음 명령어로 토큰 획득: |
| Codex (무료) |
러너에서 |
| Claude API |
|
| OpenAI API |
|
| 언어 | 확장자 | 프레임워크 감지 |
|---|
| Python | .py | Django, Flask, FastAPI |
| JavaScript | .js .jsx | Express, Fastify, Next.js |
| TypeScript | .ts .tsx | Express, NestJS, Fastify |
| Go | .go | net/http handlers |
| Java | .java | 클래스/메서드 분할 |
| PHP | .php | Laravel 라우트, 클래스, 트레이트, 인터페이스 |
| Ruby | .rb .erb | Rails 라우트, 클래스, 모듈 |
| 백엔드 | 스캔당 (~100개 파일) | 요구 사항 |
|---|
| Claude Code CLI | 무료 | Claude Code Max 또는 Team 구독 |
| Codex CLI | 무료 | ChatGPT Pro 또는 Plus 구독 |
| Claude API | ~$0.50 - $2.00 | Anthropic API 크레딧 |
| OpenAI API | ~$1.00 - $4.00 | OpenAI API 크레딧 |
| Ollama | 무료 | 8GB 이상 VRAM의 로컬 머신 |