CVE-2020-5410
VMware Tanzu Spring Cloud Configuration (Config) Server
2022-03-25
Spring, by VMware Tanzu, Cloud Config contains a path traversal vulnerability that allows applications to serve arbitrary configuration files.
Технический анализ и план устранения
Суть уязвимости
Злоумышленник может выполнить атаку типа Path Traversal (обход пути), отправляя специально сформированные HTTP-запросы к серверу конфигурации Spring Cloud Config. Это позволяет получить доступ к произвольным файлам на файловой системе сервера, включая конфиденциальные конфигурационные файлы других приложений, что может привести к утечке данных и компрометации систем.
Как исправить
Обновите Spring Cloud Config Server до версии, в которой уязвимость устранена.
- Для Spring Cloud Config 2.2.x: обновитесь до версии 2.2.4.RELEASE или выше.
- Для Spring Cloud Config 2.1.x: обновитесь до версии 2.1.10.RELEASE или выше.
Пример команды для обновления через Maven (измените версию в pom.xml):
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
<version>2.2.4.RELEASE</version> <!-- Используйте актуальную патченную версию -->
</dependency>
После изменения версии пересоберите и перезапустите приложение.
Временное решение
Если немедленное обновление невозможно, примените следующие меры:
- Ограничьте сетевой доступ: Настройте правила сетевого экрана (firewall) или группы безопасности (Security Groups), чтобы разрешить доступ к порту сервера конфигурации только из доверенных подсетей (например, только для IP-адресов ваших приложений).
- Настройте WAF (Web Application Firewall): Разверните WAF перед сервером и активируйте правило для блокировки атак типа Path Traversal (часто называется "Path Traversal", "Directory Traversal" или "LFI").
- Используйте Reverse Proxy: Разместите сервер за reverse proxy (например, Nginx) и настройте строгие правила для URL, запрещающие последовательности с
..и другие специальные символы.
Пример базового правила для Nginx (location блок в конфигурации):
location ~ /(.*/\.\./.*) {
deny all;
return 403;
}