GHES CVE 스캐너
GitHub Enterprise Server(GHES) 인스턴스가 CVE-2026-3854 및 CVE-2026-4821의 영향을 받는지 감지합니다.
CVE 배경
CVE-2026-3854 (CVSS 8.7)
Git Push RCE — babeld 구성 요소가 git push 옵션의 세미콜론을 정화하지 않아 원격 코드 실행이 가능합니다.
영향을 받는 버전:
| 메이저 | 영향 범위 | 최소 안전 버전 |
|---|
| 3.14.x | <= 3.14.24 | 3.14.25 |
| 3.15.x | <= 3.15.19 | 3.15.20 |
| 3.16.x | <= 3.16.15 | 3.16.16 |
| 3.17.x | <= 3.17.12 | 3.17.13 |
| 3.18.x | <= 3.18.6 | 3.18.7 |
| 3.19.x | <= 3.19.3 | 3.19.4 |
| 3.20.x+ | 영향 없음 | — |
CVE-2026-4821 (CVSS 7.2)
관리 콘솔 프록시 주입 — 프록시 구성 필드가 셸 메타문자를 정화하지 않습니다.
영향을 받는 버전:
- 3.20.0
- 3.15.x <= 3.15.20
- 3.14.x 및 모든 이전 버전
수정 버전: 3.20.1, 3.15.21
설치
옵션 1: pip
pip install ghes-cve-scanner
옵션 2: 소스에서
git clone https://github.com/isagoakira/ghes-cve-scanner.git
cd ghes-cve-scanner
pip install -e .
사용법
단일 인스턴스 스캔
python scanner.py scan https://ghes.company.com
일괄 스캔
python scanner.py scan-batch instances.csv -o report.html
CSV 형식
url,ip,port
https://ghes1.company.com,10.0.1.1,443
https://ghes2.company.com,10.0.1.2,443
CLI 옵션
전역 옵션
| 옵션 | 설명 | 기본값 |
|---|
--timeout N | HTTP 타임아웃(초) | 5 |
--retries N | 재시도 횟수 |
scan 하위 명령
scan-batch 하위 명령
종료 코드
| 코드 | 의미 |
|---|
| 0 | 모든 인스턴스가 안전함 |
| 1 | 최소 하나의 인스턴스가 취약함 |
| 2 | 최소 하나의 인스턴스를 스캔할 수 없음 |
버전 빠른 참조
예제 스크립트
# 단일 인스턴스 스캔
./examples/single_instance.sh https://ghes.company.com
# 일괄 스캔
./examples/batch_scan.sh instances.csv report.html
# CI 통합
# examples/ci_integration.sh 참조
기능
- 외부 종속성 없음 — Python 표준 라이브러리만 사용
- 개인정보 보호 — 외부 서비스로 데이터 전송 없음
- 우아한 대체 — paramiko를 사용할 수 없으면 HTTP로 대체
- 병렬 스캔 — ThreadPoolExecutor를 사용한 일괄 스캔
- 다중 형식 — JSON/CSV/HTML/콘솔 출력
라이선스
MIT 라이선스