CVE-2018-1273
VMware Tanzu Spring Data Commons
2022-03-25
Spring Data Commons contains a property binder vulnerability which can allow an attacker to perform remote code execution.
Технический анализ и план устранения
Суть уязвимости
Уязвимость (CVE-2018-1273) в модуле привязки данных (property binder) Spring Data Commons позволяет злоумышленнику передать специально сформированные данные в параметры запроса к приложению. При десериализации этих данных может произойти выполнение произвольного кода (RCE) на сервере. Атака возможна через HTTP-запросы к уязвимым эндпоинтам приложения.
Как исправить
Основное решение — обновить библиотеку Spring Data Commons до исправленной версии.
- Для Spring Data Commons 1.13.x и 2.0.x: Обновитесь до версии 1.13.12 или 2.0.7 соответственно.
- Для проектов, использующих Spring Boot: Обновите зависимость Spring Boot.
- Spring Boot 1.5.x: обновитесь до 1.5.12.RELEASE или выше.
- Spring Boot 2.0.x: обновитесь до 2.0.3.RELEASE или выше.
Пример для Maven (pom.xml):
<properties>
<spring-data-releasetrain.version>Lovelace-SR7</spring-data-releasetrain.version>
</properties>
Или явно укажите исправленную версию для spring-data-commons:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
<version>2.0.7.RELEASE</version>
</dependency>
После изменения зависимостей пересоберите и переразверните приложение.
Временное решение
Если немедленное обновление невозможно, рассмотрите следующие меры:
-
Настройка WAF (Web Application Firewall):
- Добавьте правило для блокировки HTTP-запросов, содержащих в параметрах подозрительные шаблоны, характерные для эксплуатации этой уязвимости (например, строки, содержащие
class.*,Class.*,.getв сочетании со скобками). Конкретное правило зависит от используемого WAF.
- Добавьте правило для блокировки HTTP-запросов, содержащих в параметрах подозрительные шаблоны, характерные для эксплуатации этой уязвимости (например, строки, содержащие
-
Валидация входных данных на уровне приложения:
- Если есть доступ к исходному коду, усильте валидацию всех входящих параметров, особенно тех, которые привязываются к объектам через
@RequestParamили@RequestBody. Используйте белые списки разрешенных символов.
- Если есть доступ к исходному коду, усильте валидацию всех входящих параметров, особенно тех, которые привязываются к объектам через
-
Ограничение сетевого доступа:
- Обеспечьте, чтобы доступ к уязвимому приложению был только из доверенных сетей (например, через внутренний балансировщик нагрузки или VPN). Ограничьте входящие соединения с помощью групп безопасности (Security Groups) или брандмауэра.