FlawOpen

flawopen.com/Teardowns/cve-2026-27826-mcp-atlassian-ssrf

● CVE-2026-27826 · CVSS 8.2[1], [3] · उच्च
सुरक्षा अनुसंधान · FlawOpen

CVE-2026-27826: MCP Atlassian में SSRF

CVE-2026-27826 का मूल header-आधारित SSRF दोष 0.17.0 में ठीक किया गया। बाद में मिले अलग SSRF दोष 0.22.0 में ठीक किए गए; पूरे fleet का न्यूनतम संस्करण तय करने से पहले हर सलाह जाँचें।[1], [2], [6], [8], [9], [10], [11]

💡 आसान भाषा में (ELI5)

कल्पना करें कि किसी कंपनी का डाक-कक्ष पैकेट केवल स्वीकृत कार्यालयों तक पहुँचा सकता है। कोई आगंतुक विशेष फ़ॉर्म पर दूसरा पता लिखता है और कर्मचारी बिना जाँच उसे स्वीकार कर लेते हैं। सर्वर का fetcher उसी डाक-कक्ष जैसा है: अनुरोध हेडर ने पता चुना और सर्वर ने बाहर अनुरोध भेजा। 0.17.0 का fix कनेक्शन से पहले दिए गए URL की जाँच करता है और redirect destination भी जाँचता है; ऑपरेटर अतिरिक्त रूप से allowed-domain list सेट कर सकता है।[1], [2]

इस पेज के मुख्य शब्द

Server-side request forgery (SSRF)
ऐसी खामी जिसमें अनुरोधकर्ता सर्वर के बाहर जाने वाले अनुरोध को इस तरह प्रभावित कर सकता है कि वह उस गंतव्य तक पहुँचे जहाँ एप्लिकेशन का संपर्क करने का इरादा नहीं था।[1], [4]
MCP transport
MCP client और server के बीच संचार का माध्यम। यह समस्या streamable-HTTP और SSE transports को प्रभावित करती थी; advisory में वर्णित केवल stdio उपयोग वाला deployment इससे प्रभावित नहीं था।[1]
हेडर-आधारित मल्टी-टेनेंट प्रमाणीकरण
ऐसा मोड जो हर अनुरोध में Atlassian URL और token लेकर किसी tenant के लिए API client बनाता है।[1], [2]
आउटबाउंड नेटवर्क नीति
वे नेटवर्क नियंत्रण जो सेवा के संपर्क किए जा सकने वाले गंतव्यों को सीमित करते हैं और एप्लिकेशन की URL जाँच में कमी का प्रभाव घटाते हैं।[12], [1]
अप्रत्यक्ष prompt injection
किसी टूल से लौटे अविश्वसनीय पाठ में ऐसे निर्देश हो सकते हैं जो मॉडल को प्रभावित करें। इस CVE के advisory में हमलावर-नियंत्रित सेवा प्रतिक्रियाओं के टूल परिणामों में आने का उल्लेख है; यह SSRF से अलग प्रभाव-पथ है।[1], [7]
बाद के SSRF सुधार
CVE-2026-27826 की मूल सलाह में 0.17.0 को सुधारा संस्करण बताया गया है। बाद में अनुरक्षक ने सुधार के चार अलग-अलग अधूरे रास्तों को CVE-2026-77242, CVE-2026-77267, CVE-2026-77249 और CVE-2026-77274 के रूप में दर्ज किया; हर सलाह में 0.22.0 को सुधारा संस्करण बताया गया है। ये अलग CVE हैं, CVE-2026-27826 की प्रभावित सीमा का विस्तार नहीं। पूरे fleet का न्यूनतम संस्करण चुनने से पहले बाद की सलाहें भी देखें।[8], [9], [10], [11]

फ्रेमवर्क मैपिंग

मूल कारण विश्लेषण (Root Cause)

प्रभावित HTTP पथ में server अनुरोध से X-Atlassian-Jira-Url या X-Atlassian-Confluence-Url पढ़कर उस मान को fetcher बनाने वाली JiraConfig या ConfluenceConfig में भेजता था। कमज़ोर हेडर-आधारित प्रमाणीकरण शाखा में fetcher की पहली कॉल से पहले गंतव्य की तुलना server पर निर्धारित tenant URL या स्वीकृत गंतव्य नीति से नहीं होती थी। maintainer advisory अनुरोध middleware और dependency provider पथ को कारण बताती है, किसी एक MCP tool handler को नहीं। इसके लिए प्रभावित HTTP transport और हेडर प्रमाणीकरण की शर्तें आवश्यक हैं; इसे हर MCP deployment पर लागू न मानें।[1], [2]

हमले का चरण-दर-चरण प्रवाह

चरण 1

HTTP transport तक पहुँच

Deployment streamable-HTTP या SSE का उपयोग करता है और MCP endpoint ऐसे अनुरोधकर्ता के लिए खुला है जो उस तक पहुँच सकता है।[1], [2]

चरण 2

हेडर सेवा URL चुनते हैं

प्रभावित हेडर प्रमाणीकरण पथ में Jira या Confluence URL और token headers मौजूद रहते हैं, जबकि वैकल्पिक पथ का अपेक्षित Authorization header नहीं होता।[1], [2]

चरण 3

Middleware fetcher बनाता है

Middleware प्राप्त URL को सहेजता है और dependency provider अपेक्षित गंतव्य सीमा लागू किए बिना उससे Atlassian fetcher कॉन्फ़िगर करता है।[1], [2]

चरण 4

Server बाहर अनुरोध भेजता है

Fetcher आरंभ होने पर अनुरोधकर्ता द्वारा चुने गए गंतव्य को अनुरोध भेजा जाता है। नेटवर्क और उत्तर के आधार पर इससे आंतरिक सेवाएँ उजागर हो सकती हैं या हमलावर-नियंत्रित सामग्री tool results में जा सकती है।[1], [2]

सोर्स कोड: कमज़ोर बनाम सुरक्षित कार्यान्वयन

कमज़ोर code excerpt में request header का URL server का outbound destination चुनता है। Upstream 0.17.0 patch इस header-आधारित tenant mode को server-side tenant registry से नहीं बदलता: यह fetcher बनाने से पहले ASGI middleware में दिए गए Jira या Confluence URL को validate करता है, फिर redirect destination जाँचने के लिए response hook जोड़ता है। सुरक्षित excerpt इन दोनों upstream controls को दिखाता है; validator implementation इसमें शामिल नहीं है। Server-side tenant registry इससे मजबूत वैकल्पिक architecture है, इस patch का हिस्सा नहीं। 0.22.0 के बाद के advisories अलग residual paths दर्ज करते हैं, इसलिए उन्हें देखे बिना 0.17.0 को पूरे fleet का minimum version न मानें। DNS rebinding रोकने के लिए connection के समय भी DNS validation लागू होनी चाहिए; hostname को एक बार resolve करना SSRF boundary को पूरी तरह बंद नहीं करता।[1], [2]

सोर्स अंश: Upstream middleware और fetcher patch का अंश (Jira पथ; Confluence में भी समान जाँच है)।

कमज़ोर कार्यान्वयन
header_jira_fetcher = JiraFetcher(config=header_config)
current_user_id = header_jira_fetcher.get_current_user_account_id()
सुरक्षित और सुदृढ़ फ़िक्स
ssrf_error = validate_url_for_ssrf(jira_url_str)
if ssrf_error:
    scope["state"]["auth_validation_error"] = (
        f"Forbidden: Invalid Jira URL - {ssrf_error}"
    )
    return

header_jira_fetcher = JiraFetcher(config=header_config)
header_jira_fetcher.jira._session.hooks["response"].append(
    _make_ssrf_safe_hook(validate_url_for_ssrf)
)
current_user_id = header_jira_fetcher.get_current_user_account_id()

इंजीनियरिंग और सिस्टम सुरक्षा चेकलिस्ट

स्रोत