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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-46558 — प्लेन का V2 एसेट सबसिस्टम उपयुक्त सदस्यता जांच लागू किए बिना workspace slugs और asset UUIDs पर भरोसा करता था, जिससे एक प्रमाणित उपयोगकर्ता अन्य workspaces में एसेट्स को पढ़, कॉपी, हटा और ओवरराइट कर सकता था। | Kitploit
उपकरण/GitHubGitHub/0xmrma/cve-2026-46558
भेद्यता विश्लेषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगपेपर और शोधलर्निंग और शिक्षाचयनित संसाधन
GitHub0xmrma/cve-2026-46558

CVE-2026-46558

प्लेन का V2 एसेट सबसिस्टम उपयुक्त सदस्यता जांच लागू किए बिना workspace slugs और asset UUIDs पर भरोसा करता था, जिससे एक प्रमाणित उपयोगकर्ता अन्य workspaces में एसेट्स को पढ़, कॉपी, हटा और ओवरराइट कर सकता था।

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

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

सभी देखें →

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

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

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

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

CVE-2026-46558

प्लेन के V2 एसेट सबसिस्टम ने सही सदस्यता जाँच लागू किए बिना विश्वसनीय वर्कस्पेस स्लग और एसेट UUID पर भरोसा किया, जिससे एक प्रमाणित उपयोगकर्ता दूसरे वर्कस्पेस में एसेट्स को पढ़, कॉपी, हटा और अधिलेखित कर सकता था।

परिचय

मुझे यह समस्या प्लेन, ओपन-सोर्स प्रोजेक्ट मैनेजमेंट प्लेटफ़ॉर्म, की समीक्षा करते समय मिली, जिसमें एक बहुत ही विशिष्ट प्रश्न था:

क्या V2 एसेट एंडपॉइंट वास्तव में वर्कस्पेस सीमाएँ लागू करते हैं, या वे हमलावर द्वारा प्रदान किए गए वर्कस्पेस स्लग और एसेट आईडी पर बहुत अधिक भरोसा करते हैं?

इस मामले में, उत्तर नहीं था।

प्लेन के V2 एसेट सबसिस्टम ने दो संबंधित प्राधिकरण दोष उजागर किए जिन्होंने किसी भी प्रमाणित उपयोगकर्ता के लिए वर्कस्पेस अलगाव को तोड़ दिया:

  • वर्कस्पेस-स्तरीय एसेट एंडपॉइंट ने एसेट संचालन से पहले लक्ष्य-वर्कस्पेस सदस्यता लागू नहीं की
  • डुप्लिकेट-एसेट्स प्रवाह ने केवल गंतव्य वर्कस्पेस को प्राधिकृत किया और स्रोत-वर्कस्पेस पहुँच की जाँच किए बिना स्रोत एसेट UUID पर भरोसा किया

इसने क्रॉस-वर्कस्पेस एसेट दुरुपयोग संभव बना दिया।

मेरे मान्य किए गए PoC में, वर्कस्पेस ब्रावो में एक सामान्य उपयोगकर्ता सक्षम था:

  • Alpha के निजी अपलोड किए गए एसेट को डाउनलोड करना
  • उस एसेट को ब्रावो के अपने वर्कस्पेस में डुप्लिकेट करना
  • Alpha के मूल एसेट को हटाना
  • Alpha के वर्कस्पेस लोगो को हमलावर-नियंत्रित सामग्री से अधिलेखित करना

उस समस्या को बाद में CVE-2026-46558 निर्दिष्ट किया गया।

प्लेन: GitHub पर प्लेन
CVE: CVE-2026-46558

इसने प्लेन को प्रभावित किया, जो अपनी आधिकारिक साइट पर दुनिया भर में 50,000+ टीमों द्वारा उपयोग किए जाने के रूप में प्रस्तुत किया जाता है। प्लेन मजबूत ओपन-सोर्स अपनाने पर भी प्रकाश डालता है, जिसमें 46,000+ GitHub स्टार और 1,000,000+ Docker पुल शामिल हैं, और Tencent, Accenture, Microsoft, और Amazon जैसे संगठनों को प्रदर्शित करता है।

photo0

आक्रमण श्रृंखला

वर्कस्पेस B में प्रमाणित हमलावर → वर्कस्पेस-स्तरीय V2 एसेट रूट उचित सदस्यता जाँच के बिना लक्ष्य वर्कस्पेस स्लग और एसेट UUID पर भरोसा करता है → वर्कस्पेस A एसेट्स के विरुद्ध प्रिसाइन्ड रीड/पैच/डिलीट + डुप्लिकेट-एसेट्स स्रोत लुकअप अपलोड किए गए स्रोत UUID पर भरोसा करता है → क्रॉस-वर्कस्पेस प्रकटीकरण, प्रतिलिपि, विलोपन, और ब्रांडिंग अधिलेखन


प्लेन क्या करता है

प्लेन एक ओपन-सोर्स प्रोजेक्ट मैनेजमेंट प्लेटफ़ॉर्म है जिसका उपयोग प्रबंधन के लिए किया जाता है:

  • कार्य
  • मुद्दे
  • स्प्रिंट
  • दस्तावेज़
  • ट्राइएज
  • वर्कस्पेस-स्तरीय ब्रांडिंग और एसेट्स

इसका मतलब है कि इसका एसेट सबसिस्टम एक वास्तविक विश्वास सीमा पर बैठता है।

यहाँ महत्वपूर्ण प्रश्न यह नहीं था कि क्या प्लेन अपलोड का समर्थन करता है।

असली प्रश्न था:

क्या प्लेन वर्कस्पेस अलगाव लागू करता है जब एक प्रमाणित उपयोगकर्ता दूसरे वर्कस्पेस के स्वामित्व वाले एसेट्स को संदर्भित करता है?

इस मामले में, ऐसा नहीं हुआ।


यह बग क्यों देखने लायक था

बहु-किरायेदार अनुप्रयोग समीक्षाएँ अक्सर पहले स्पष्ट व्यवस्थापक एंडपॉइंट या प्रत्यक्ष सेटिंग्स अपडेट पर ध्यान केंद्रित करती हैं।

यह एक बहुत ही सामान्य और वास्तविक बग वर्ग को अनदेखा करता है:

साझा फ़ाइल या एसेट सबसिस्टम के माध्यम से द्वितीयक वस्तु पहुँच

एसेट सिस्टम गलत होना आसान है क्योंकि वे अक्सर संयोजित करते हैं:

  • उपयोगकर्ता-नियंत्रित पहचानकर्ता
  • भंडारण-स्तरीय अप्रत्यक्षता
  • मेटाडेटा-संचालित वस्तु लिंकिंग
  • प्रिसाइन्ड URL पीढ़ी
  • साझा रूट के पीछे कई इकाई प्रकार

यह ठीक वही जगह है जहाँ किरायेदार सीमाएँ चुपचाप कमजोर हो जाती हैं।

यह समस्या भंडारण भ्रष्टाचार के बारे में नहीं थी। यह S3 के बारे में ही नहीं थी। यह अपलोड MIME हैंडलिंग के बारे में नहीं थी।

यह एक प्राधिकरण सीमा विफलता थी:

  • हमलावर-नियंत्रित पहचानकर्ताओं ने सीमा पार की
  • सर्वर ने क्रॉस-वर्कस्पेस वस्तुओं को हल किया
  • प्राधिकरण अधूरा या अनुपस्थित था
  • विशेषाधिकार प्राप्त एसेट क्रियाएँ अभी भी सफल हुईं

यह एक वास्तविक कमजोरी पैदा करने के लिए पर्याप्त है।


वह सीमा जिस पर मैंने ध्यान केंद्रित किया

मैंने प्लेन में बेतरतीब ढंग से यादृच्छिक एंडपॉइंट फ़ज़ करके या बिना किसी मॉडल के UUID का अनुमान लगाकर संपर्क नहीं किया।

सबसे मजबूत दृष्टिकोण पहले सबसे आशाजनक अलगाव सीमा की पहचान करना था।

प्लेन के लिए, वह था V2 एसेट सबसिस्टम।

क्यों?

क्योंकि एक साझा एसेट सिस्टम तब खतरनाक हो जाता है जब:

  • कई वर्कस्पेस मौजूद हों
  • अपलोड की गई वस्तुओं को UUID द्वारा संदर्भित किया जाता है
  • वर्कस्पेस स्लग हमलावर-नियंत्रित रूट इनपुट हों
  • एप्लिकेशन बाद में सफल लुकअप को प्रिसाइन्ड डाउनलोड या म्यूटेशन पथों में बदल दे

यह जाँच करने के लिए सही सीमा थी।

और यह ठीक वही जगह थी जहाँ बग रहता था।


मूल कारण

यह वास्तव में एक ही सबसिस्टम में दो संबंधित प्राधिकरण विफलताएँ थीं।

मूल कारण 1: वर्कस्पेस एसेट रूट में सदस्यता प्रवर्तन गायब

वर्कस्पेस-स्तरीय एसेट रूट इसके माध्यम से उजागर हुए:

  • apps/api/plane/app/urls/asset.py:50-56

कमजोर हैंडलर इसमें थे:

  • apps/api/plane/app/views/asset/v2.py:314
  • apps/api/plane/app/views/asset/v2.py:379
  • apps/api/plane/app/views/asset/v2.py:400
  • apps/api/plane/app/views/asset/v2.py:409

समस्या सरल थी।

WorkspaceFileAssetEndpoint ने एक वर्कस्पेस स्लग और एसेट UUID स्वीकार किया, फिर सीधे वस्तुओं को हल किया जैसे:

workspace = Workspace.objects.get(slug=slug)

और:

asset = FileAsset.objects.get(id=asset_id, workspace__slug=slug)

बिना पहले यह लागू किए कि कॉल करने वाला वास्तव में उस लक्ष्य वर्कस्पेस का एक अधिकृत सदस्य था।

इसका मतलब था कि एंडपॉइंट अभी भी कर सकता था:

  • एसेट्स बनाना
  • एसेट्स को अंतिम रूप देना
  • एसेट्स को हटाना
  • प्रिसाइन्ड डाउनलोड URL वापस करना

दूसरे वर्कस्पेस की वस्तुओं के लिए।

मूल कारण 2: डुप्लिकेट-एसेट्स ने स्रोत एसेट UUID पर भरोसा किया

डुप्लिकेट-एसेट्स रूट इसके माध्यम से मैप किया गया:

  • apps/api/plane/app/urls/asset.py:100-101

कमजोर तर्क इसमें था:

  • apps/api/plane/app/views/asset/v2.py:736-780

गंतव्य वर्कस्पेस में एक प्राधिकरण डेकोरेटर था। लेकिन स्रोत एसेट लुकअप में नहीं था।

स्रोत वस्तु को इसके साथ लोड किया गया:

original_asset = FileAsset.objects.filter(id=asset_id, is_uploaded=True).first()

इसका मतलब था कि कॉल करने वाले को केवल चाहिए था:

  • गंतव्य वर्कस्पेस तक मान्य पहुँच
  • एक स्रोत एसेट UUID जो अपलोड किया गया था

कोई जाँच नहीं थी कि कॉल करने वाला उस स्रोत वर्कस्पेस से संबंधित है जो वास्तव में उस एसेट का मालिक था।

यह पूरा दूसरा बग है।


यह सिर्फ खराब एक्सेस लॉजिक नहीं, बल्कि एक सुरक्षा मुद्दा क्यों है

महत्वपूर्ण अंतर क्रॉस-वर्कस्पेस प्रभाव है।

बहुत सारे प्राधिकरण बग को कम करके आंका जाता है:

"इसके लिए अभी भी लॉगिन आवश्यक है"

यह बिंदु से चूक जाता है।

असली सवाल यह नहीं है:

"क्या कॉल करने वाला प्रमाणित है?"

असली सवाल है:

"क्या कॉल करने वाला उस विशिष्ट वर्कस्पेस और विशिष्ट एसेट के लिए अधिकृत है जिस पर कार्रवाई की जा रही है?"

प्लेन में, वह उत्तर नहीं था।

यह वही है जो सामान्य वस्तु हैंडलिंग जैसा दिख सकता है, उसे एक वास्तविक बहु-किरायेदार सुरक्षा मुद्दे में बदल देता है।

इसके बीच एक स्पष्ट अंतर है:

  • अपने स्वयं के वर्कस्पेस के अंदर प्रमाणित पहुँच
  • और प्रमाणित पहुँच जो किसी अन्य किरायेदार की सीमा पार करती है

यह मुद्दा दूसरे मामले में दृढ़ता से था।


PoC

मैंने स्थानीय रूप से प्लेन कम्युनिटी एडिशन 1.2.3 के विरुद्ध दो असंबंधित वर्कस्पेस में दो सामान्य उपयोगकर्ताओं का उपयोग करके समस्या को मान्य किया:

  • वर्कस्पेस alpha-20260323072017 में Alpha
  • वर्कस्पेस bravo-20260323072017 में Bravo

मैंने Alpha का उपयोग एक प्रोजेक्ट इश्यू में एक वैध निजी अपलोड किया गया एसेट बनाने के लिए किया।

मेरे रन में मान्य निजी एसेट ID थी:

6ed6ed62-d1b2-4399-8220-336c01b7d72c

केस 1: दूसरे वर्कस्पेस से अनधिकृत पढ़ना

Bravo के रूप में, मैंने अनुरोध किया:

GET /api/assets/v2/workspaces/alpha-20260323072017/6ed6ed62-d1b2-4399-8220-336c01b7d72c/

प्लेन ने लौटाया:

HTTP/1.1 302 Found

Alpha के एसेट के लिए एक प्रिसाइन्ड डाउनलोड URL के साथ।

डाउनलोड की गई फ़ाइल हैश Alpha के मूल निजी एसेट से बिल्कुल मेल खाती है:

original:          0d4d070f550ba59ba6b30bee62343cf68ea221af7034f131f72f6409cf5a598e
unauthorized read: 0d4d070f550ba59ba6b30bee62343cf68ea221af7034f131f72f6409cf5a598e

इसने साबित किया कि रीड पथ वर्कस्पेस सीमाओं को सफलतापूर्वक पार कर गया।


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