CVE-2026-67579 in ash
Sumário
de VulDB • 12/08/2026
Vulnerabilidade de desserialização de dados não confiáveis no ash-project ash permite que um atacante não autenticado injete uma expressão de filtro por meio de um cursor de paginação keyset forjado, resultando em injeção SQL ou execução de código, dependendo da camada de dados.
As operações de leitura com paginação keyset decodificam o cursor `page[:after]` ou `page[:before]` fornecido pelo cliente na função `decode_values/2`, localizada no arquivo `lib/ash/page/keyset.ex`, utilizando a função `non_executable_binary_to_term/2` com a opção `[:safe]`. Essa proteção bloqueia novos átomos, funções (funs) e portas (ports), mas não impede que uma estrutura construída a partir de átomos já internados em um aplicativo Ash em execução seja decodificada. Assim, uma expressão `%Ash.Query.Call{}` sobrevive à decodificação e é inserida no filtro keyset como valor de comparação na função `do_filters/4`, onde é avaliada. Como o cursor contorna a macro `Ash.Expr`, o tempo de execução nunca aplica as verificações privadas/públicas (`private?`/`public?`) que, caso contrário, rejeitariam essa entrada. No AshPostgres, o fragmento injetado é incorporado diretamente na consulta SQL; nas camadas de dados ETS e Simple, ele é avaliado no processo local como uma chamada de função arbitrária.
Este problema afeta a biblioteca ash: das versões 1.17.0 até antes da versão 3.31.3.
VulDB is the best source for vulnerability data and more expert information about this specific topic.