flawopen.com/Teardowns/cve-2026-77244-mcp-atlassian-http-auth-bypass
CVE-2026-77244: Unauthentifizierter HTTP-Toolzugriff bei mcp-atlassian
CVE-2026-77244 ermöglichte nicht authentifizierten Aufrufern den Zugriff auf die HTTP-Toolhandler des Communityprojekts mcp-atlassian, die auf Jira- oder Confluence-Zugangsdaten aus der Betreiberumgebung zurückgreifen konnten. Der Hauptfix kam mit 0.22.0; SSE-Nutzer benötigen wegen eines separaten Transportfehlers 0.23.1 oder neuer.[1], [4], [5], [6]
Der Empfang muss den Besucherausweis prüfen, bevor er eine Tür für Mitarbeitende öffnet. Im alten Ablauf verlieh der Empfang ohne Ausweis seinen Generalschlüssel. Der Fehler verband zwei fehlende Prüfungen: Eine HTTP-Anfrage konnte die Tools ohne verifizierte Nutzeridentität erreichen, und diese konnten die gemeinsam genutzten Atlassian-Zugangsdaten des Betreibers verwenden. Der Fix weist nicht authentifizierte HTTP-Anfragen ab und macht diesen Rückgriff auf Zugangsdaten zustimmungspflichtig.[1], [3]
Kernkonzepte & Begriffe
MCP-Transport- Kanal, über den Model-Context-Protocol-Anfragen zwischen Client und Server laufen. Diese CVE betrifft den HTTP-Transport von mcp-atlassian; stdio ist laut Advisory nicht betroffen.[1], [4]
Globale Zugangsdaten-Rückfallebene- Jira- oder Confluence-Zugangsdaten aus der Serverumgebung werden verwendet, wenn eine Anfrage keine eigene Nutzeridentität hat. Bei remote erreichbarem HTTP kann eine anonyme Anfrage so als Betreiber handeln.[1], [4]
Authentifizierungsgrenze- Serverseitige Prüfung, die eine Identität feststellt, bevor eine Anfrage geschützte Toolhandler erreicht. Netzwerkerreichbarkeit, ein nicht leerer Token oder eine angenommene Proxy-Vertrauensstellung beweisen allein keine Identität.[1], [7]
CWE-287- Fehlerhafte Authentifizierung: Die Anwendung weist die behauptete Identität vor der Zugriffsgewährung nicht ausreichend nach.[1], [7]
Framework-Zuordnungen
Ursachenanalyse
Das GitHub-Sicherheits-Advisory beschreibt eine Angriffskette im Communityprojekt mcp-atlassian, keine Schwachstelle eines Atlassian-Produkts. Vor Version 0.22.0 konnte die HTTP-Middleware eine Anfrage ohne Nutzeridentität an Toolhandler weiterreichen. Wenn der Betrieb Zugangsdaten des Betreibers aus Umgebungsvariablen verwendete, konnten JiraFetcher oder ConfluenceFetcher auf diese globalen Zugangsdaten zurückfallen. Das Advisory dokumentiert außerdem einen Verifier für opake Token, der jeden nicht leeren String akzeptierte; das beweist keine echte Identität des Aufrufers. Die Grenze muss Identität und Zugangsdatenwahl gemeinsam schützen: Ein fehlender oder ungeprüfter Nutzer darf nie die privilegierten Zugangsdaten des Betreibers erben. Der Fix 0.22.0 liefert für nicht authentifizierte streamable-HTTP-MCP-POSTs HTTP 401 und sperrt den globalen Rückfall im HTTP-Kontext, sofern nicht ALLOW_GLOBAL_CRED_FALLBACK=true ausdrücklich für einen Einzelbenutzerbetrieb gesetzt ist. stdio bleibt unverändert. Separat beschreibt GHSA-5j8j-256g-vvp5 einen SSE-Pfadabgleichfehler, der in 0.23.1 behoben wurde; er ist nicht CVE-2026-77244. Aktualisieren Sie SSE-Installationen auf 0.23.1 oder neuer und nehmen Sie nicht an, dass der CVE-Fix in 0.22.0 auch dieses andere Advisory behebt. Das Advisory bestätigt keine Ausnutzung; dieser Artikel behauptet keinen realen Einbruch. Das CVE-Advisory führt CWE-287, CWE-303 und CWE-862 für die Authentifizierungs-, Tokenprüfungs- und Autorisierungsfehler dieser Kette auf. Das Advisory nennt crazydude123 als meldende Person.[1], [3], [4], [5], [6], [7], [9], [10]
Schritt-für-Schritt Angriffsablauf
Ein HTTP-MCP-Endpunkt ist erreichbar
Der Betrieb führt den Communityserver mcp-atlassian über HTTP aus und eine nicht authentifizierte Partei kann den Transport erreichen. Nur-stdio-Installationen liegen außerhalb des von dieser CVE betroffenen Pfads.[1]
Die Anfrage erreicht ein Tool ohne verifizierten Nutzer
Vor 0.22.0 konnte eine HTTP-Anfrage ohne eigene Identität die Middleware passieren, statt an der Transportgrenze abgewiesen zu werden. Das Advisory weist außerdem darauf hin, dass ein nicht leerer String nicht unabhängig als Identität verifiziert wurde.[1], [3]
Ein Tool wählt gemeinsam genutzte Betreiber-Zugangsdaten
Fehlt eine eigene Identität und liegen Jira- oder Confluence-Zugangsdaten in der Serverumgebung, kann der Fetcher globale Zugangsdaten verwenden. Die Anfrage kann dann die aktivierten Toolrechte des Betreibers ausüben; die genaue Wirkung hängt von Berechtigungen und Konfiguration ab.[1], [3]
An der Transportgrenze abweisen und bei der Zugangsdatenwahl geschlossen scheitern
Version 0.22.0 liefert für nicht authentifizierte streamable-HTTP-Anfragen HTTP 401 und blockiert den globalen Rückfall im HTTP-Kontext ohne ausdrückliche Freigabe. Für SSE ist 0.23.1 oder neuer nötig, da dort ein separater Pfadfehler behoben wurde.[1], [4], [5], [6]
Quellcode: Verwundbar vs. Sicher
Verdichtete Darstellung des Ablaufs, keine wörtliche Kopie der vollständigen Funktionen. Der Upstream-Fix fügt HTTP 401 an der Transportgrenze und eine zweite Sperre vor dem globalen Fetcher im HTTP-Kontext hinzu; beide verlangen die ausdrückliche Option ALLOW_GLOBAL_CRED_FALLBACK.[1], [3], [4]
# Vereinfachte Darstellung des betroffenen Kontrollflusses.
async def handle_request(scope, ctx):
user_identity = scope.get("state", {}).get("user_atlassian_auth_type")
# Eine fehlende Identität wurde an der HTTP-Grenze nicht abgewiesen.
return await call_tool_handler(ctx, user_identity=user_identity)
def get_fetcher(user_identity, global_config):
if user_identity:
return fetcher_for_user(user_identity)
# Verwendet ersatzweise die in der Umgebung konfigurierten Betreiber-Zugangsdaten.
return fetcher_from_config(global_config)
# Gezielte Darstellung der in Version 0.22.0 zusammengeführten Schutzmaßnahmen.
async def handle_request(scope, ctx):
user_identity = scope.get("state", {}).get("user_atlassian_auth_type")
if is_mcp_http_post(scope) and not user_identity and not allow_global_fallback():
return http_401("Authentication required")
return await call_tool_handler(ctx, user_identity=user_identity)
def get_fetcher(user_identity, global_config, *, in_http_context):
if user_identity:
return fetcher_for_user(user_identity)
if in_http_context and not allow_global_fallback():
raise PermissionError("Refusing operator credentials for an unauthenticated HTTP request")
return fetcher_from_config(global_config)
Checkliste für Engineering & Systemsicherheit
- ✓Aktualisieren Sie
mcp-atlassianvon Versionen vor 0.22.0 mindestens auf 0.22.0 fürCVE-2026-77244; bei--transport sseaktualisieren Sie wegen GHSA-5j8j-256g-vvp5 auf 0.23.1 oder neuer.[1], [4], [5], [6] - ✓Ermitteln Sie alle HTTP-Expositionswege: direkte Bindung, Container-Port, Ingress, Load Balancer, VPN oder Entwicklungstunnel. Beschränken Sie den Zugriff während der Aktualisierung.[1]
- ✓Lassen Sie
ALLOW_GLOBAL_CRED_FALLBACKbei Multi-User- und remote erreichbaren HTTP-Installationen weg oder auf false. Aktivieren Sie es nur bewusst für Einzelbenutzerbetrieb mit dokumentierter Grenze.[1], [4] - ✓Verlangen und verifizieren Sie vor Toolaufrufen eine echte Nutzeridentität. Ein nicht leerer Token, Netzwerkstandort oder Proxy-Header beweist ohne explizite Prüfung keine Identität.[1], [7]
- ✓Ergänzen Sie Tests, die HTTP 401 vor jedem Toolhandler ohne Identität sowie die Ablehnung von Umgebungszugangsdaten durch die HTTP-Fetcherauswahl ohne Opt-in bestätigen.[3], [4]
- ✓Testen Sie streamable HTTP und SSE getrennt: Der SSE-Authentifizierungsfehler ist ein separates Advisory und wurde in 0.23.1 behoben, nicht allein durch den CVE-Fix 0.22.0.[5], [6]
- ✓Wenn eine verwundbare Instanz für nicht vertrauenswürdige Aufrufer erreichbar war, prüfen Sie Jira- und Confluence-Aktivitäten des Dienstkontos und wechseln Sie dessen Zugangsdaten, falls eine Offenlegung plausibel ist.[1]
Quellen
- GitHub-Sicherheits-Advisory GHSA-wrhw-j3f9-8vc6 — CVE-2026-77244
- CVE.org-Eintrag CVE-2026-77244
- Upstream-PR #1448 und Commit f500f5b
- mcp-atlassian-Version v0.22.0
- Separates SSE-Advisory GHSA-5j8j-256g-vvp5
- mcp-atlassian-Version v0.23.1 (SSE-Authentifizierungsfix)
- MITRE CWE-287: Improper Authentication
- ThreatFrontier-Bericht vom 2. Oktober 2026
- MITRE CWE-303: Incorrect Implementation of Authentication Algorithm
- MITRE CWE-862: Missing Authorization