Уязвимость в Perl-модуле Spreadsheet::ParseExcel, используемая для компрометации Barracuda ESG

В Perl-модуле Spreadsheet::ParseExcel, предоставляющем функции для разбора файлов в формате Excel, выявлена критическая уязвимость (CVE-2023-7101), позволяющая выполнить произвольный код при обработке файлов XLS или XLSX, включающих специально оформленные правила форматирования чисел. Уязвимость вызвана использованием при построении вызова «eval» данных, полученных из обрабатываемого файла. Проблема устранена в обновлении Spreadsheet::ParseExcel 0.66. Имеется прототип эксплоита.


Уязвимый код:

   if ( $format_str =~ /^[([‹›=][^]]+)](.*)$/ ) {
        $conditional = $1;
        $format_str  = $2;
   }
   ...
   $section = eval "$number $conditional" ? 0 : 1;

Пример эксплоита для выполнения команды whoami:

  ‹numFmts count="1"›
    ‹numFmt numFmtId="123" formatCode="[›123;system('whoami › /tmp/inject.txt')]123"/›
  ‹/numFmts› 

Уязвимость была выявлена компанией Barracuda Networks в ходе разбора атаки по размещению вредоносного ПО на устройствах Barracuda ESG (Email Security Gateway). Причиной компрометации устройств оказалась 0-day уязвимость (CVE-2023-7102) в модуле Spreadsheet::ParseExcel, используемом в Barracuda ESG для разбора почтовых вложений в формате Excel. Для выполнения своего кода на системах, использующих Barracuda ESG, было достаточно отправить email со специально оформленным почтовым вложением.

Источник: http://www.opennet.ru/opennews/art.shtml?num=60376