CVE-2026-100612
WysokieCVSS 7.2Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 25 - wyżej niż 25% wszystkich znanych CVE
Streszczenie
Capgo (capgo.app) do wersji 12.261.0 zawiera niekompletną poprawkę kontroli dostępu dla tabeli public.sso_providers. Migracja 20260826100000_sso_providers_block_direct_active_insert.sql instaluje wyzwalacz BEFORE UPDATE (enforce_sso_provider_client_update_guard()), który blokuje tylko kolumny dns_verified_at, domain, status i enforce_sso, pozostawiając kolumnę provider_id (oraz metadata_url i attribute_mapping) możliwą do zapisu. Ponieważ tabela ma przyznane uprawnienie ALL dla ról anon i authenticated bez ograniczeń na poziomie kolumn, a polityki row-level security (np. allow_org_admins_update_sso_providers) ograniczają tylko które wiersze mogą być aktualizowane, a nie które kolumny, użytkownik z uprawnieniem org_admin (org.update_settings) może przez PostgREST zmienić provider_id na kontrolowanego przez siebie dostawcę tożsamości. Ponieważ provider_id jest kotwicą zaufania wiążącą domenę e-mail z autoryzowanym IdP, atakujący może następnie uwierzytelnić się przez własny IdP, podając e-mail właściciela organizacji; dopasowanie po stronie serwera kończy się sukcesem, a procedura scalania przypisuje tożsamość SSO atakującego do istniejącego konta właściciela, zeruje jego hasło i usuwa inne tożsamości oraz sesje. Prowadzi to do eskalacji uprawnień z org_admin do właściciela organizacji/super_admin, przejęcia konta i zablokowania prawowitego właściciela. Eksploatacja wymaga aktywnego dostawcy SSO w organizacji docelowej oraz posiadania przez atakującego roli org_admin w tej organizacji. Brak dostępnej wersji z poprawką.
Ocena ryzyka
Atakujący z uprawnieniami org_admin może przejąć konto właściciela organizacji, uzyskać pełną kontrolę administracyjną (super_admin) i zablokować prawowitego właściciela, co stanowi poważne naruszenie bezpieczeństwa i ciągłości działania. Wymaga to aktywnego dostawcy SSO w organizacji docelowej.
Rekomendacja
Do czasu udostępnienia poprawki należy ograniczyć uprawnienia ról anon i authenticated do tabeli sso_providers (odbierając prawo ALL i przyznając tylko niezbędne uprawnienia na poziomie kolumn), rozważyć wyłączenie lub ograniczenie dostępu przez PostgREST do tej tabeli oraz wdrożyć monitorowanie zmian w kolumnie provider_id. Należy również zweryfikować, czy organizacje z aktywnym SSO mają zaufanych administratorów org_admin.
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) through version 12.261.0 contains an incomplete access-control fix for the public.sso_providers table. Migration 20260826100000_sso_providers_block_direct_active_insert.sql installs a BEFORE UPDATE guard (enforce_sso_provider_client_update_guard()) that freezes only the dns_verified_at, domain, status and enforce_sso columns; provider_id (as well as metadata_url and attribute_mapping) is left writable. Because the table is granted ALL to the anon and authenticated roles with no column-level restriction, and PostgreSQL row-level security policies such as allow_org_admins_update_sso_providers constrain only which row may be updated and not which columns, a user holding the org_admin tier permission org.update_settings can PATCH provider_id over PostgREST to an identity provider under their control. Since provider_id is the trust anchor binding an email domain to an authorized IdP, the attacker can then authenticate through their own IdP while asserting the org owner's email; the server-side provider match succeeds and the merge routine attaches the attacker's SSO identity to the existing owner account, nulls its password, and deletes its other identities and sessions. This results in vertical privilege escalation from org_admin to org owner/super_admin, account takeover, and lockout of the legitimate owner. Exploitation requires that the target organization has an active SSO provider configured and that the attacker already holds org_admin in that organization. No patched version is available.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

