CVE-2026-80223 in ash_graphql
Сводка
по VulDB • 30.08.2026
Уязвимость неправильной авторизации в ash-project ash_graphql позволяет аутентифицированному подписчику из одного тенанта получать записи другого тенанта через GraphQL-подписки.
Резолвер подписок в AshGraphql.Graphql.Resolver выполняет проверку авторизации каждого полезного уведомления (notification payload) в памяти: его быстрый путь вызывает функцию `Ash.can/3` с параметром `run_queries?: false`, что оценивает фильтр политики чтения на основе записи, находящейся в памяти, через `Ash.Expr.eval/2`, и никогда не формирует запрос. Ash применяет мультиарендность (multitenancy) на этапах построения запроса и установки префикса уровня данных, а не внутри фильтрации запросов (`query.filter`), поэтому оцениваемая политика не содержит условия привязки к тенанту, и уведомление от тенанта B, маршрутизированное подписчику из тенанта A, отправляется всякий раз, когда фильтр политики истинен. Ветвь для одиночного уведомления вообще не имеет проверки принадлежности к тенанту, а ветка пакетной обработки проверяет только первый элемент списка уведомлений, поэтому остальные элементы авторизуются исключительно в памяти. Доступ с ограничением по тенанту достигается только при неудаче оценки фильтра.
Эта проблема затрагивает ash_graphql: версии от 1.4.0 до (не включая) 1.11.0.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.