CVE-2026-115635
ŚrednieCVSS 6.0Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 16 - wyżej niż 16% wszystkich znanych CVE
Streszczenie
Podatność nieprawidłowej autoryzacji w bibliotece ash_postgres pozwala użytkownikowi odczytać rekord innego tenanta poprzez pominięty upsert. Gdy operacja tworzenia działa jako upsert z return_skipped_upsert?: true i zostanie pominięta, warstwa danych odczytuje istniejący wiersz po tożsamości upsert bez zastosowania multitenancy atrybutowej, co może ujawnić pola rekordu innego tenanta.
Ocena ryzyka
Organizacja korzystająca z multitenancy atrybutowej w ash_postgres może doświadczyć wycieku danych między tenantami, co narusza izolację danych i może prowadzić do ujawnienia informacji poufnych.
Rekomendacja
Zaktualizuj bibliotekę ash_postgres do wersji 2.15.2 lub nowszej, aby wyeliminować podatność.
Inne podatności w ash_postgres
Zobacz wszystkie- CVE-2026-115627Średnie
Podatność nieprawidłowej autoryzacji w ash_postgres pozwala użytkownikowi załadować rekordy docelowe powiązane z rekordem źródłowym tylko poprzez wiersze łączące innego tenanta. Przy ładowaniu relacji many_to_many lub through z lateral join, zapytanie dla zasobu łączącego jest budowane bez uruchamiania akcji odczytu, która stosuje multitenancy atrybutową, co prowadzi do dołączenia wierszy innych tenantów.
- CVE-2026-78699Wysokie
Podatność w ash-project ash_postgres pozwala użytkownikowi, który może zmienić nazwę dzierżawy (tenant) na nazwę kolidującą ze schematem istniejącej dzierżawy, na przekierowanie swojego rekordu dzierżawy na żywy schemat innej dzierżawy i uzyskanie dostępu do jej danych. Funkcja rename_tenant/3 ignoruje wynik zapytania SQL i zawsze zwraca :ok, co prowadzi do zapisania nowej nazwy i późniejszego dostępu do cudzych danych. Problem dotyczy ash_postgres od 0.25.0 przed 2.13.0.
Oryginalny opis (angielski, źródło NVD)
Incorrect Authorization vulnerability in ash-project ash_postgres allows a user to read another tenant's record through a skipped upsert. When Ash.bulk_create/4 or a single create runs as an upsert with return_skipped_upsert?: true and the upsert is skipped (for example because its upsert_condition does not hold), AshPostgres.DataLayer reads the existing row back by the upsert identity in do_bulk_create/3 and upsert/4. That lookup did not apply the resource's attribute multitenancy, so on a resource using strategy :attribute it could match and return the row of another tenant with the same identity values, exposing its fields to the caller. This issue affects ash_postgres: from 2.6.22 before 2.15.2.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

