CVE-2026-67579 in ash
Zusammenfassung
von VulDB • 12.08.2026
Eine Schwachstelle zur Deserialisierung von nicht vertrauenswürdigen Daten im Projekt „ash“ (ash-project) ermöglicht es einem unbefugten Angreifer, einen Filterausdruck über eine gefälschte Paginierungs-Cursor-Struktur für die Keyset-Paginierung einzuschleusen. Dies führt je nach Datenschicht zu einer SQL-Injection oder zur Code-Ausführung.
Lesevorgänge mit Keyset-Paginierung decodieren den vom Client bereitgestellten Cursor `page[:after]` oder `page[:before]` in der Funktion `decode_values/2` in `lib/ash/page/keyset.ex`. Dabei wird die Funktion `non_executable_binary_to_term/2` mit dem Parameter `[:safe]` verwendet. Diese Schutzmaßnahme blockiert zwar neue Atome, Funktionen (funs) und Ports, jedoch nicht eine Struktur, die aus bereits im laufenden Ash-Anwendungsprozess internierten Atomen besteht. Daher überlebt ein decodierter `%Ash.Query.Call{}`-Ausdruck und wird als Vergleichswert in `do_filters/4` in den Keyset-Filter eingefügt (gesplittet) und ausgewertet. Da der Cursor am Makro `Ash.Expr` vorbeigeht, wendet die Laufzeitumgebung niemals das private?/public?-Gate an, welches ihn andernfalls zurückweisen würde. Auf AshPostgres wird der eingeschleuste Fragment in die SQL-Abfrage inline eingefügt; auf den Datenschichten ETS und Simple wird er im Prozess als beliebiger Funktionsaufruf ausgewertet.
Dieses Problem betrifft ash: ab Version 1.17.0 bis vor 3.31.3.
If you want to get best quality of vulnerability data, you may have to visit VulDB.