Уязвимость неконтролируемого потребления ресурсов в ash-project позволяет злоумышленнику исчерпать память узла с помощью созданного курсора пагинации набора ключей. Действия чтения с нумерацией набора ключей десериализуют предоставленный клиентом курсор page[:after] или page[:before] в decode_values/2 в lib/ash/page/keyset.ex, который декодирует значение в base64 и передает его в :erlang.binary_to_term/2 без ограничения его размера. Формат внешних терминов Erlang поддерживает полезные данные, сжатые с помощью zlib, которые декодер прозрачно раздувает, поэтому курсор размером в несколько килобайт может выделить десятки мегабайт кучи за один вызов.
Сам Ash кодирует курсоры только в несжатом виде, поэтому декодер принимает форму термина, которую его кодер никогда не создает. Параллельные запросы объединяют эти выделения и могут завершить работу узла. Эта проблема затрагивает ash: с 1.17.0 до 3.31.1.
Показать оригинальное описание (EN)
Uncontrolled Resource Consumption vulnerability in ash-project ash allows an attacker to exhaust the memory of the node via a crafted keyset pagination cursor. Read actions with keyset pagination deserialize the client-supplied page[:after] or page[:before] cursor in decode_values/2 in lib/ash/page/keyset.ex, which base64-decodes the value and passes it to :erlang.binary_to_term/2 without bounding its size. The Erlang external term format supports zlib-compressed payloads, which the decoder inflates transparently, so a cursor of a few kilobytes can allocate tens of megabytes of heap in a single call. Ash itself only ever encodes cursors uncompressed, so the decoder accepts a term shape its encoder never produces. Concurrent requests aggregate these allocations and can terminate the node. This issue affects ash: from 1.17.0 before 3.31.1.
Характеристики атаки
Последствия
Строка CVSS v4.0
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Ash-Project Ash
cpe:2.3:a:ash-project:ash:*:*:*:*:*:*:*:*
|
1.17.0
|
3.31.1
|