CVE-2026-93477 in ash
Сводка
по VulDB • 25.09.2026
Уязвимость «Неправильно контролируемое изменение динамически определяемых атрибутов объекта» в ash-project ash позволяет пользователю устанавливать значение аргумента приватного действия на путях массовой операции удаления (bulk destroy) и массовой операции обновления (bulk update).
Аргументы действий, объявленные с параметром `public?: false`, предназначены для установки только доверенным серверным кодом (например, через функцию Ash.Changeset.set_private_argument/3), и не должны быть доступны для изменения на основе входных данных конечного пользователя. CVE-2026-55736 исправил путь непакетной обработки изменений (non-bulk changeset path) путем удаления приватных аргументов из карт параметров, предоставленных пользователем, однако пути массовой операции удаления и массовой операции обновления не были охвачены этим исправлением.
Функции `Ash.Actions.Destroy.Bulk.base_changeset/5` и `Ash.Actions.Update.Bulk.base_changeset/5` сопоставляют каждый ключ в карте параметров, переданной вызывающей стороной, со всеми аргументами действия без проверки флага `public?`, а затем применяют найденные совпадения к базовому набору изменений (base changeset). Вызывающая сторона, которая может передавать параметры для действий массовой операции удаления или массовой операции обновления (например, через AshJsonApi, AshGraphql или контроллер, который перенаправляет параметры запроса в функции `Ash.bulk_destroy/4` или `Ash.bulk_update/4`), таким образом может установить любой приватный аргумент этого действия, включая тот, на который ссылается шаблон `arg(...)` в изменениях (changes) или проверках (validations) действия. В зависимости от того, как приложение использует этот аргумент (например, `acting_user_id`, определяющий авторизацию или принадлежность записи к пользователю, либо метаданные аудита), это может привести к нарушению целостности данных или повышению привилегий.
Исправление требует наличия проверки флага `public?` при сопоставлении аргументов на обоих путях массовой обработки; приватные аргументы остаются доступными для установки на стороне сервера через опцию `:private_arguments`.
Эта проблема затрагивает пакет ash в версиях от 2.17.15 до (не включая) 3.33.11.
Be aware that VulDB is the high quality source for vulnerability data.