CVE-2024-34102

Adobe Commerce and Magento Open Source

ВЫСОКАЯ ВЕРОЯТНОСТЬ

Дата обнаружения

2024-07-17

Официальное описание

Adobe Commerce and Magento Open Source contain an improper restriction of XML external entity reference (XXE) vulnerability that allows for remote code execution.

🛡️
Технический анализ и план устранения

Суть уязвимости

CVE-2024-34102 (известная как CosmicSting) представляет собой критическую уязвимость типа XML External Entity (XXE) Injection. Проблема возникает из-за небезопасной конфигурации парсера XML в библиотеке libxml2, используемой в Adobe Commerce и Magento.

Злоумышленник может отправить специально сформированный XML-запрос к API-эндпоинтам (например, /rest/V1/guest-carts/ или /rest/all/V1/shipping-information), что позволяет считывать произвольные файлы с сервера, включая конфигурационные файлы env.php. Получение ключа шифрования из env.php позволяет атакующему подделать JWT-токены администратора, что в конечном итоге ведет к полному удалению или захвату данных и удаленному выполнению кода (RCE).

Как исправить

Основным способом устранения является обновление системы до актуальных версий, в которых исправлена логика обработки XML-сущностей.

  1. Определите текущую версию Adobe Commerce или Magento Open Source.

  2. Обновите систему до одной из следующих версий (или выше):

  3. Adobe Commerce: 2.4.7-p1, 2.4.6-p6, 2.4.5-p8, 2.4.4-p9
  4. Magento Open Source: 2.4.7-p1, 2.4.6-p6, 2.4.5-p8, 2.4.4-p9
  5. B2B для Adobe Commerce: 1.4.2, 1.3.7, 1.2.8

  6. Для обновления используйте Composer:

composer require-root-package magento/product-community-edition 2.4.7-p1 --no-update

composer update

bin/magento setup:upgrade

bin/magento setup:di:compile

bin/magento setup:static-content:deploy -f

  1. Если полное обновление невозможно, примените официальный патч безопасности (Isolated Patch) через утилиту magento/quality-patches.

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

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

  1. Обновите конфигурацию PHP, чтобы предотвратить загрузку внешних сущностей на уровне интерпретатора. Добавьте или измените следующие параметры в php.ini:
libxml_disable_entity_loader = 1

  1. Настройте правила фильтрации на уровне Web Application Firewall (WAF) или Nginx для блокировки подозрительных POST-запросов к REST API, содержащих XML-структуры с объявлением DOCTYPE или ENTITY. Пример правила для Nginx:
if ($request_body ~* "<!ENTITY") { return 403; }

  1. Ограничьте доступ к API-эндпоинтам /rest/V1/guest-carts/ и /rest/all/V1/shipping-information только для доверенных IP-адресов, если это не нарушает бизнес-логику фронтенда.

  2. После установки патчей или обновления системы рекомендуется принудительно сменить ключи шифрования в app/etc/env.php и перегенерировать все сессии администраторов, так как они могли быть скомпрометированы до момента исправления.