CVE-2026-105637
KrytyczneCVSS 9.6Streszczenie
Przed wersją 1.4.0 narzędzia Plane, endpoint ProjectBulkAssetEndpoint.post nie ograniczał zapytań o zasoby do projektu z URL-a. Gość z rolą Workspace Guest mógł podać identyfikatory UUID zasobów z innego projektu w tym samym workspace i przypisać je do encji kontrolowanej przez atakującego, co umożliwiało przejęcie plików.
Ocena ryzyka
Ryzyko nieautoryzowanego dostępu do plików z innych projektów w tym samym workspace, co może prowadzić do wycieku poufnych danych.
Rekomendacja
Zaleca się natychmiastową aktualizację do wersji 1.4.0 lub nowszej, która zawiera poprawkę.
Inne podatności w Plane
Zobacz wszystkie- CVE-2026-105635Wysokie
Plane to narzędzie do zarządzania projektami o otwartym kodzie źródłowym. Przed wersją 1.4.0 endpoint ProjectJoinEndpoint w GET /api/workspaces/{slug}/projects/{project_id}/join/{pk}/ używa permission_classes = [AllowAny] i zwraca pełny rekord ProjectMemberInvite, w tym adres e-mail, token i rolę, nieuwierzytelnionym wywołującym. Odpowiadający endpoint POST sprawdza tylko, czy przesłany e-mail zgadza się z project_invite.email i nie weryfikuje tokena zaproszenia. Atakujący, który zna UUID zaproszenia, może odkryć zaproszony e-mail, zarejestrować konto z tym adresem i zaakceptować zaproszenie bez otrzymania oryginalnego zaproszenia. Problem został naprawiony w wersji 1.4.0.
- CVE-2026-105634Wysokie
Plane to narzędzie do zarządzania projektami o otwartym kodzie źródłowym. Przed wersją 1.3.0 metoda ProjectMemberViewSet.partial_update pozwala każdemu członkowi projektu, w tym użytkownikowi z najniższą rolą GUEST, na modyfikację roli innego członka projektu. Kontrola autoryzacji zapobiega przypisaniu roli wyższej niż rola żądającego, ale nie zapobiega przypisaniu roli niższej lub równej, co pozwala Gościowi zdegradować Administratorów i Członków oraz pozbawić ich kontroli nad projektem. Podatność została naprawiona w wersji 1.3.0.
- CVE-2026-105633Wysokie
W Plane przed wersją 1.4.0 endpoint PATCH dla załączników zgłoszeń V2 przyjmuje issue_id w adresie URL, ale pomija go w zapytaniu do bazy danych. Członek projektu może podać własny issue_id w URL, a mimo to zmodyfikować załącznik innego użytkownika, dopasowując go po UUID (pk). Gdy załącznik jest w stanie oczekującym, procedura PATCH ustawia created_by na atakującego i przenosi własność załącznika.
- CVE-2026-105632Wysokie
W Plane przed wersją 1.4.0 mutacja GraphQL joinProject pozwala dowolnemu członkowi przestrzeni roboczej dodać się do dowolnego projektu w tej przestrzeni, w tym do projektów oznaczonych jako sieć=0 (tajne/prywatne), do których nie został zaproszony, i przyznaje mu pełną rolę Member (odczyt i zapis). Resolver sprawdza tylko członkostwo i rolę na poziomie przestrzeni roboczej, nigdy nie weryfikuje widoczności (network) docelowego projektu. Prowadzi to do zniesienia izolacji projektów w ramach przestrzeni roboczej.
- CVE-2026-105631Wysokie
W Plane przed wersją 1.4.0 endpointy WorkspaceFileAssetEndpoint.get i WorkspaceAssetDownloadEndpoint.get rozwiązują rekordy FileAsset w przestrzeni roboczej bez sprawdzania członkostwa w projekcie zasobu, co pozwala członkowi przestrzeni pobierać zasoby z prywatnych projektów, jeśli zna UUID zasobu. EntityAssetEndpoint.get to osobny publiczny endpoint z dostępem AllowAny, który ogranicza wyszukiwanie tylko do przestrzeni roboczej kotwicy, a nie do jej opublikowanej encji lub projektu. Nieuwierzytelniony wywołujący znający prawidłową kotwicę i UUID zasobu może pobrać zasoby opisów zgłoszeń lub komentarzy należące do nieopublikowanych lub prywatnych projektów w tej przestrzeni.
- CVE-2026-105630Wysokie
W Plane przed wersją 1.4.0 uwierzytelniony członek przestrzeni roboczej o niskich uprawnieniach, w tym Gość, może przesłać plik image/svg+xml jako załącznik ogólny lub do zgłoszenia. Plik zachowuje kontrolowany przez atakującego nagłówek Content-Type, a endpoint pobierania zasobów tworzy presigned URL z Content-Disposition: inline. W domyślnym wdrożeniu self-hosted MinIO adres URL zasobu jest serwowany z tej samej domeny co aplikacja Plane, co pozwala na wykonanie osadzonego JavaScriptu SVG w kontekście bezpieczeństwa aplikacji. Ofiara, w tym administrator przestrzeni roboczej, otwierając link, może mieć przejętą sesję poprzez stored XSS, co prowadzi do przejęcia konta.
- CVE-2026-105629Wysokie
W Plane przed wersją 1.4.0 BulkEstimatePointEndpoint.destroy rozwiązuje punkt estymacji poprzez bezpośrednie wyszukiwanie po kluczu głównym, bez ograniczenia do przestrzeni roboczej, projektu lub estymacji. Administrator lub członek jednej przestrzeni roboczej może trwale usunąć punkt estymacji należący do innej przestrzeni, podając docelowy UUID w adresie URL w ramach własnej przestrzeni. Tworzy to destrukcyjny cross-tenant IDOR.
- CVE-2026-105628Wysokie
W Plane przed wersją 1.4.0 proces synchronizacji awatarów OAuth pobiera avatar_url z danych użytkownika dostawcy poprzez żądanie HTTP po stronie serwera bez walidacji wewnętrznych adresów IP i domyślnie podąża za przekierowaniami. Atakujący może podać adres URL awatara, który przekierowuje do zasobu wewnętrznego, takiego jak endpoint metadanych, a Plane przesyła pobraną odpowiedź jako plik awatara użytkownika. Obiekt jest następnie udostępniany przez /api/assets/v2/static/{asset_id}/, co pozwala na eksfiltrację wewnętrznie pobranej treści.
- CVE-2026-104979Wysokie
W Plane (open-source narzędzie do zarządzania projektami) w wersjach przed 1.4.0 występuje podatność XSS. IntakeIssuePublicViewSet.create w wersji 1.3.1 zapisuje description_html bez walidacji przy użyciu validate_html_content z nh3. Uwierzytelniony użytkownik może umieścić dowolny HTML w projekcie z opublikowanym DeployBoard i włączonym intake, a po kliknięciu przez ofiarę następuje wykonanie JavaScriptu i kradzież tokenu API.
- CVE-2026-104978Wysokie
W Plane (open-source narzędzie do zarządzania projektami) w wersjach przed 1.4.0 endpoint listy zaproszeń projektowych jest dostępny dla każdego uwierzytelnionego użytkownika znającego slug workspace i ID projektu. Publiczny endpoint akceptacji zaproszenia przyjmuje zaproszenie na podstawie podanego adresu e-mail. Atakujący może wyliczyć zaproszenie, zarejestrować konto na zaproszony e-mail bez weryfikacji skrzynki i zaakceptować zaproszenie, dodając swoje konto do workspace i projektu.
Oryginalny opis (angielski, źródło NVD)
Plane is an open-source project management tool. Prior to 1.4.0, ProjectBulkAssetEndpoint.post in apps/api/plane/app/views/asset/v2.py retrieves assets using id__in=asset_ids and workspace__slug=slug but does not constrain the query with project_id from the URL. A workspace Guest can provide asset UUIDs from another project in the same workspace and reassign their issue_id, comment_id, page_id, draft_issue_id, or project_id to an entity the attacker controls. Plane then treats the attacker's project as the new owner and provides a presigned download URL for the hijacked file. This issue is fixed in 1.4.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

