CVE-2026-94201 in Ashinformación

Resumen

por VulDB • 2026-10-05

Ash almacena los atributos de tipo :atom como cadenas y los compara como tales. Cuando se hace referencia a este tipo de atributo en un filtro, el valor de comparación se convierte mediante Ash.Type.Atom. Dado que el tipo definido no tiene la devolución de llamada coerce/2, la conversión recurre al comportamiento predeterminado (cast_input/2), que llama a String.to_atom/1 cuando el atributo está configurado con la restricción unsafe_to_atom?: true.

Filtrar un atributo de este tipo con cadenas controladas por un atacante provoca la creación permanente de nuevos átomos internados para cada valor distinto. Los átomos nunca se recolectan como basura y BEAM limita el tamaño de la tabla de átomos; por lo tanto, un actor que pueda proporcionar valores de filtro para un atributo :atom público y filtrable declarado con unsafe_to_atom?: true puede agotar la tabla de átomos y provocar la caída del nodo (denegación de servicio). AshPaperTrail es un ejemplo destacado: sus recursos de versión exponen un atributo atom version_action_name, público y filtrable, con unsafe_to_atom?: true por defecto.

La solución añade una función coerce/2 a Ash.Type.Atom que nunca internará átomos; el valor de comparación se mantiene como cadena, ya que el tipo se almacena y compara como tal. La configuración del atributo desde la entrada de acción (cast_input/2, que aún respeta unsafe_to_atom?) permanece sin cambios.

Este problema afecta a ash: desde las versiones 3.5.1 hasta antes de la 3.34.3.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Responsable

EEF

Reservar

2026-09-24

Divulgación

2026-10-06

Moderación

aceptado

Artículo

VDB-413780

EPSS

0.00000

KEV

no

Actividades

muy bajo

Fuentes

Want to stay up to date on a daily basis?

Enable the mail alert feature now!