CVE-2026-100623
WysokieCVSS 8.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 23 - wyżej niż 23% wszystkich znanych CVE
Streszczenie
Capgo (capgo.app) udostępnia starą tabelę członkostwa public.org_users bezpośrednio przez Supabase PostgREST. Polityki bezpieczeństwa na poziomie wierszy "Allow org admin to insert" i "Allow org admin to update" tylko sprawdzają, czy wywołujący ma uprawnienia administratora w docelowej organizacji, nie wymagają zaproszenia w tmp_users, akceptacji tokena zaproszenia ani żadnych działań docelowego użytkownika. W rezultacie uwierzytelniony administrator organizacji może bezpośrednio INSERT lub UPDATE wiersze org_users, dodając dowolne istniejące konto public.users jako aktywnego członka z uprawnieniami admin, omijając cały proces zaproszeń i przypisywania ról.
Ocena ryzyka
Nieautoryzowany dostęp do organizacji i aplikacji przez dodanie konta z uprawnieniami administratora, co może prowadzić do kradzieży danych lub przejęcia kontroli nad aplikacjami.
Rekomendacja
Ogranicz dostęp do tabeli public.org_users przez PostgREST, np. wyłączając publiczny dostęp lub stosując dodatkowe polityki bezpieczeństwa. Monitoruj logi pod kątem nieautoryzowanych operacji na tej tabeli.
Inne podatności w Capgo
Zobacz wszystkie- CVE-2026-88863Wysokie
W pakiecie npm `capgo` (do wersji 12.207.1) funkcja validateInvite() nie porównuje rangi roli zapraszającego z rangą roli, którą chce nadać. Użytkownik z uprawnieniem org.invite_user może zaprosić zewnętrzną osobę jako org_admin lub org_billing_admin, a akceptacja zaproszenia tworzy powiązanie roli z pominięciem mechanizmów ochronnych bazy danych.
- CVE-2026-56329Średnie
Podatność w Capgo przed wersją 12.128.2 wynika z niebijectywnego dekodowania podwójnych podkreślników na kropki podczas parsowania nazw hostów wersji zapoznawczych. Atakujący mogą rejestrować identyfikatory aplikacji z podkreślnikami, które kolidują z identyfikatorami z kropkami innych dzierżawców, powodując błędne kierowanie wersji zapoznawczych i odmowę dostępu do wersji zapoznawczych dla ofiar.
- CVE-2026-56279Wysokie
Podatność w Capgo przed wersją 12.128.2 ujawnia informacje poprzez funkcję RPC get_orgs_v7(userid), która jest publicznie wywoływalna mimo zamierzonej prywatnej kontroli dostępu. Nieuwierzytelnieni atakujący mogą podać dowolne UUID użytkownika, aby pobrać dane o członkostwie w organizacjach, rolach, służbowych adresach e-mail i metadanych rozliczeniowych innych użytkowników.
- CVE-2026-56293Średnie
Podatność w Capgo przed wersją 12.128.2 wynika z błędu autoryzacji w funkcji transfer_app(), która nie aktualizuje pola deploy_history.owner_org podczas przenoszenia aplikacji między organizacjami. Atakujący mogą wykorzystać to przeoczenie, aby zachować nieautoryzowany dostęp do historii wdrożeń w źródłowej organizacji lub spowodować utratę dostępu do przeniesionych rekordów wdrożeń w docelowej organizacji.
- CVE-2026-56250Wysokie
Podatność w Capgo przed wersją 12.128.2 pozwala kluczom API z ograniczeniami do przesyłania modyfikować pole app_versions.r2_path przez PostgREST, co umożliwia przekierowanie do dowolnych obiektów R2. Atakujący może ustawić r2_path na obiekt ofiary, usunąć swoją wersję i wywołać funkcję czyszczącą on_version_update, która usunie obiekt ofiary, powodując denial of service.
- CVE-2026-56246Wysokie
Podatność w Capgo przed wersją 12.128.2 umożliwia złamanie kontroli dostępu w API zarządzania organizacjami. Klucz API z ograniczeniem do konkretnych organizacji dziedziczy uprawnienia właściciela, co pozwala na destrukcyjne operacje międzyorganizacyjne.
- CVE-2026-56322Wysokie
Capgo w wersjach przed 12.128.2 zawiera podatność na ujawnienie informacji w nieautoryzowanym punkcie końcowym /updates, który rozwiązuje parametr defaultChannel przed nałożeniem ograniczeń prywatności. Umożliwia to atakującym enumerację prywatnych kanałów oraz ujawnienie stanu wersji i konfiguracji.
- CVE-2026-56234Średnie
Capgo przed wersją 12.128.2 zawiera podatność na walidację poświadczeń w punkcie końcowym POST /functions/v1/private/validate_password_compliance, który można wywołać tylko za pomocą publicznego klucza Supabase bez uwierzytelnienia. Punkt końcowy jest zgodny z CORS i nie ma ograniczeń dotyczących liczby żądań, co umożliwia atakującym przeprowadzanie ataków typu password spraying i credential stuffing.
- CVE-2026-88864Krytyczne
Capgo (capgo.app) nie ogranicza bezpośredniego dostępu zapisu do tabeli public.sso_providers udostępnionej przez Supabase PostgREST. Posiadacz zwykłego pełnego klucza API Capgo może wstawić wiersz ze statusem 'active' i enforce_sso=true, omijając zamierzoną ścieżkę provisioningu SSO i jej kontrole (wymóg planu Enterprise, tworzenie dostawcy przez Supabase Management API, weryfikację własności domeny przez DNS TXT, przejście statusów pending_verification → verified → active oraz wydanie zaufanego identyfikatora dostawcy przez Supabase Auth). Sfałszowany wiersz jest uznawany przez logikę wykrywania i wymuszania SSO, w tym nieuwierzytelniony endpoint preflight /private/sso/check-domain, który zgłasza {"has_sso": true, "enforce_sso": true} dla domen nigdy niezweryfikowanych.
- CVE-2026-100629Średnie
Capgo (backend capgo.app) przed wersją 12.127.5 zawiera błąd autoryzacji w punkcie końcowym PATCH /private/role_bindings/:binding_id. Handler sprawdza jedynie rangę nowo przypisywanej roli, ale nie weryfikuje rangi roli aktualnie powiązanej z danym bindingiem, co pozwala użytkownikowi z rolą org_admin (ranga 90) obniżyć uprawnienia org_super_admin (ranga 95) do roli niższej, np. org_member (ranga 75).
Oryginalny opis (angielski, źródło NVD)
Capgo (capgo.app) exposes the legacy membership table public.org_users directly through Supabase PostgREST. The table's row-level security policies "Allow org admin to insert" and "Allow org admin to update" only verify that the caller has admin rights in the target organization (public.check_min_rights('admin', ...)); they do not require a pending invitation in tmp_users, acceptance of an invite token via /private/accept_invitation, any action by the target user, or the membership/role-consistency and anti-escalation checks enforced by the RBAC role-binding path. As a result, an authenticated user who is an admin of an organization can INSERT or UPDATE org_users rows directly to add any existing public.users account as an active member of that organization with user_right="admin", bypassing the invitation and role-assignment workflow entirely. In testing, an account with no prior access to the organization or its apps could, after such a direct insert, read the organization and app and pass check_min_rights. All versions are affected and no patch was available at the time of publication.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

