CVE-2023-7101
Spreadsheet::ParseExcel Spreadsheet::ParseExcel
2024-01-02
Spreadsheet::ParseExcel contains a remote code execution vulnerability due to passing unvalidated input from a file into a string-type “eval”. Specifically, the issue stems from the evaluation of Number format strings within the Excel parsing logic.
Технический анализ и план устранения
Суть уязвимости
CVE-2023-7101 представляет собой критическую уязвимость типа Remote Code Execution (RCE) в Perl-модуле Spreadsheet::ParseExcel (версии до 0.66 включительно). Проблема заключается в небезопасном использовании функции eval при обработке строк формата чисел (Number format strings) внутри Excel-файлов.
Злоумышленник может создать специально сформированный файл Excel (.xls), содержащий вредоносный код в метаданных или параметрах форматирования ячеек. При парсинге такого файла библиотекой Spreadsheet::ParseExcel, входные данные передаются в eval без надлежащей валидации, что позволяет выполнить произвольный Perl-код в контексте приложения, использующего данную библиотеку.
Как исправить
Основным способом устранения уязвимости является обновление модуля Spreadsheet::ParseExcel до версии 0.66 или выше, в которой опасные вызовы eval были заменены на безопасную логику обработки форматов.
Обновление через CPAN:
cpan Spreadsheet::ParseExcel
Обновление через cpanminus (рекомендуется):
cpanm Spreadsheet::ParseExcel
Проверка установленной версии:
perl -MSpreadsheet::ParseExcel -e 'print $Spreadsheet::ParseExcel::VERSION'
Если вы используете пакетный менеджер операционной системы (например, в дистрибутивах Linux), обновите соответствующий пакет (например, libspreadsheet-parseexcel-perl в Debian/Ubuntu):
apt-get update && apt-get install --only-upgrade libspreadsheet-parseexcel-perl
Временные меры
Если немедленное обновление библиотеки невозможно, рекомендуется принять следующие меры для снижения риска:
- Валидация входных файлов: Внедрите строгую проверку типов файлов на уровне шлюза или приложения. Разрешайте загрузку только доверенных форматов и проверяйте их структуру перед передачей парсеру.
- Использование песочницы (Sandboxing): Запускайте процессы обработки Excel-файлов в изолированных контейнерах или средах с минимальными привилегиями и ограниченным доступом к сети и файловой системе.
- WAF и IPS: Настройте правила систем обнаружения вторжений для выявления подозрительных конструкций Perl (например, системных вызовов или обратных оболочек) внутри загружаемых бинарных файлов.
- Замена библиотеки: Рассмотрите возможность временного перехода на альтернативные модули для работы с Excel, которые не подвержены данной уязвимости (например,
Spreadsheet::ParseXLSXдля файлов .xlsx, если это допустимо бизнес-логикой).