
Apache Traffic Server 10.2.0 - عالية - عن بُعد - بقايا صلاحيات - بادئة authproxy
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · ats-authproxy-prefix
الفئة: صلاحية متبقية الوصول: عن بُعد
Apache Traffic Server 10.2.0 (b1df7334) - Apache Software Foundation
يقوم --forward-header-prefix في authproxy بنسخ حقول الهوية من مساعد مصادقة يُرجع 2xx إلى طلب العميل. تبحث HttpSetMimeHeader عن أول حقل فقط بهذا الاسم وتستبدله. تبقى النسخ الإضافية من العميل على قيد الحياة. أما الأصل (origin) الذي يعتمد سياسة آخر قيمة تفوز لنفس الترويسة فيتعامل مع قيمة العميل على أنها هوية.
ملف plugin.config الافتراضي فارغ. تتطلب هذه الثغرة المتبقية وجود الإضافة على remap مع خيار البادئة. لا يزال على العميل اجتياز المصادقة (2xx). المصادقة 403 لا تصل إلى الأصل أبدًا.
| المعرّف | لا يوجد CVE بعد |
| الفئة | صلاحية متبقية (زرع ترويسة الهوية) |
| الوصول | عن بُعد (HTTP عبر authproxy مع --forward-header-prefix) |
| CWE | CWE-444، CWE-863 |
| CVSS | عالٍ: 8.1 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
| المنتج | Apache Traffic Server |
| المتأثر | 10.2.0 (b1df7334b39a878971c376da849e8da4984918b6) طبقة بادئة authproxy |
| المصادقة | عميل يحصل بالفعل على 2xx من مساعد المصادقة. الإضافة مفعّلة. |
| الترخيص | GNU Affero GPL v3.0 |
| المختبر | 127.0.0.1:18760 فقط |
ثبّتُ الوسم العام 10.2.0 والمُستخرَج b1df7334. المختبر عبارة عن وكيل عكسي ats-10.2.0-lab:local مبني من المصدر على واجهة loopback. مساعد المصادقة يُرجع 2xx مقابل 403. الأصل يعتمد سياسة آخر قيمة تفوز لـ X-Auth-User.
الوصول إلى remap في ATS يحمّل authproxy.so مع --forward-header-prefix=X-Auth-. إرسال سطري X-Auth-User على طلب يقبله المساعد كـ 2xx.
| الطريقة | المخرج | الصلاحية |
|---|---|---|
تكرار X-Auth-User بعد مساعد مصادقة 2xx | طبقة StateAuthorized ثم HttpSetMimeHeader (authproxy.cc:660-690، utils.cc:87-102) | السلامة (مُثبتة في المختبر): الأصل يعتمد آخر قيمة تفوز. المختبر: X-Auth-User-0: realuser مع X-Auth-User-1: ATS-AUTHPROXY-PREFIX-WITNESS. حالات CONTROL بلا تكرار/بتكرار واحد تبقى REALUSER-ONLY. |
| نفس الزرع | قائمة تحكم الوصول (ACL) في الأصل / البحث عن المستخدم معتمدًا على تلك الترويسة | استطلاع (مُستنتَج): أي شيء يمكن لتلك الهوية المزروعة قراءته في الأصل. ليس تفريغًا لذاكرة الكومة. وليس إعدادات ATS. |
| مساعد مصادقة 403 مع نفس التكرارات | StateUnauthorized؛ لا يُعاد تمكين الأصل | مغلق (مُثبتة في المختبر): زيارات الأصل دون تغيير. العميل 403. الشاهد غير موجود في الاستجابة. |
مُثبتة في المختبر مقابل مُستنتَجة: تكرار آخر قيمة تفوز، والاستبدال الفردي، وحالة عدم التكرار، وعدم الوصول إلى 403 كلها في المختبر. أما صلاحية الأصل بعد الزرع فمُستنتَجة من هوية آخر قيمة تفوز.
المتطلبات: authproxy.so مع --forward-header-prefix. يجب أن يجتاز العميل المصادقة (2xx). يجب أن يتعامل الأصل مع ترويسات البادئة هذه كهوية (وهو سبب وجود الخيار). غير محمّلة في plugin.config الافتراضي.
| السطح | المختبر |
|---|---|
| لا يوجد رأس بادئة عميل | CONTROL none: الأصل REALUSER-ONLY |
| بادئة عميل واحدة | CONTROL single: يُستبدل الحقل الأول؛ لا يبقى الشاهد |
| مساعد المصادقة 403 | لم يتم الوصول إلى الأصل (control-403=yes) |
| الإضافة غير محمّلة | لا ينطبق المتبقي |
رؤوس hop-by-hop / @ | تُزال قبل خطافات الإضافة (CVE-2026-33267) |
| قائمة رؤوس استجابة المصادقة الفارغة | لم تعد تؤكد (سجل التغييرات) |
certifier SNI / url_sig C= | مغلق على هذا التثبيت (CVE-2026-58162 / 58181) |
ليس CVE-2026-58162. SHA-256/SHA-512 فقط على uri_signing. url_sig C= المفقود للفاصل لا يزال يرفض.
python3 ats-authproxy-prefix-Abraxas-Labs.py
أو
cd lab
./run.sh
Loopback 127.0.0.1:18760 (origin 18761، مساعد المصادقة 18762). مشروع Compose ats-authproxy-prefix. الصورة ats-10.2.0-lab:local. الشاهد ATS-AUTHPROXY-PREFIX-WITNESS. السطر الأخير:
SUCCESS ats-authproxy-prefix pin=10.2.0 control-none=REALUSER-ONLY control-single=REALUSER-ONLY control-403=yes dup-last-wins=yes ATS-AUTHPROXY-PREFIX-WITNESS
أزل كل حقل من حقول العميل يبدأ اسمه بـ --forward-header-prefix قبل التطبيق. تقوم HttpRemoveMimeHeader بالفعل بالمرور عبر TSMimeHdrFieldFind حتى لا يتبقى أي منها (utils.cc:104-114). استخدمها على طلب العميل للبادئة المُهيأة، ثم عيّن. اجعل HttpSetMimeHeader تُدمّر حقول TSMimeHdrFieldNextDup الإضافية بالطريقة التي تفعلها بالفعل set_header في origin_server_auth وsetHeader في access_control.
حتى ذلك الحين، لا توجّه origin ACL إلى رؤوس بادئة authproxy إلا إذا كان الأصل يعتمد مبدأ الأسبقية الأولى (first-wins)، أو ارفض أسماء البادئات المكررة عند الأصل.
b1df7334b39a878971c376da849e8da4984918b6)plugins/authproxy/authproxy.cc StateAuthorizedplugins/authproxy/utils.cc HttpSetMimeHeader / HttpRemoveMimeHeaderorigin_server_auth.cc set_header يمر عبر NextDup