
Apache Traffic Server 10.2.0 - उच्च - स्थानीय - विशेषाधिकार अवशेष - JSON-RPC unix सॉकेट अप्रतिबंधित मोड 0777
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · ats-jsonrpc-unrestricted
वर्ग: विशेषाधिकार अवशेष (recon) पहुँच: स्थानीय
Apache Traffic Server 10.2.0 (b1df7334) - Apache Software Foundation
JSON-RPC unix socket डिफ़ॉल्ट रूप से restricted_api false पर सेट होता है। शिप किया गया jsonrpc.yaml केवल टिप्पणियाँ हैं, इसलिए C++ initializer जीत जाता है। Linux SO_PEERCRED bind मोड 0777 है। कोई भी स्थानीय uid जो rundir inode तक पहुँच सकता है, बिना टोकन के कनेक्ट होता है और लाइव रिकॉर्ड (SSL key paths सहित) तथा connection-tracker 5-tuples डंप करता है। लेखन SO_PEERCRED (euid == 0 या ATS euid) के पीछे रहता है। डॉक्स तालिका true / 0700 कहती है; कोड और टिप्पणी किया गया उदाहरण false / 0777 हैं।
यह CVE-2026-58159 (HTTP UDS listener ACL) नहीं है। कोई TCP/HTTP JSON-RPC नहीं है। विदेशी uid के लिए plugin load और config write अस्वीकृत रहते हैं।
| ID | अभी तक कोई CVE नहीं |
| वर्ग | विशेषाधिकार अवशेष (recon) |
| पहुँच | स्थानीय (ATS होस्ट पर अपरिविलेज्ड uid) |
| CWE | CWE-276, CWE-284 |
| CVSS | उच्च: 7.1 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N |
| उत्पाद | Apache Traffic Server |
| प्रभावित | 10.2.0 (b1df7334b39a878971c376da849e8da4984918b6) डिफ़ॉल्ट JSON-RPC unix |
| प्रमाणीकरण | अप्रतिबंधित विधियों पर कोई नहीं। rundir की स्थानीय फ़ाइलसिस्टम पहुँच। |
| लाइसेंस | GNU Affero GPL v3.0 |
| लैब | केवल 127.0.0.1:18720। इमेज ats-10.2.0-lab:local। |
मैंने टैग 10.2.0, कमिट b1df7334b39a878971c376da849e8da4984918b6 पिन किया। सोर्स-बिल्ट इमेज।
ATS होस्ट पर स्थानीय uid (root नहीं, ATS euid नहीं)। RPC सक्षम। JSON-RPC unix चालू। सामान्य rundir 0755 ATS-स्वामित्व वाला। सॉकेट $RUNTIMEDIR/jsonrpc20.sock।
| विधि | सिंक | विशेषाधिकार |
|---|---|---|
0777 jsonrpc20.sock पर uid 10000 के रूप में admin_lookup_records | अप्रतिबंधित JSON-RPC (RpcAdminPubHandlers.cc) | Recon (लैब-प्रमाणित): लाइव proxy.config.proxy_name=ATS-JSONRPC-UNRESTRICTED-WITNESS, SSL key paths etc/trafficserver, proxy.config.admin.user_id=nobody। key bytes रिकॉर्ड में नहीं हैं। |
get_connection_tracker_info | वही सॉकेट | Recon (लैब-प्रमाणित): inbound/outbound tracker तालिकाएँ (बिना लोड के खाली)। |
get_server_status, admin_host_get_status, admin_storage_get_device_status, filemanager.get_files_registry | वही अप्रतिबंधित बिट | Recon (अनुमानित): drain स्थिति, host markdown, cache डिस्क पथ, निरपेक्ष config पथ। |
uid 10000 के रूप में admin_config_set_records | SO_PEERCRED प्रतिबंधित | Integrity: बंद (लैब-प्रमाणित)। JSON-RPC त्रुटि 10 Unauthorized, Denied privileged API access for uid=10000। witness रिकॉर्ड अपरिवर्तित। |
| drain / cache clear / storage offline | प्रतिबंधित विधियाँ | विदेशी uid के लिए Availability: बंद (स्रोत)। |
लैब-प्रमाणित बनाम अनुमानित: 0777 सॉकेट, proxy_name / SSL key paths का uid 10000 lookup, tracker तालिकाएँ, लेखन अस्वीकृत, TCP JSON-RPC अनुपस्थित: लैब। अन्य अप्रतिबंधित पठन विधियाँ: उसी गेट से अनुमानित।
आवश्यक: ATS होस्ट पर स्थानीय uid। JSON-RPC unix चालू (डिफ़ॉल्ट)। Linux SO_PEERCRED ताकि अप्रतिबंधित bind 0777 हो। rundir पहुँच योग्य (सामान्य 0755)।
| सतह | लैब |
|---|---|
uid 10000 के रूप में admin_config_set_records | अनधिकृत; witness रिकॉर्ड अपरिवर्तित |
| TCP / HTTP JSON-RPC | अनुपस्थित; केवल HTTP 8080 / 18080 |
RPC के माध्यम से प्लगइन .so लोड | SO_PEERCRED |
समान-uid traffic_ctl | इच्छित व्यवस्थापक |
जब restricted_api true हो तो परमाणु umask+bind | 0700, CHANGELOG फ़िक्स रोका गया |
| CVE-2026-58159 HTTP UDS श्रोता ACL | यह सॉकेट नहीं |
RPC तब तक सक्रिय रहता है जब तक rpc.enabled: false न हो। केवल CommType::UNIX मौजूद है। शिप किया गया jsonrpc.yaml.default केवल टिप्पणियाँ है। YAML डिकोड केवल तब restrictedAccessApi लिखता है जब कुंजी मौजूद हो। अन्यथा:
bool restrictedAccessApi{
NON_RESTRICTED_API}; // ... 0700(default) or 0777
NON_RESTRICTED_API false है (IPCSocketServer.h:128-129)। टिप्पणी कहती है कि 0700 डिफ़ॉल्ट है। इनिशियलाइज़र unrestricted स्थिरांक है।
Bind (IPCSocketServer.cc:310-342): restricted_api false के साथ SO_PEERCRED -> मोड 0777। डॉक्स तालिका का अंतिम वाक्य कहता है कि डिफ़ॉल्ट रूप से true है। कोड और टिप्पणी किया गया उदाहरण false का पालन करते हैं।
गलत मोड़: डॉक्स के true को डिफ़ॉल्ट मानना; इसे RCE कहना (writes अस्वीकृत); CVE-2026-58159 को mgmt JSON-RPC को कवर करने वाला मानना; पुराने traffic_manager XMLRPC के TCP अवशेष की खोज करना।
थिएटर: uid 10000 के रूप में एक write। oracle एक रोपित proxy_name और SSL key path स्ट्रिंग्स है, फिर एक अस्वीकृत सेट।
python3 ats-jsonrpc-unrestricted-Abraxas-Labs.py
or
cd lab
./run.sh
Loopback 127.0.0.1:18720. Compose प्रोजेक्ट ats-jsonrpc-unrestricted. इमेज ats-10.2.0-lab:local. लैब uid 10000. सॉकेट मोड 0777. विटनेस ATS-JSONRPC-UNRESTRICTED-WITNESS. अंतिम पंक्ति:
SUCCESS ats-jsonrpc-unrestricted how=uds-0777-unrestricted-jsonrpc uid=10000 sock-mode=0777 lookup-proxy_name=ATS-JSONRPC-UNRESTRICTED-WITNESS ssl-key-path=etc/trafficserver tracker=ok write=unauthorized tcp-jsonrpc=absent ATS-JSONRPC-UNRESTRICTED-WITNESS
restricted_api को डिफ़ॉल्ट रूप से true पर सेट करें और 0700 पर बाइंड करें, जो दस्तावेज़ों की तालिका से मेल खाता है। टिप्पणी किए गए jsonrpc.yaml उदाहरण को संरेखित करें। अप्रतिबंधित पढ़ने की सुविधा को स्पष्ट ऑप्ट-इन के पीछे रखें। लिखने के लिए पहले से ही SO_PEERCRED आवश्यक है; उन्हें खुला न छोड़ें।
b1df7334b39a878971c376da849e8da4984918b6)IPCSocketServer.h restrictedAccessApiIPCSocketServer.cc बाइंड मोड 0777RpcAdminPubHandlers.ccjsonrpc.yaml.default