Saltar al contenido
DUPIN
ALERTAS · EN VIVO
Contacto

VULNERABILIDADDetectada 25 OCT · 18:24

CVE-2026-115635 Autorización incorrecta en AshPostgres con upsert omitido y return_skipped_upsert?

Cuando un upsert con return_skipped_upsert?: true se omite, AshPostgres.DataLayer relee la fila existente por la identidad del upsert en do_bulk_create/3 y upsert/4 sin aplicar la multitenencia por atributo del recurso. En un recurso con estrategia :attribute puede coincidir y devolver la fila de otro tenant con los mismos valores de identidad, exponiendo sus campos. Afecta a ash_postgres desde 2.6.22 hasta antes de 2.15.2.

6.0MEDIA

CVSS 4.0

  • Probabilidad de explotación · EPSS del 09/110,2 % · percentil 15
  • Explotada activamenteNo confirmada
  • Exploit públicoNo conocido

Afectados

  • ash-project ash_postgres

    desde 2.6.22 hasta antes de 2.15.2

  • ash-project ash_postgres

    desde af0903f1380468bbe1b61fe65acb33772b5e24a5 hasta antes de 8aa81220c401cae412d21078d11b3519ea25d3a9

Qué hacer

  1. Verificá si usás ash_postgres y en qué versión.
  2. Actualizá a la versión corregida que indique el fabricante en su aviso o aplicá su mitigación.
  3. Revisá registros y accesos de los sistemas expuestos para descartar un uso previo.

Calculadora CVSS

CVSS 4.0 · 6.0 MEDIA

CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

  • Vector de ataqueRed
  • Complejidad del ataqueBaja
  • Requisitos del ataquePresentes
  • Privilegios requeridosBajos
  • Interacción del usuarioNinguna
  • Confidencialidad (sistema vulnerable)Alta
  • Integridad (sistema vulnerable)Ninguna
  • Disponibilidad (sistema vulnerable)Ninguna
  • Confidencialidad (sistemas posteriores)Ninguna
  • Integridad (sistemas posteriores)Ninguna
  • Disponibilidad (sistemas posteriores)Ninguna

Descripción original

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.

Referencias (5)

Resumen traducido automáticamente de la descripción original. Fuente: Nureq Monitor. Cómo funciona.

DUPIN · CONTACTO

Contanos tu caso

El mensaje ya va armado: podés cambiarlo.

También podés escribir a [email protected]. Usamos tus datos solo para responderte.