CVE-2013-10076: уязвимость в ExtUtils::Typemaps::STL::Vector для Perl приводит к исчерпанию памяти
В модуле ExtUtils::Typemaps::STL::Vector для Perl версий до 1.05 обнаружена уязвимость, при которой обработка пустого списка вызывает выделение массива размером 32 ГиБ. Проблема приводит к исчерпанию памяти и потенциальному отказу в обслуживании.
Подробности
Уязвимость затрагивает версии ExtUtils::Typemaps::STL::Vector для Perl до 1.05 включительно. Причина кроется в реализации OUTPUT-typemap: выполняется вызов av_extend( av, len-1 ). Если на вход подаётся пустой список, значение len равно нулю, и выражение len-1 приводит к целочисленному переполнению (undeflow). В результате av_extend получает аргумент, соответствующий 2^32 элементам, и пытается выделить массив на 32 ГиБ. Такое поведение ведёт к исчерпанию памяти: процесс Perl может аварийно завершиться или вызвать деградацию системы вплоть до отказа в обслуживании (DoS). Уязвимость проявляется при обработке пустых списков через затронутые typemaps и не требует сложных условий эксплуатации — достаточно передать пустой список в соответствующем контексте. Сведения о значении CVSS в записи CVE отсутствуют. Стоит отметить, что проблема носит характер ошибки целочисленной арифметики, а не удалённого выполнения кода, однако её последствия для доступности сервисов могут быть существенными, особенно на системах с ограниченным объёмом памяти.Что делать
Основная рекомендация — обновить ExtUtils::Typemaps::STL::Vector до версии 1.05 или выше, где ошибка устранена. Обновление следует провести во всех проектах и средах, где используется данный модуль, включая сборочные конвейеры и CI/CD. Если обновление невозможно в короткие сроки, можно рассмотреть следующие митигации: — избегать передачи пустых списков в код, задействующий затронутые typemaps; — ограничить потребление памяти для Perl-процессов средствами ОС (например, cgroups или ulimit), чтобы локализовать последствия аварийного выделения 32 ГиБ; — провести проверку зависимостей проекта и выявить случаи использования уязвимых версий модуля. Также рекомендуется мониторить потребление памяти приложениями на Perl, чтобы своевременно обнаруживать аномалии. Итог: CVE-2013-10076 — локальная по характеру, но опасная для доступности уязвимость в модуле ExtUtils::Typemaps::STL::Vector. Исправление доступно в версии 1.05; обновление является наиболее надёжным способом защиты, а до его применения помогут ограничения памяти и пересмотр кода, работающего с пустыми списками.Источник: CVE Project (cvelistV5)
