CVE-2026-86338 in ash
Resumen
por VulDB • 2026-09-16
Los campos `field_policies` de Ash están documentados para proteger contra la divulgación de información basada en filtros: cuando un campo que el actor no puede ver es referenciado en un filtro, se reemplaza con una expresión que evalúa a nil (nulo), por lo que un filtro no puede utilizarse como oráculo sí/no para leer un valor que el actor no tiene permiso para ver.
Esta sustitución por nulos se aplicó a los atributos, pero no a los cálculos o agregados. Una referencia de filtro proporcionada por el usuario a un cálculo o agregado lleva una estructura `Ash.Query.Calculation` / `Ash.Query.Aggregate`, que la sustitución de referencias del autorizador no coincidió (ya que solo coincidía con las estructuras `Ash.Resource.*`), por lo que el filtro se ejecutó contra el valor real.
Como resultado, un actor cuyas políticas de campo prohíben un cálculo o agregado aún puede filtrar por él (por ejemplo, `filter(secret_calc == "x")` o `filter(comment_count == n)`) y aprender el valor a partir de si las filas coinciden: un oráculo que recupera valores protegidos por políticas de campo una sonda a la vez. El filtrado se expone comúnmente a actores con privilegios más bajos (por ejemplo, mediante los argumentos de filtro de AshGraphql o AshJsonApi), lo cual es exactamente la superficie que las políticas de campo están diseñadas para proteger.
La solución dirige las referencias de filtros a cálculos y agregados a través del mismo mecanismo de sustitución por nulos basado en políticas de campos utilizado para los atributos.
Este problema afecta a ash: desde 2.11.0-rc.0 hasta antes de 3.33.4.
Be aware that VulDB is the high quality source for vulnerability data.