
Apache Traffic Server 10.2.0 - عالية - عن بُعد - كتابة ملفات - magick convert غير الموقّع يكتب بصلاحيات nobody
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · ats-magick-unsigned
الفئة: كتابة ملف الوصول: عن بُعد
Apache Traffic Server 10.2.0 (b1df7334) - Apache Software Foundation
يشغّل magick التجريبي ConvertImageCommand من ImageMagick عبر ?magick= (وسائط convert بصيغة percent+base64) عندما لا يحتوي plugin.config على مفتاح RSA. verified = nullptr == key_. ينص ملف README على أن المفتاح موجود لتجنّب التعرّض للاستغلال. تحميل magick.so بدون وسائط هو السلوك الافتراضي للإضافة.
CONTROL الموقّع بمفتاح RSA عام على plugin.config يعيد 403، دون ملف إثبات. تبقى الفئة كتابة ملف. غالبًا ما يعطّل policy.xml في التوزيعات مندوبي URL/shell. لا تُضخّم ذلك إلى RCE.
| المعرّف | لا يوجد CVE بعد |
| الفئة | كتابة ملف (وسائط convert غير موقّعة) |
| الوصول | عن بُعد (HTTP ?magick= دون مصادقة عبر magick.so بدون مفتاح) |
| CWE | CWE-347، CWE-73 |
| CVSS | مرتفع: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N |
| المنتج | Apache Traffic Server |
| المتأثر | 10.2.0 (b1df7334b39a878971c376da849e8da4984918b6) magick التجريبي convert غير موقّع |
| المصادقة | لا شيء |
| الترخيص | GNU Affero GPL v3.0 |
| المختبر | 127.0.0.1:18800 فقط |
ثبّتُّ الوسم العام 10.2.0 peel b1df7334. المختبر عبارة عن وكيل عكسي ats-10.2.0-lab:local مبني من المصدر على loopback. convert غير الموقّع -write png:/tmp/oracle/ATS-MAGICK-UNSIGNED-WITNESS. ملف الإثبات 161 بايت مالكه nobody. CONTROL الموقّع 403.
GET /img.png?magick= دون مصادقة ضد صورة أصل من نوع Content-Type متوافق، مع تحميل magick.so وبدون مفتاح RSA.
| الطريقة | المصبّ | الصلاحية |
|---|---|---|
GET /img.png?magick= دون مصادقة convert غير موقّع -write png:/tmp/oracle/ATS-MAGICK-UNSIGNED-WITNESS | verified = nullptr == key_ (magick.cc:593-609) ثم ConvertImageCommand | السلامة / الملف (مُثبت مختبريًا): ملف إثبات بحجم 161 بايت مالكه nobody. السجلات ImageMagick's syntax. HTTP 200. |
نفس الاستعلام مع مفتاح RSA على plugin.config | EVP_DigestVerify | مغلق (مُثبت مختبريًا): 403 فشل التحقق من التوقيع. لا ملف إثبات. |
| كتلة أصل ضخمة | blob_ غير محدود | التوافر (مُستنتج): ضغط على ذاكرة العملية. نظير لحد CVE-2026-58186. ليس هذا الصف المرتفع. |
| مندوبو URL / shell في IM | policy.xml | مغلق في هذا المختبر: مندوبو HTTP/HTTPS/URL/MVG/shell لا شيء. لا تسمّه RCE. |
مُثبت مختبريًا مقابل مُستنتج: كتابة ملف غير موقّعة باسم nobody، والموقّع 403، وسجل الصياغة كلها مختبريًا. DoS عبر blob غير محدود مُستنتج. لا يُدّعى RCE.
يتطلب: magick.so التجريبي بدون مفتاح تحقق، بالإضافة إلى policy.xml في ImageMagick لا يزال يسمح بكتابة مسار convert. غير محمّل في plugin.config الافتراضي.
| السطح | المختبر |
|---|---|
| magick محمّل مع مفتاح RSA عام | CONTROL 403، control-sigfail=yes، لا ملف |
| magick غير محمّل | الاستعلام magick خامل |
wasm WASI path_open | NOENT |
| جسم الطلب كمدخل IM | كتلة استجابة الأصل هي المدخل |
| فك ترميز webp_transform المقيّد | CVE-2026-58186 مغلق؛ كتلة magick هي النظير الذي لم يُقيّد |
ليس CVE-2026-58186. كان README الخاص بـ Magick قد ذكر بالفعل أن المفتاح موجود لتجنب استغلاله. ما تبقّى هو تحميل الإضافة دون ذلك المفتاح.
python3 ats-magick-unsigned-Abraxas-Labs.py
أو
cd lab
./run.sh
Loopback 127.0.0.1:18800 (CONTROL موقّع على مستمع ثانٍ). مشروع Compose ats-magick-unsigned. الصورة ats-10.2.0-lab:local. الشاهد ATS-MAGICK-UNSIGNED-WITNESS. السطر الأخير:
SUCCESS ats-magick-unsigned unsigned-http=200 file-write=yes uid=nobody syntax-log=true control-http=403 control-sigfail=yes ATS-MAGICK-UNSIGNED-WITNESS
الفشل المُغلق (fail closed) عندما تكون key_ فارغة (null). لا تُشغّل ConvertImageCommand على ?magick= القادم من العميل دون وجود magickSig مُتحقَّق منه. تعامل مع المفتاح المفقود على أنه "إضافة غير مُهيّأة بشكل صحيح"، وليس "تحويل غير موقَّع مقبول". ضع حدًّا أعلى لـ blob_ بالطريقة نفسها التي حُدَّ بها webp_transform.
حتى ذلك الحين، لا تُحمّل magick.so دون مفتاح RSA عام بحجم الإنتاج. سياسة policy.xml الخاصة بالتوزيعة ليست بديلًا عن التوقيع.
b1df7334b39a878971c376da849e8da4984918b6)plugins/experimental/magick/magick.cc verified = nullptr == key_plugins/experimental/magick/README