CVE-2022-22947

VMware Spring Cloud Gateway

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

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

2022-05-16

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

Spring Cloud Gateway applications are vulnerable to a code injection attack when the Gateway Actuator endpoint is enabled, exposed and unsecured.

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

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

Уязвимость (CVE-2022-22947) позволяет удаленному злоумышленнику выполнить произвольный код на сервере, если: * Используется уязвимая версия VMware Spring Cloud Gateway (3.1.0, 3.0.0-3.0.6). * Включена и доступна извне конечная точка Actuator (/actuator/gateway). * Конечная точка Actuator не защищена аутентификацией.

Атакующий отправляет специально сформированный HTTP-запрос (POST) на эндпоинт /actuator/gateway/routes/{id}, который содержит вредоносный код SpEL (Spring Expression Language) в теле запроса. При последующем обращении к маршруту этот код выполняется на сервере.

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

Основное решение — обновление до исправленной версии Spring Cloud Gateway.

  1. Обновите зависимости Spring Cloud Gateway в вашем проекте:

    • Для версий 3.1.x: обновитесь до 3.1.1+.
    • Для версий 3.0.x: обновитесь до 3.0.7+.
  2. Если вы используете Maven, обновите версию в pom.xml: xml <properties> <spring-cloud.version>2021.0.1</spring-cloud.version> <!-- Для 3.1.x --> <!-- ИЛИ --> <spring-cloud.version>2020.0.7</spring-cloud.version> <!-- Для 3.0.x --> </properties> Затем выполните: bash mvn clean package Пересоберите и перезапустите приложение.

  3. Если вы используете Spring Boot, убедитесь, что используется исправленная версия spring-boot-starter-parent (2.6.6 или 2.5.12).

Временное решение

Если немедленное обновление невозможно, выполните следующие шаги:

  1. Отключите эндпоинт Actuator Gateway, если он не требуется. В файле конфигурации application.properties или application.yml добавьте: properties # application.properties management.endpoint.gateway.enabled=false Или: yaml # application.yml management: endpoint: gateway: enabled: false

  2. Ограничьте доступ к эндпоинтам Actuator только с доверенных IP-адресов с помощью правил брандмауэра или конфигурации Spring Security.

  3. Защитите эндпоинты Actuator аутентификацией и авторизацией через Spring Security. Убедитесь, что доступ к /actuator/* возможен только для привилегированных пользователей.

  4. Рассмотрите возможность использования WAF (Web Application Firewall) для блокировки запросов, содержащих шаблоны SpEL-инъекций (например, строки, содержащие ${T(...)} или #{...}).