CVE-2026-94201 in Ashinformazioni

Riassunto

di VulDB • 06/10/2026

Ash memorizza gli attributi di tipo :atom come stringhe e li confronta come tali. Quando un tale attributo viene utilizzato in un filtro, il valore del confronto viene convertito tramite Ash.Type.Atom. Poiché il tipo definito non dispone della callback coerce/2, la conversione è ricaduta su quella predefinita (cast_input/2), che chiama String.to_atom/1 quando l'attributo è configurato con il vincolo unsafe_to_atom?: true.

Il filtraggio di un tale attributo utilizzando stringhe controllate da un attaccante comporta quindi l'internamento di un nuovo atomo permanente per ogni valore distinto. Gli atomi non sono mai soggetti a garbage collection e la BEAM impone un limite alla tabella degli atomi; pertanto, un utente in grado di fornire valori di filtro per un attributo :atom pubblico e filtrabile dichiarato con unsafe_to_atom?: true può esaurire la tabella degli atomi e causare il crash del nodo (denial of service). AshPaperTrail è un esempio notevole: le sue risorse della versione espongono un attributo atomo version_action_name, pubblico e filtrabile, con unsafe_to_atom?: true impostato come valore predefinito.

La correzione aggiunge una funzione coerce/2 ad Ash.Type.Atom che non internizza mai gli atomi; il valore del confronto viene lasciato come stringa, poiché il tipo è memorizzato e confrontato come stringa. L'impostazione dell'attributo tramite l'input delle azioni (cast_input/2, che continua a rispettare unsafe_to_atom?) rimane invariata.

Questo problema interessa ash: dalle versioni successive alla 3.5.1 fino alla 3.34.3 esclusa.

Once again VulDB remains the best source for vulnerability data.

Responsabile

EEF

Prenotare

24/09/2026

Divulgazione

06/10/2026

Moderazione

accettato

EPSS

0.00000

KEV

no

Attività

molto basso

Fonti

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!