CVE-2026-104969
ŚrednieCVSS 6.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 17 - wyżej niż 17% wszystkich znanych CVE
Streszczenie
Plane to narzędzie do zarządzania projektami typu open-source. Przed wersją 1.4.0 endpoint cykli przyjmuje UUID problemów w treści żądania bez walidacji, czy należą one do przestrzeni roboczej wywołującego. Uwierzytelniony użytkownik może dodać problemy z dowolnej przestrzeni roboczej do cyklu, który kontroluje. Jeśli problem ofiary jest już przypisany do cyklu, operacja usuwa go z cyklu ofiary, powodując destrukcyjny zapis między dzierżawcami. Problem naprawiono w wersji 1.4.0.
Ocena ryzyka
Atakujący może manipulować cyklami i problemami w innych przestrzeniach roboczych, co prowadzi do utraty danych i naruszenia integralności danych.
Rekomendacja
Zaktualizuj Plane do wersji 1.4.0 lub nowszej, która zawiera poprawkę. Ogranicz dostęp do endpointów API i monitoruj aktywność.
Inne podatności w Plane
Zobacz wszystkie- CVE-2026-102988Średnie
W Plane przed wersją 1.4.0 wiele punktów końcowych listy zgłoszeń, w tym nieuwierzytelnione publiczne tablice, przekazuje kontrolowany przez użytkownika parametr order_by do Django order_by bez walidacji allowlisty. Atakujący może użyć podwójnego podkreślenia do przechodzenia przez relacje i odwoływania się do dowolnych pól powiązanych modeli, ujawniając szczegóły schematu bazy danych poprzez błędy i potencjalnie ujawniając wartości pól poprzez różnicowe sortowanie. Luka naprawiona w wersji 1.4.0.
- CVE-2026-102982Wysokie
Podatność w Plane przed wersją 1.4.0 dotyczy braku sanityzacji niebezpiecznych schematów URL w komentarzach (comment_html). Członek projektu może umieścić złośliwy link w komentarzu, a skrypt atakującego wykona się w przeglądarce innego użytkownika, który kliknie link. Problem naprawiono w wersji 1.4.0.
- CVE-2026-102981Średnie
W samodzielnie hostowanych wdrożeniach Plane przed wersją 1.4.0 nieuwierzytelnione żądania GET do api/workspaces/{slug}/invitations/{pk}/join/ przez WorkspaceJoinEndpoint ujawniają tajny token zaproszenia bezpośrednio i poprzez get_invite_link. Zewnętrzny atakujący może pobrać token przeznaczony dla innego użytkownika i przesłać go do procesu akceptacji zaproszenia, dołączając do przestrzeni roboczej bez otrzymania zaproszenia i uzyskując przypisaną do niego rolę. Luka naprawiona w wersji 1.4.0.
- CVE-2026-104892Wysokie
W Plane przed wersją 1.4.0 oprogramowanie pośredniczące aPITokenLogMiddleware loguje klucze API w postaci jawnej. Umożliwia to osobie z niskimi uprawnieniami kradzież kluczy API użytkowników i dalszą eskalację uprawnień.
- CVE-2026-105641Krytyczne
Plane przed wersją 1.4.0 w manifestach deployments/aio/community/ i deployments/cli/community/ zawiera stałe, publicznie znane domyślne wartości SECRET_KEY i LIVE_SERVER_SECRET_KEY, które pozostają aktywne, gdy operatorzy ich nie nadpiszą. Znajomość SECRET_KEY umożliwia atakującym fałszowanie podpisanych przez Django wartości i kompromitację kont lub sesji. Znajomość LIVE_SERVER_SECRET_KEY omija uwierzytelnianie usługi live na niezmienionych wdrożeniach community.
- CVE-2026-105640Krytyczne
Plane przed wersją 1.4.0 ufa adresom e-mail zwracanym przez Gitea OAuth oraz przez samodzielnie zarządzane wdrożenia GitLab OAuth, gdzie potwierdzenie e-maila jest wyłączone, bez weryfikacji, czy dostawca uwierzytelnił własność adresu. Atakujący może ustawić niezweryfikowany e-mail dostawcy na adres ofiary, który Plane dopasowuje bezpośrednio do istniejącego lokalnego konta ofiary. Atakujący może następnie zalogować się na konto ofiary bez znajomości hasła. GitHub, GitLab.com i Google nie są dotknięte, ponieważ zwracają zweryfikowane adresy e-mail.
- CVE-2026-105639Krytyczne
Plane przed wersją 1.4.0 w procesie rejestracji tworzy zalogowany wiersz User dla każdego przesłanego e-maila bez weryfikacji własności poza pasmem, podczas gdy User.email jest unique=True. Uwierzytelniony użytkownik może wywołać GET /api/users/me/workspaces/invitations/, który zwraca każdą WorkspaceMemberInvite, której e-mail pasuje do request.user.email. WorkSpaceMemberInviteSerializer używa fields = "all", ujawniając token chroniący endpoint dołączania do zaproszenia. Nieuwierzytelniony atakujący znający e-mail ofiary może zarejestrować konto z tym adresem, wyliczyć oczekujące zaproszenia i zaakceptować zaproszenie jako ofiara, dołączając do workspace na zaproszonej roli.
- CVE-2026-105638Krytyczne
Plane przed wersją 1.4.0 w logowaniu przez kod magiczny używa sześciocyfrowego OTP z około 20 bitami entropii. Weryfikator nie ma licznika nieudanych prób na kod, a błędny kod nie zwiększa licznika, nie unieważnia wpisu Redis ani nie blokuje adresu e-mail. Weryfikator rozszerza django.views.View zamiast DRF APIView, więc limit AnonRateThrottle nie ma zastosowania. Stos middleware nie zawiera również ogranicznika szybkości na poziomie Django, takiego jak django-ratelimit, django-axes lub IP-throttling.
- CVE-2026-105637Krytyczne
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.
- CVE-2026-105636Krytyczne
Przed wersją 1.4.0 narzędzia Plane, zadanie dostarczania webhooków nie ustawiało allow_redirects=False i nie walidowało celów przekierowań. Użytkownik z możliwością tworzenia workspace mógł zarejestrować webhook wskazujący na publiczny endpoint kontrolowany przez atakującego, który zwraca przekierowanie 302 do wewnętrznego adresu, co pozwalało na dostęp do wewnętrznych zasobów, w tym metadanych chmury.
Oryginalny opis (angielski, źródło NVD)
Plane is an open-source project management tool. Prior to 1.4.0, the cycle-issues endpoint accepts issue UUIDs in the request body without validating that they belong to the caller's workspace. An authenticated user can add issues from any workspace to a cycle they control. If a victim issue is already assigned to a cycle, the operation removes it from the victim's cycle, causing a destructive cross-tenant write. This issue is fixed in 1.4.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

