Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
spark-rpc-stream-unauth — Apache Spark 4.2.0 - उच्च - रिमोट - फ़ाइल पढ़ना - unauth RPC StreamRequest फ़ाइल जॉइन | Kitploit
उपकरण/GitHubGitHub/abraxas/spark-rpc-stream-unauth
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणजानकारी एकत्र करनानेटवर्क सुरक्षापेनिट्रेशन टेस्टिंगपेपर और शोधलैब और अभ्यास
GitHubabraxas/spark-rpc-stream-unauth

spark-rpc-stream-unauth

Apache Spark 4.2.0 - उच्च - रिमोट - फ़ाइल पढ़ना - unauth RPC StreamRequest फ़ाइल जॉइन

रिपॉजिटरी देखें
82 दिन पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Abraxas Labs - spark-rpc-stream-unauth

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  spark-rpc-stream-unauth

spark-rpc-stream-unauth

वर्ग: विशेषाधिकार अवशेष / फ़ाइल पठन पहुँच: रिमोट

Apache Spark 4.2.0 (32f72996) - Apache Software Foundation

CVE-2020-9480 ने RPC नियंत्रण तल पर अनधिप्रमाणित RequestSubmitDriver / RegisterApplication को बंद कर दिया। AbstractAuthRpcHandler receive() और receiveStream() को नियंत्रित करता है। यह getStreamManager() को नियंत्रित नहीं करता। TransportRequestHandler अभी भी SASL से पहले StreamRequest को उस प्रबंधक पर भेजता है। NettyStreamManager.openStream बिना किसी रूट-के-अंदर-रहने जाँच के new File(dir, fname) करता है।

अनधिप्रमाणित StreamRequest classes/../../path Spark-UID फ़ाइलों को पढ़ता है। Unix निरपेक्ष चाइल्ड पंजीकृत डिर में ही रहते हैं (लैब 404)। files/ एक मैप गेट है (404)। receive() / receiveStream() 401 रहते हैं। यह 9480 RCE नहीं है।

IDअभी तक कोई CVE नहीं
वर्गविशेषाधिकार अवशेष / फ़ाइल पठन (CVE-2020-9480 का अनियंत्रित RPC डेटा तल अवशेष)
पहुँचरिमोट (spark.authenticate=true के साथ ड्राइवर RpcEnv / ESS / BlockManager पर अनधिप्रमाणित TCP)
CWECWE-862, CWE-22
CVSSउच्च: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
उत्पादApache Spark
प्रभावित4.2.0 (32f7299601108917fb01920a54e084595b7b3bf8)। ऑपरेटर-सक्षम spark.authenticate=true। होस्ट-फ़ाइल पठन के लिए एक पंजीकृत डिरेक्टरी आवश्यक है (spark.repl.class.outputDir /classes और/या Connect artifacts)।
प्रमाणीकरणStreamRequest / getStreamManager() पर कोई नहीं
लाइसेंसGNU Affero GPL v3.0
लैबकेवल 127.0.0.1

हमलावर क्या कर सकता है

एक Spark RPC पोर्ट पर TCP जिसमें spark.authenticate=true और एक पंजीकृत डिरेक्टरी है। कोई साझा रहस्य नहीं। कोई spark.network.crypto.enabled नहीं। streamId classes/../../<path> के साथ एक ट्रांसपोर्ट StreamRequest (संदेश प्रकार 6) भेजें। TransportRequestHandler.processStreamRequest कभी RpcHandler.receive को कॉल नहीं करता। यह getStreamManager().openStream को कॉल करता है। 9480 रैपर वास्तविक प्रबंधक लौटाता है। new File(dir, "../../oracle/secret") REPL/आर्टिफैक्ट रूट के बाहर कैनोनिकलाइज़ होता है और FileSegmentManagedBuffer के रूप में वापस आता है।

यह Spark UID के रूप में एक होस्ट-फ़ाइल पठन है। यह जॉब सबमिट नहीं है। यह RequestSubmitDriver नहीं है। यह शेल नहीं है।

गोपनीयता (लैब-प्रमाणित)

विधिसिंकविशेषाधिकार
अनधिप्रमाणित StreamRequest classes/../../<path>NettyStreamManager.openStream new File(dir, fname) फिर FileSegmentManagedBufferड्राइवर द्वारा खोली जा सकने वाली Spark-UID फ़ाइलें पढ़ें। लैब-प्रमाणित: opened /opt/repl-classes/../../oracle/secret, कैनोनिकल /oracle/secret, बॉडी SPARK-RPC-STREAM-UNAUTH-WITNESS, x-auth-gated=false, x-authenticated=false।
अनधिप्रमाणित StreamRequest classes/hello.txt (इन-डिर नियंत्रण)वही जॉइन, पंजीकृत डिर के अंदर रहता हैएक फ़ाइल पढ़ें जो वास्तव में /classes के अंतर्गत है। लैब-प्रमाणित 200 IN-DIR-OK, कोई विटनेस नहीं। पुष्टि करता है कि फ़ाइल सर्वर SASL के बिना भी काम करता है, यहाँ तक कि एक सीमित नाम के लिए भी।

गोपनीयता (अनुमानित)

विधिसिंकविशेषाधिकार
लाइव ESS streamId का अनधिप्रमाणित ChunkFetchRequest / StreamRequestOneForOneStreamManager.getChunk / openStream। checkAuthorization तब छोड़ देता है जब client.getClientId() == nullकिसी अन्य ऐप के इन-फ़्लाइट शफल / डिस्क-RDD बाइट्स पढ़ें। उपलब्धता: ड्रेन curChunk को आगे बढ़ाता है। एक लाइव streamId आवश्यक है (रैंडम स्टार्ट, फिर +1)। गैजेट लाइव ESS से बात नहीं करता था।
अनधिप्रमाणित MergedBlockMetaRequestAbstractAuthRpcHandler.getMergedBlockMetaReqHandler() भी अनियंत्रितजब ESS में मर्ज्ड शफल हो तो चुने गए appId के लिए मर्ज्ड-शफल चंक बिटमैप पढ़ें। वही null-clientId छूट। अभ्यास नहीं किया गया।

इस अवशेष पर बंद (लैब-प्रमाणित)

विधिसिंकबंद रहता है
अनधिप्रमाणित StreamRequest classes//oracle/secret (Unix निरपेक्ष चाइल्ड)new File(dir, "/oracle/secret")404। खोला गया पथ /opt/repl-classes/oracle/secret है। Unix File संयोजित करता है; यह पैरेंट को अनदेखा नहीं करता। यह दावा कि एक निरपेक्ष चाइल्ड रूट को गिरा देता है, Unix पर गलत है।
अनधिप्रमाणित StreamRequest files//oracle/secretfiles मैप गेट404। files/ और jars/ बेसनेम लुकअप हैं, जॉइन नहीं।
अनधिप्रमाणित receive() / OneWayMessageAbstractAuthRpcHandler.receive401 Unauthenticated call to receive(). x-auth-gated=true।
अनधिप्रमाणित receiveStream() / UploadStreamAbstractAuthRpcHandler.receiveStream401 Unauthenticated call to receiveStream().
लैब सीक्रेट के साथ प्रमाणित receiveStream()doAuthChallenge के बाद वही गेट200 receiveStream-ok। नियंत्रण कि सीक्रेट अभी भी 9480 पथ खोलता है।

लैब-प्रमाणित बनाम अनुमानित: अनधिप्रमाणित .. फ़ाइल पठन, Unix निरपेक्ष 404, files/ 404, गेटेड receive / receiveStream लैब हैं। ESS शफल ड्रेन अनुमानित है।

निकटवर्ती बंद (बढ़ा-चढ़ाकर न बताएँ):

  • CVE-2020-9480 RCE वॉक: OneWayMessage / UploadStream / RpcRequest के माध्यम से अनधिप्रमाणित RequestSubmitDriver / RegisterApplication। अभी भी साझा रहस्य की आवश्यकता है।
  • डिफ़ॉल्ट spark.authenticate=false अनधिप्रमाणित शफल और जॉब सबमिट (SECURITY.md FAQ, प्रलेखित विश्वसनीय-नेटवर्क डिफ़ॉल्ट)। यह अवशेष नहीं।
  • प्रमाणित ऐप A द्वारा ऐप B को फ़ेच करना (AppIsolationSuite / SPARK-57889 गैर-null clientId)।
  • CVE-2021-38296 हैंडशेक कुंजी रिकवरी।
  • CVE-2025-55039 मॉडरेट CTR डिफ़ॉल्ट।
  • स्टैंडअलोन master RpcEnv में आमतौर पर कोई /classes या artifacts पंजीकृत नहीं होता, इसलिए यह होस्ट-फ़ाइल वॉक ड्राइवर / REPL / Connect है, master:7077 नहीं।
  • फ़ाइल को निष्पादित नहीं करता। लिखता नहीं। spark.authenticate.secret को डंप नहीं करता।

मैंने इसे कैसे खोजा

मैंने apache/spark v4.2.0 (32f7299601108917fb01920a54e084595b7b3bf8) को पिन किया, master नहीं और 4.3 RC नहीं। अट्ठाईस स्रोत खोजें। खुले क्लस्टर पर जॉब सबमिट डिज़ाइन से है। ML मॉडल लोड निष्पादन योग्य कोड है। सार्वजनिक Jackson History RCE, UI id -Gn शेल, PySpark स्थानीय प्रतिरूपण, और 9480 रिसीव-पथ इस पील पर बंद हैं।

RPC-auth खोज 9480 का पुनः-फ़ाइल जाँच होनी थी। AuthServerBootstrap अभी भी हैंडलर को रैप करता है। अनधिप्रमाणित receive अभी भी थ्रो करता है। फिर मैंने getStreamManager() पढ़ा। तीन पंक्तियाँ। यह डेलिगेट लौटाता है। TransportRequestHandler.handle StreamRequest को receive के चारों ओर रूट करता है। डिफ़ॉल्ट StreamManager.checkAuthorization एक नो-ऑप है। SPARK-57889 ने StreamRequest पर एक स्ट्रिंग-id जाँच जोड़ी और उस null-clientId छूट को रखा जिसका उपयोग ESS "auth off" के लिए करता है, जो "इस कनेक्शन ने कभी प्रमाणीकरण नहीं किया" भी है।

SparkContext /classes को पंजीकृत करता है जब spark.repl.class.outputDir सेट होता है। Connect ArtifactManager artifacts को पंजीकृत करता है। NettyStreamManager.openStream ftype/fname को विभाजित करता है। गैर-files/jars प्रकार बिना किसी कैनोनिकल-प्रीफ़िक्स जाँच के new File(dir, fname) करते हैं।

टूल डाउनलोड करें