
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, ?magick= (प्रतिशत+base64 कन्वर्ट argv) से ImageMagick ConvertImageCommand चलाता है, जब plugin.config में कोई RSA कुंजी नहीं होती। verified = nullptr == key_। README में कहा गया है कि कुंजी शोषण से बचने के लिए मौजूद है। बिना आर्ग्युमेंट के magick.so लोड करना प्लगइन का डिफ़ॉल्ट है।
plugin.config पर RSA सार्वजनिक कुंजी के साथ हस्ताक्षरित CONTROL 403 है, कोई साक्षी फ़ाइल नहीं। वर्ग फ़ाइल लेखन ही रहता है। डिस्ट्रो का policy.xml अक्सर URL/shell डेलीगेट अक्षम कर देता है। इसे RCE तक न बढ़ाएँ।
| ID | अभी तक कोई CVE नहीं |
| वर्ग | फ़ाइल लेखन (अहस्ताक्षरित कन्वर्ट argv) |
| पहुँच | रिमोट (बिना कुंजी वाले magick.so के माध्यम से अनधिप्रमाणित HTTP ?magick=) |
| 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 अहस्ताक्षरित कन्वर्ट |
| प्रमाणीकरण | कोई नहीं |
| लाइसेंस | GNU Affero GPL v3.0 |
| लैब | केवल 127.0.0.1:18800 |
मैंने सार्वजनिक टैग 10.2.0 को पिन किया और b1df7334 निकाला। लैब लूपबैक पर स्रोत से निर्मित ats-10.2.0-lab:local रिवर्स प्रॉक्सी है। अहस्ताक्षरित कन्वर्ट -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= अहस्ताक्षरित कन्वर्ट -write png:/tmp/oracle/ATS-MAGICK-UNSIGNED-WITNESS | verified = nullptr == key_ (magick.cc:593-609) फिर ConvertImageCommand | अखंडता / फ़ाइल (लैब-प्रमाणित): 161-बाइट साक्षी फ़ाइल का स्वामी nobody। लॉग ImageMagick's syntax। HTTP 200। |
plugin.config पर RSA कुंजी के साथ वही क्वेरी | EVP_DigestVerify | बंद (लैब-प्रमाणित): 403 हस्ताक्षर सत्यापन विफल। कोई साक्षी फ़ाइल नहीं। |
| विशाल ओरिजिन ब्लॉब | असीमित blob_ | उपलब्धता (अनुमानित): प्रक्रिया मेमोरी दबाव। CVE-2026-58186 कैप का सहोदर। यह उच्च पंक्ति नहीं। |
| IM URL / shell डेलीगेट | policy.xml | इस लैब में बंद: HTTP/HTTPS/URL/MVG/shell डेलीगेट कोई नहीं। इसे RCE न कहें। |
लैब-प्रमाणित बनाम अनुमानित: nobody के रूप में अहस्ताक्षरित फ़ाइल लेखन, हस्ताक्षरित 403, सिंटैक्स लॉग लैब हैं। असीमित ब्लॉब DoS अनुमानित है। RCE का दावा नहीं किया गया है।
आवश्यक: सत्यापन कुंजी के बिना प्रयोगात्मक magick.so, साथ ही ImageMagick policy.xml जो अभी भी कन्वर्ट पथ लेखन की अनुमति देता है। डिफ़ॉल्ट 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 नहीं। Magick README पहले ही कह चुका था कि शोषण से बचने के लिए कुंजी मौजूद है। बचा हुआ हिस्सा उस कुंजी के बिना प्लगइन लोड करना है।
python3 ats-magick-unsigned-Abraxas-Labs.py
या
cd lab
./run.sh
Loopback 127.0.0.1:18800 (दूसरे listener पर signed CONTROL)। Compose प्रोजेक्ट ats-magick-unsigned। इमेज ats-10.2.0-lab:local। Witness 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
जब key_ null हो तो fail closed करें। सत्यापित magickSig के बिना क्लाइंट ?magick= पर ConvertImageCommand न चलाएँ। अनुपस्थित key को "plugin misconfigured" मानें, "unsigned convert ठीक है" नहीं। blob_ को उसी तरह सीमित करें जैसे webp_transform को सीमित किया गया था।
तब तक, production-size RSA public key के बिना magick.so लोड न करें। Distro policy.xml हस्ताक्षर का विकल्प नहीं है।
b1df7334b39a878971c376da849e8da4984918b6)plugins/experimental/magick/magick.cc verified = nullptr == key_plugins/experimental/magick/README