| name | security-bounty-hunter |
| description | 저장소에서 실제 익스플로잇 가능한, 바운티 가치가 있는 보안 이슈를 찾습니다. 로컬 한정 잡음이 아니라 실제 신고로 이어질 수 있는 원격 도달 취약점에 집중합니다. |
| origin | ECC direct-port adaptation |
| version | 1.0.0 |
Security Bounty Hunter
이 스킬은 포괄적인 모범 사례 리뷰가 아니라, 책임 있는 공개나 바운티 제출을 위한 실전형 취약점 발굴이 목표일 때 사용합니다.
사용 시점
- 저장소에서 익스플로잇 가능한 취약점을 스캔할 때
- Huntr, HackerOne 등 바운티 제출을 준비할 때
- "이게 실제로 돈이 되나?"를 판단하는 트리아지가 필요할 때
동작 방식
원격에서 도달 가능하고 사용자가 통제할 수 있는 공격 경로를 우선합니다. 플랫폼이 흔히 informational 또는 범위 밖으로 기각하는 패턴은 버립니다.
범위 내 패턴
지속적으로 가치가 있는 이슈 유형:
| Pattern | CWE | Typical impact |
|---|
| 사용자 제어 URL을 통한 SSRF | CWE-918 | 내부 네트워크 접근, 클라우드 메타데이터 탈취 |
| 미들웨어 또는 API 가드의 인증 우회 | CWE-287 | 무단 계정/데이터 접근 |
| 원격 역직렬화 또는 업로드→RCE 경로 | CWE-502 | 코드 실행 |
| 도달 가능한 엔드포인트의 SQL injection | CWE-89 | 데이터 유출, 인증 우회, 데이터 파괴 |
| 요청 핸들러의 명령 주입 | CWE-78 | 코드 실행 |
| 파일 서빙 경로의 path traversal | CWE-22 | 임의 파일 읽기/쓰기 |
| 자동 트리거되는 XSS | CWE-79 | 세션 탈취, 관리자 장악 |
건너뛸 것
프로그램이 명시하지 않는 한 보통 신호가 낮거나 바운티 범위 밖입니다.
- 원격 경로가 없는 로컬 전용
pickle.loads, torch.load 등
- CLI 전용 도구의
eval() 또는 exec()
- 완전히 하드코딩된 명령에 대한
shell=True
- 보안 헤더 누락만 있는 경우
- 익스플로잇 영향 없는 일반적 rate limit 불만
- 피해자가 직접 코드를 붙여넣어야 하는 self-XSS
- 대상 프로그램 범위에 없는 CI/CD 주입
- 데모, 예제, 테스트 전용 코드
워크플로
- 먼저 범위를 확인합니다.
- 프로그램 규칙,
SECURITY.md, 공개 채널, 제외 항목
- 실제 진입점을 찾습니다.
- HTTP 핸들러, 업로드, 백그라운드 작업, 웹훅, 파서, 연동 엔드포인트
- 정적 도구는 필요할 때 쓰되, 트리아지 입력으로만 취급합니다.
- 실제 코드 경로를 처음부터 끝까지 읽습니다.
- 사용자 제어 입력이 의미 있는 sink까지 도달하는지 증명합니다.
- 가능한 가장 작은 안전한 PoC로 익스플로잇 가능성과 영향을 확인합니다.
- 리포트를 쓰기 전에 중복 여부를 확인합니다.
예시 트리아지 루프
semgrep --config=auto --severity=ERROR --severity=WARNING --json
그다음 수동 필터링:
- 테스트, 데모, fixture, vendored code 제거
- 로컬 전용 또는 도달 불가능 경로 제거
- 명확한 네트워크/사용자 제어 경로가 있는 항목만 유지
리포트 구조
## Description
[취약점이 무엇이고 왜 중요한지]
## Vulnerable Code
[파일 경로, 라인 범위, 작은 스니펫]
## Proof of Concept
[최소 동작 요청 또는 스크립트]
## Impact
[공격자가 달성할 수 있는 것]
## Affected Version
[테스트한 버전, 커밋, 배포 대상]
품질 게이트
제출 전에:
- 실제 사용자 또는 네트워크 경계에서 코드 경로가 도달 가능하다
- 입력이 실제로 사용자 제어다
- sink가 의미 있고 익스플로잇 가능하다
- PoC가 동작한다
- 이미 advisory, CVE, 공개 티켓으로 다뤄진 이슈가 아니다
- 대상이 실제 바운티 프로그램 범위 안에 있다