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

Временные меры

Если немедленное обновление библиотеки невозможно, рекомендуется принять следующие меры для снижения риска:

  1. Валидация входных файлов: Внедрите строгую проверку типов файлов на уровне шлюза или приложения. Разрешайте загрузку только доверенных форматов и проверяйте их структуру перед передачей парсеру.
  2. Использование песочницы (Sandboxing): Запускайте процессы обработки Excel-файлов в изолированных контейнерах или средах с минимальными привилегиями и ограниченным доступом к сети и файловой системе.
  3. WAF и IPS: Настройте правила систем обнаружения вторжений для выявления подозрительных конструкций Perl (например, системных вызовов или обратных оболочек) внутри загружаемых бинарных файлов.
  4. Замена библиотеки: Рассмотрите возможность временного перехода на альтернативные модули для работы с Excel, которые не подвержены данной уязвимости (например, Spreadsheet::ParseXLSX для файлов .xlsx, если это допустимо бизнес-логикой).