
Apache Traffic Server 10.2.0 - उच्च - रिमोट - विशेषाधिकार अवशेष - realip PLUGIN ACL fail-open
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · ats-realip-plugin-acl
वर्ग: विशेषाधिकार अवशेष पहुँच: रिमोट
Apache Traffic Server 10.2.0 (b1df7334) - Apache Software Foundation
प्रयोगात्मक realip के साथ-साथ प्रलेखित acl.subjects: PLUGIN रीमैप @src_ip को fail-open कर देता है। यदि realip TSHttpTxnVerifiedAddrSet को कॉल नहीं करता, तो _verified_addr AF_UNSPEC ही रहता है। PLUGIN सब्जेक्ट कभी nullptr नहीं होता, इसलिए PEER फ़ॉलबैक कभी नहीं चलता। ats_is_ip false है, @src_ip छोड़ दिया जाता है, ip_matches true ही रहता है। एक रीमैप allow-list अविश्वसनीय क्लाइंट से मेल खा जाती है।
डिफ़ॉल्ट acl.subjects PEER है। realip स्टॉक plugin.config में नहीं है। सत्र ip_allow.yaml कभी PLUGIN नहीं पढ़ता। क्लासिक X-Forwarded-For-from-anyone बंद है (trustedAddress आवश्यक; हेडर एक ही inet_pton पता होना चाहिए)।
| ID | अभी तक कोई CVE नहीं |
| वर्ग | विशेषाधिकार अवशेष (रीमैप ACL fail-open) |
| पहुँच | रिमोट (trustedAddress के बाहर से अन-प्रमाणित HTTP) |
| CWE | 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) प्रयोगात्मक realip + PLUGIN सब्जेक्ट |
| प्रमाणीकरण | कोई नहीं। क्लाइंट trustedAddress में नहीं है। |
| लाइसेंस | GNU Affero GPL v3.0 |
| लैब | केवल 127.0.0.1:18770 |
मैंने सार्वजनिक टैग 10.2.0 को पिन किया और b1df7334 निकाला। लैब लूपबैक पर स्रोत से बनाया गया ats-10.2.0-lab:local रिवर्स प्रॉक्सी है। CONTROL PEER 403। PLUGIN 200। सत्र PURGE अभी भी 403।
ATS तक पहुँचें जहाँ प्रयोगात्मक realip.so लोड है और proxy.config.acl.subjects: PLUGIN (या PLUGIN,PEER) है। रीमैप @src_ip=10.0.0.0/8 allow करें। trustedAddress के बाहर किसी पते से कनेक्ट करें।
| विधि | सिंक | विशेषाधिकार |
|---|---|---|
trustedAddress के बाहर 172.x से रीमैप @src_ip=10.0.0.0/8 तक HTTP | realip TSHttpTxnVerifiedAddrSet छोड़ता है (address_setter.cc:29-38); PLUGIN सब्जेक्ट सदैव उपस्थित (UrlRewrite.cc:462-473); !ats_is_ip होने पर @src_ip छोड़ें (:495-514) | अखंडता (लैब-प्रमाणित): रीमैप ACL मेल खाता है। ओरिजिन 200 ATS-REALIP-PLUGIN-ACL-WITNESS। CONTROL acl.subjects=PEER 403 है। |
वही साथ में अविश्वसनीय पीयर से Client-IP: 10.1.2.3 | simple.cc verify false; हेडर अनदेखा | अखंडता (लैब-प्रमाणित): फिर भी fail-open 200। सत्यापित पते का स्पूफ़ नहीं। |
वही क्लाइंट PURGE | सत्र ip_allow.yaml PEER | बंद (लैब-प्रमाणित): 403। PLUGIN कभी कनेक्शन ACL को नहीं बदलता। |
@src_ip के बिना होस्ट | डिफ़ॉल्ट मैप | बंद (लैब-प्रमाणित): बॉडी DENIED, कोई witness नहीं। |
लैब-प्रमाणित बनाम अनुमानित: PLUGIN 200, PEER 403, PURGE 403, अस्वीकृत मैप, अविश्वसनीय हेडर fail-open लैब हैं। ओरिजिन फिर क्या देता है, यह उस रीमैप से अनुमानित है जो केवल 10/8 होना चाहिए था।
आवश्यक: प्रायोगिक realip.so के साथ acl.subjects=PLUGIN (या PLUGIN,PEER)। @src_ip अनुमति-सूची का रीमैप करें। डिफ़ॉल्ट नहीं।
| सतह | लैब |
|---|---|
CONTROL acl.subjects=PEER | उसी @src_ip मैप पर 403 |
Session ip_allow.yaml | हमलावर PURGE 403 |
@src_ip के बिना मैप | DENIED |
खाली trustedAddress | कभी सत्यापित नहीं करता; फिर भी केवल तब fail-open होता है जब subjects PLUGIN हो |
| क्लासिक XFF-from-anyone | बंद। हेडर एक विश्वसनीय पीयर से एकल inet_pton पता होना चाहिए |
SNI ip_allow | केवल PEER/PROXY; हैंडशेक HTTP हेडर से पहले होता है |
डिफ़ॉल्ट subjects PEER | बचा हुआ लागू नहीं होता |
क्लासिक "किसी से भी X-Forwarded-For पर भरोसा करें" वाला बचा हुआ नहीं। बचा हुआ दस्तावेज़ीकृत PLUGIN रीमैप ACL पथ है।
python3 ats-realip-plugin-acl-Abraxas-Labs.py
या
cd lab
./run.sh
Loopback 127.0.0.1:18770 (मूल 18771)। Compose प्रोजेक्ट ats-realip-plugin-acl। इमेज ats-10.2.0-lab:local। हमलावर साइडकार 172.x। साक्षी ATS-REALIP-PLUGIN-ACL-WITNESS। अंतिम पंक्ति:
SUCCESS ats-realip-plugin-acl control-http=403 poc-http=200 purge-http=403 denied-http=200 spoof-http=200 trusted-http=200 ATS-REALIP-PLUGIN-ACL-WITNESS
जब get_verified_client_addr AF_UNSPEC हो तो PLUGIN को अनुपलब्ध मानें (या getter को nullptr लौटाने दें, जो TSHttpTxnVerifiedAddrGet से मेल खाता है)। फिर PEER fallback चलता है। जब subject pointer non-null हो लेकिन IP न हो तो @src_ip को न छोड़ें। allow-list पर fail closed करें।
तब तक, यदि आप realip केवल logging के लिए लोड करते हैं तो acl.subjects को PEER पर ही रहने दें। PLUGIN तब तक सेट न करें जब तक कि remap तक पहुँच सकने वाला प्रत्येक client पहले से trusted proxy न हो।
b1df7334b39a878971c376da849e8da4984918b6)plugins/experimental/realip/address_setter.ccsrc/proxy/http/remap/UrlRewrite.cc PerformACLFilteringinclude/proxy/ProxyTransaction.h get_verified_client_addr