CVE-2026-32686: Неограниченный показатель степени в decimal вызывает отказ в обслуживании
В библиотеке decimal для Elixir обнаружена уязвимость, позволяющая неавторизованному удаленному пользователю вызвать отказ в обслуживании (DoS) через исчерпание памяти. Проблема затрагивает версии с 0.1.0 до 3.0.0 и требует немедленного обновления для приложений, обрабатывающих вводимые пользователем десятичные числа.
Подробности
Уязвимость CVE-2026-32686 связана с неконтролируемым потреблением ресурсов (CWE-400) в библиотеке ericmj decimal. При обработке входных данных, таких как `Decimal.new("1e1000000000")`, библиотека принимает значение с экстремально большим показателем степени без каких-либо проверок или ошибок. Проблема заключается в том, что последующие операции с этим значением — включая `Decimal.add/2`, `Decimal.sub/2`, `Decimal.div/2`, `Decimal.to_string/2` с форматами `:normal` или `:xsd`, `Decimal.to_integer/1`, `Decimal.round/3` и `Decimal.compare/3` с порогом — выделяют память пропорционально величине показателя. Это означает, что один единственный вредоносный запрос может привести к выделению терабайтов памяти, что вызовет полное исчерпание доступной памяти и аварийное завершение работы BEAM VM (виртуальной машины Erlang). Уязвимость получила оценку CVSS 6.9 (MEDIUM), что отражает высокий потенциал воздействия на доступность сервиса при относительно простой эксплуатации. Особую опасность представляет то, что атака не требует аутентификации. Любое приложение, которое принимает от пользователей десятичные числа и впоследствии выполняет над ними арифметические операции, округление, преобразование в целое число или форматирование строк, становится уязвимым.Что делать
Компаниям, использующим decimal в своих проектах на Elixir, настоятельно рекомендуется: 1. **Немедленно обновить библиотеку** до версии 3.0.0 или выше, где проблема устранена. 2. **Провести аудит кода** на предмет использования функций decimal с данными, поступающими из внешних источников (HTTP-запросы, очереди сообщений, файлы). 3. **Внедрить валидацию входных данных** на уровне приложения: ограничить максимальную длину строкового представления чисел и отклонить значения, содержащие экспоненциальную запись с чрезмерно большим показателем. 4. **Настроить мониторинг потребления памяти** BEAM VM и алерты на аномальные всплески для своевременного обнаружения попыток эксплуатации. Игнорирование данной уязвимости может привести к регулярным сбоям в работе критически важных сервисов, особенно тех, что обрабатывают финансовые данные или предоставляют публичные API.Итог
CVE-2026-32686 демонстрирует, как, казалось бы, незначительное упущение в обработке числовых форматов может стать причиной полного отказа системы. SafeKit рекомендует всем разработчикам на Elixir незамедлительно включить обновление decimal в свой план работ и провести ревизию обработки пользовательского ввода в своих приложениях.Источник: CVE Project (cvelistV5)
