Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-46558 — Plane’s V2 asset subsystem vertraute Workspace-Slugs und Asset-UUIDs ohne die Durchsetzung der korrekten Mitgliedschaftsprüfungen, was einem authentifizierten Benutzer erlaubte, Assets in anderen Workspaces zu lesen, zu kopieren, zu löschen und zu überschreiben. | Kitploit
Tools/GitHubGitHub/0xmrma/cve-2026-46558
SchwachstellenanalyseWebanwendungs-ExploitationPenetrationstestsPapers & ForschungLernen & BildungKuratierte Ressourcen
GitHub0xmrma/cve-2026-46558

CVE-2026-46558

Plane’s V2 asset subsystem vertraute Workspace-Slugs und Asset-UUIDs ohne die Durchsetzung der korrekten Mitgliedschaftsprüfungen, was einem authentifizierten Benutzer erlaubte, Assets in anderen Workspaces zu lesen, zu kopieren, zu löschen und zu überschreiben.

Repository anzeigen
vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-46558

Das V2-Asset-Subsystem von Plane vertraute Workspace-Slugs und Asset-UUIDs, ohne die korrekten Mitgliedschaftsprüfungen durchzusetzen, was es einem authentifizierten Benutzer ermöglichte, Assets in anderen Workspaces zu lesen, zu kopieren, zu löschen und zu überschreiben.

Einleitung

Ich stieß auf dieses Problem, als ich Plane, die Open-Source-Projektmanagement-Plattform, mit einer sehr spezifischen Frage überprüfte:

Erzwingen die V2-Asset-Endpunkte tatsächlich Workspace-Grenzen, oder vertrauen sie zu sehr auf vom Angreifer bereitgestellte Workspace-Slugs und Asset-IDs?

In diesem Fall lautete die Antwort nein.

Das V2-Asset-Subsystem von Plane legte zwei zusammenhängende Autorisierungsfehler offen, die die Workspace-Isolation für jeden authentifizierten Benutzer durchbrachen:

  • der Workspace-Level-Asset-Endpunkt erzwingt keine Ziel-Workspace-Mitgliedschaft vor Asset-Operationen
  • der Duplizieren-von-Assets-Fluss autorisierte nur den Ziel-Workspace und vertraute der Quell-Asset-UUID, ohne die Zugriffsberechtigung für den Quell-Workspace zu prüfen

Das machte Cross-Workspace-Asset-Missbrauch möglich.

In meinem validierten PoC konnte ein normaler Benutzer in Workspace Bravo:

  • ein privates, hochgeladenes Asset von Alpha herunterladen
  • dieses Asset in Bravos eigenen Workspace duplizieren
  • Alphas ursprüngliches Asset löschen
  • Alphas Workspace-Logo mit vom Angreifer kontrolliertem Inhalt überschreiben

Dieses Problem wurde später als CVE-2026-46558 zugewiesen.

Plane: Plane bei GitHub
CVE: CVE-2026-46558

Dies betraf Plane, das auf seiner offiziellen Website als von 50.000+ Teams weltweit genutzt beschrieben wird. Plane hebt zudem eine starke Open-Source-Adoption hervor, darunter 46.000+ GitHub-Sterne und 1.000.000+ Docker-Pulls, und zeigt Organisationen wie Tencent, Accenture, Microsoft und Amazon.

photo0

Angriffskette

authenticated attacker in workspace B → workspace-level V2 asset route trusts target workspace slug and asset UUID without proper membership checks → presigned read / patch / delete against workspace A assets + duplicate-assets source lookup trusts uploaded source UUID → cross-workspace disclosure, copying, deletion, and branding overwrite


Was Plane tut

Plane ist eine Open-Source-Projektmanagement-Plattform, die zur Verwaltung von Folgendem verwendet wird:

  • Aufgaben
  • Probleme
  • Sprints
  • Dokumente
  • Triage
  • Workspace-weites Branding und Assets

Das bedeutet, dass sein Asset-Subsystem auf einer echten Vertrauensgrenze sitzt.

Die wichtige Frage hier war nicht, ob Plane Uploads unterstützt.

Die eigentliche Frage war:

Erzwingt Plane die Workspace-Isolation, wenn ein authentifizierter Benutzer auf Assets verweist, die einem anderen Workspace gehören?

In diesem Fall tat es das nicht.


Warum dieser Fehler einen Blick wert war

Viele Bewertungen von Multi-Tenant-Anwendungen konzentrieren sich zuerst auf offensichtliche Admin-Endpunkte oder direkte Einstellungsaktualisierungen.

Das übersieht eine sehr verbreitete und reale Fehlerklasse:

sekundärer Objektzugriff über gemeinsame Datei- oder Asset-Subsysteme

Asset-Systeme sind leicht falsch zu implementieren, weil sie oft kombinieren:

  • vom Benutzer kontrollierte Identifikatoren
  • Speicherschicht-Indirektion
  • metadatengetriebene Objektverknüpfung
  • Generierung von presigned URLs
  • mehrere Entitätstypen hinter einer gemeinsamen Route

Genau das ist die Art von Ort, an der Tenant-Grenzen leise schwächer werden.

Bei diesem Problem ging es nicht um Speicherbeschädigung. Es ging nicht um S3 selbst. Es ging nicht um die MIME-Verarbeitung von Uploads.

Es war ein Autorisierungs-Grenzfehler:

  • vom Angreifer kontrollierte Identifikatoren überschritten die Grenze
  • der Server löste Cross-Workspace-Objekte auf
  • die Autorisierung war unvollständig oder fehlte
  • privilegierte Asset-Aktionen wurden dennoch ausgeführt

Das ist genug, um eine echte Schwachstelle zu erzeugen.


Die Grenze, auf die ich mich konzentrierte

Ich bin nicht blind an Plane herangegangen, indem ich zufällige Endpunkte gefuzzt oder UUIDs ohne Modell erraten habe.

Der stärkere Ansatz bestand darin, zuerst die vielversprechendste Isolationsgrenze zu identifizieren.

Für Plane war das das V2-Asset-Subsystem.

Warum?

Weil ein gemeinsames Asset-System gefährlich wird, wenn:

  • mehrere Workspaces existieren
  • hochgeladene Objekte über UUID referenziert werden
  • Workspace-Slugs vom Angreifer kontrollierte Routeneingaben sind
  • die Anwendung erfolgreiche Lookups später in presigned Download- oder Mutationspfade umwandelt

Das war die richtige Grenze, die es zu untersuchen galt.

Und genau dort lebte der Fehler.


Ursache

Es handelte sich eigentlich um zwei zusammenhängende Autorisierungsfehler im selben Subsystem.

Ursache 1: Workspace-Asset-Routen ohne Mitgliedschaftsprüfung

Die Workspace-Level-Asset-Routen wurden durch Folgendes freigegeben:

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

Die verwundbaren Handler befanden sich in:

  • 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

Das Problem war einfach.

WorkspaceFileAssetEndpoint akzeptierte einen Workspace-Slug und eine Asset-UUID und löste dann direkt Objekte auf wie:

root@kitploit:~
workspace = Workspace.objects.get(slug=slug)

und:

root@kitploit:~
asset = FileAsset.objects.get(id=asset_id, workspace__slug=slug)

ohne zuerst sicherzustellen, dass der Aufrufer tatsächlich ein autorisiertes Mitglied dieses Ziel-Workspaces war.

Das bedeutete, dass der Endpunkt trotzdem Folgendes konnte:

  • Assets erstellen
  • Assets finalisieren
  • Assets löschen
  • presigned Download-URLs zurückgeben

für Objekte eines anderen Workspaces.

Ursache 2: Duplizieren-von-Assets vertraute der Quell-Asset-UUID

Die Route zum Duplizieren von Assets wurde abgebildet durch:

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

Die verwundbare Logik befand sich in:

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

Der Ziel-Workspace hatte einen Autorisierungsdekorator. Aber der Quell-Asset-Lookup hatte keinen.

Das Quellobjekt wurde geladen mit:

root@kitploit:~
original_asset = FileAsset.objects.filter(id=asset_id, is_uploaded=True).first()

Das bedeutete, dass der Aufrufer nur benötigte:

  • gültigen Zugriff auf den Ziel-Workspace
  • eine Quell-Asset-UUID, die hochgeladen war

Es gab keine Prüfung, ob der Aufrufer dem Quell-Workspace angehörte, dem das Asset tatsächlich gehörte.

Das ist der gesamte zweite Fehler.


Warum dies ein Sicherheitsproblem ist, nicht nur eine schlechte Zugriffslogik

Der wichtige Unterschied ist die Cross-Workspace-Auswirkung.

Viele Autorisierungsfehler werden heruntergespielt mit:

„es erfordert trotzdem eine Anmeldung“

Das verfehlt den Punkt.

Die eigentliche Frage ist nicht:

„Ist der Aufrufer authentifiziert?“

Die eigentliche Frage ist:

„Ist der Aufrufer für den spezifischen Workspace und das spezifische Asset, auf das eingewirkt wird, autorisiert?“

Bei Plane war diese Antwort nein.

Das verwandelt das, was wie eine gewöhnliche Objektbehandlung aussieht, in ein echtes Multi-Tenant-Sicherheitsproblem.

Es gibt einen klaren Unterschied zwischen:

  • authentifiziertem Zugriff innerhalb des eigenen Workspaces
  • und authentifiziertem Zugriff, der die Grenze eines anderen Tenants überschreitet

Dieses Problem war eindeutig der zweite Fall.


PoC

Ich habe das Problem lokal gegen Plane Community Edition 1.2.3 validiert, mit zwei gewöhnlichen Benutzern in zwei nicht verwandten Workspaces:

  • Alpha im Workspace alpha-20260323072017
  • Bravo im Workspace bravo-20260323072017

Ich habe Alpha verwendet, um ein legitimes privates hochgeladenes Asset in einem Projektissue zu erstellen.

Die validierte private Asset-ID in meinem Durchlauf war:

root@kitploit:~
6ed6ed62-d1b2-4399-8220-336c01b7d72c

Fall 1: Unbefugtes Lesen aus einem anderen Workspace

Als Bravo forderte ich an:

root@kitploit:~
GET /api/assets/v2/workspaces/alpha-20260323072017/6ed6ed62-d1b2-4399-8220-336c01b7d72c/

Plane antwortete:

root@kitploit:~
HTTP/1.1 302 Found

mit einer presigned Download-URL für Alphas Asset.

Der Hash der heruntergeladenen Datei stimmte exakt mit Alphas ursprünglichem privaten Asset überein:

root@kitploit:~
original:          0d4d070f550ba59ba6b30bee62343cf68ea221af7034f131f72f6409cf5a598e
unauthorized read: 0d4d070f550ba59ba6b30bee62343cf68ea221af7034f131f72f6409cf5a598e

Das bewies, dass der Lesepfad erfolgreich Workspace-Grenzen überschritt.


Fall 2: Cross-Workspace-Duplizierung durch Vertrauen in die Quell-UUID

Als Bravo forderte ich dann an:

root@kitploit:~
POST /api/assets/v2/workspaces/bravo-20260323072017/duplicate-assets/6ed6ed62-d1b2-4399-8220-336c01b7d72c/

Plane antwortete:

root@kitploit:~
HTTP/1.1 200 OK

und erstellte ein dupliziertes Asset auf Angreiferseite:

root@kitploit:~
72d51497-ccc1-4546-ba14-28fae5d37dbb

Die SHA-256 der duplizierten Datei stimmte exakt mit Alphas ursprünglichem Asset überein:

root@kitploit:~
0d4d070f550ba59ba6b30bee62343cf68ea221af7034f131f72f6409cf5a598e

Das bewies, dass die Quell-Asset-UUID allein ausreichte, um Cross-Workspace-Inhalte in einen vom Angreifer kontrollierten Workspace zu kopieren.


Fall 3: Unbefugtes Löschen des Opfer-Assets

Als Bravo sendete ich dann:

root@kitploit:~
DELETE /api/assets/v2/workspaces/alpha-20260323072017/6ed6ed62-d1b2-4399-8220-336c01b7d72c/

Plane antwortete:

root@kitploit:~
HTTP/1.1 204 No Content

Als Alpha später dieses Asset abrief, gab der Server zurück:

root@kitploit:~
HTTP/1.1 404 Not Found

Das bewies eine Cross-Workspace-Integritätsauswirkung, nicht nur Offenlegung.


Fall 4: Unbefugte Überschreibung des Workspace-Logos

Als Bravo erstellte ich ein WORKSPACE_LOGO-Asset gegen Alphas Workspace über die verwundbare Workspace-Level-Asset-Route, lud vom Angreifer kontrollierte Inhalte hoch und finalisierte sie.

Danach zeigten Alphas Workspace-Metadaten auf das vom Angreifer kontrollierte Logo-Asset:

root@kitploit:~
c1032f06-3cf5-4f7e-b139-e6976d8c567d

Der Hash des heruntergeladenen endgültigen Logos stimmte exakt mit der Angreifer-Nutzlast überein:

root@kitploit:~
expected: b9d1ef1de88d61bf55dd18055839bacacb832a752e17a7312547f641113d0e7b
observed: b9d1ef1de88d61bf55dd18055839bacacb832a752e17a7312547f641113d0e7b

Das bewies einen sichtbaren Cross-Workspace-Überschreibungspfad, nicht nur ein verstecktes Backend-Zugriffsproblem.


Warum die vollständige Kette wichtig ist

Jedes einzelne der obigen Ergebnisse hätte bereits ausgereicht, um einen echten Fehlerbericht zu rechtfertigen.

Aber die Validierung der vollständigen Kette war aus zwei Gründen wichtig.

Erstens

Es zeigte, dass das Problem nicht auf Nur-Lesen-Exposition beschränkt war.

Dieselbe schwache Grenze ermöglichte:

  • Offenlegung
  • Kopieren
  • Löschen
  • Überschreiben

Das macht die Auswirkung viel stärker als eine enge „kann eine Datei abrufen“-IDOR.

Zweitens

Es zeigte, dass die beiden Codepfade zusammenhängen, aber unabhängig voneinander wichtig waren.

Ein Fehler legte Workspace-Level-Asset-Operationen direkt offen. Der zweite Fehler verwandelte hochgeladene Asset-UUIDs in eine wiederverwendbare Exfiltrationsprimitive durch Duplizierung.

Das machte die gesamte Sicherheitsgeschichte viel schwerer abzutun.


Gültigkeitsbereich der Validierung

Die sichtbarste Überschreibungsauswirkung, die ich validierte, war:

  • WORKSPACE_LOGO

Das war bewusst, weil es einfach zu überprüfen ist und einen offensichtlichen Cross-Tenant-Integritätsfehler demonstriert.

Aber der Endpunkt war nicht auf Workspace-Logos beschränkt.

Der verwundbare Workspace-Level-Asset-Fluss akzeptierte auch mehrere Entitätskontexte, darunter:

  • Projekt-Cover
  • Benutzerbilder
  • Issue-Inhalte
  • Seiteninhalte
  • Kommentarinhalte

Das war wichtig, weil es zeigte, dass der Fehler strukturell war und nicht an ein einzelnes Branding-Feld gebunden.

Ich habe den Workspace-Logo-Pfad direkt validiert. Der breitere Codepath deutete stark darauf hin, dass zusätzliche Asset-gestützte Kontexte demselben Autorisierungsfehler ausgesetzt waren.


Schweregrad und Klassifizierung

Dieses Problem wurde zu Recht als Hoch eingestuft.

Die Advisory-Klassifizierung war:

  • CWE-862: Fehlende Autorisierung
  • CWE-639: Autorisierungsumgehung durch benutzergesteuerten Schlüssel
  • CVSS:
root@kitploit:~
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L

Diese Klassifizierung ergibt Sinn.

Die Behauptung ist nicht, dass ein nicht authentifizierter Angreifer Plane aus dem Nichts kompromittieren kann. Die Behauptung ist, dass jeder normale authentifizierte Benutzer im V2-Asset-Subsystem Tenant-Grenzen überschreiten und hochwirksame Asset-Operationen gegen andere Workspaces durchführen kann.

Das ist eine echte und verteidigungsfähige Multi-Tenant-Autorisierungsschwachstelle.


Warum die Meldung dennoch sinnvoll war

Manche Leute unterschätzen authentifizierte Cross-Tenant-Fehler, weil sie hören:

„der Angreifer brauchte bereits ein Konto“

Das ist keine ernsthafte Verteidigung.

In Multi-Workspace-Software sollen normale authentifizierte Benutzer innerhalb ihres eigenen Autorisierungsbereichs eingeschlossen sein.

Wenn ein Benutzer mit niedrigen Rechten in Workspace Bravo Objekte in Workspace Alpha lesen, kopieren, löschen oder überschreiben kann, dann ist die Workspace-Isolation gebrochen.

Genau das ist die Sicherheitseigenschaft, die die Anwendung schützen soll.

Besonders in einer Projektmanagement-Plattform, die interne Arbeitsinhalte und Branding-Assets speichert, ist das ein bedeutendes Problem mit echten Auswirkungen auf Vertraulichkeit und Integrität.


Fix-Analyse

Das Problem wurde in Plane v1.3.1 behoben.

Die Versionshinweise für v1.3.1 beschrieben den Fix klar:

  • Fügen Sie @allow_permission zu allen WorkspaceFileAssetEndpoint-Methoden hinzu
  • Beschränken Sie die Quell-Asset-Suche von DuplicateAssetEndpoint auf Workspaces, in denen der Aufrufer ein aktives Mitglied ist

Das ist die richtige Korrekturrichtung, da sie beide fehlgeschlagenen Sicherheitseigenschaften adressiert:

  1. Workspace-Level-Asset-Aktionen erfordern jetzt eine echte Mitgliedschaftsprüfung
  2. Quell-Assets im Duplizierungsfluss werden nicht länger allein aufgrund der UUID vertraut

Das ist genau das, was dieser Fehler brauchte.

Ein guter Fix besteht hier nicht darin, UUIDs besser zu verstecken. Es geht nicht darum, die Presigned-URL-Generierung zu ändern.

Es geht darum, die korrekte Regel wiederherzustellen:

Workspace-Slug plus Asset-UUID dürfen niemals ausreichen, ohne eine auf den aktuellen Benutzer bezogene Autorisierung

Das ist der Teil, den der Patch wiederhergestellt hat.


Offenlegung

Dieses Problem wurde privat über GitHub Security Advisories gemeldet.

Der Bericht enthielt:

  • Ursachenanalyse für beide Codepfade
  • einen lokalen End-to-End-PoC
  • rohe HTTP-Beweise
  • hashbasierte Beweise für unbefugten Download, Duplizierung und Überschreibung
  • Leitfaden zur Behebung

Das Problem wurde später veröffentlicht als:

  • GHSA-qw87-v5w3-6vxx
  • CVE-2026-46558

Das Advisory wurde am 15. Mai 2026 veröffentlicht. Der Fix wurde in Plane v1.3.1 ausgeliefert.


Was uns dieser Fehler tatsächlich lehrt

Die wichtigste Lektion hier ist einfach:

Gemeinsame Asset-Subsysteme sind Autorisierungsgrenzen, nicht nur Speicherhilfen

Viele Entwickler denken in Begriffen von:

  • Upload erfolgreich
  • Objekt existiert
  • UUID aufgelöst
  • Presigned URL funktioniert

Diese Dinge sind Implementierungsdetails.

Die eigentliche Sicherheitsfrage ist:

Wer ist berechtigt, dieses Asset über Tenant-Grenzen hinweg aufzulösen, zu mutieren, zu kopieren oder neu zu verknüpfen?

Bei Plane wurde diese Grenze nicht konsistent durchgesetzt.

Das ist die eigentliche Erkenntnis.

Dieser Fehler unterstreicht auch etwas Wichtiges bei der Überprüfung von Multi-Tenant-Anwendungen:

  • gemeinsame Objektschichten verdienen eine direkte Sicherheitsüberprüfung
  • vom Angreifer kontrollierte Identifikatoren reichen aus, wenn die Autorisierung unvollständig ist
  • ein einzelnes Subsystem kann gleichzeitig Vertraulichkeits- und Integritätsfehler offenlegen

Wichtige Punkte

  • Asset-Endpunkte sind echte Multi-Tenant-Sicherheitsgrenzen
  • Authentifizierter Zugriff ist nicht dasselbe wie autorisierter Cross-Workspace-Zugriff
  • Workspace-Slugs und Asset-UUIDs sollten niemals allein ausreichen
  • Die Generierung von Presigned-URLs wird gefährlich, wenn die vorgelagerte Autorisierung schwach ist
  • Die Validierung sowohl von Lese- als auch von Schreibfolgen macht einen Autorisierungsbericht viel stärker
  • Strukturelle Autorisierungsfehler in gemeinsamen Asset-Systemen betreffen oft mehr als einen Entitätstyp

Schlussworte

Diese Schwachstelle betraf kein exotisches Speicherverhalten.

Es ging darum, die richtige Frage zur Vertrauensgrenze zu stellen.

Bei Plane konnte ein authentifizierter Benutzer den Slug eines anderen Workspaces und Asset-UUIDs angeben, und das V2-Asset-Subsystem vertraute diesen Identifikatoren weiter, als es sollte.

Deshalb wurde dies zu CVE-2026-46558.

Behoben in Plane v1.3.1.

Tool herunterladen