Механизм согласования кластера и контроллера KubeSphere (pkg/utils/clusterclient/clusterclient.go, addCluster) обрабатывает конфигурацию подключения каждого пользовательского ресурса кластера и немедленно вызывает Discovery().ServerVersion() для указанной CRD конечной точки API Kubernetes, которая анализируется только на синтаксис URL-адреса (url.Parse) без списка разрешений/запретов для обратной связи, частных диапазонов RFC1918, локальные ссылки или адреса облачных метаданных (например, 169.254.169.254). Пользователь, который может создать или обновить CRD кластера, может заставить модули контроллера-менеджера и API-сервера выдавать исходящие запросы к произвольным внутренним конечным точкам или конечным точкам метаданных.
Показать оригинальное описание (EN)
KubeSphere's cluster-controller reconciliation (pkg/utils/clusterclient/clusterclient.go, addCluster) processes every Cluster custom resource's connection configuration and immediately calls Discovery().ServerVersion() against the CRD-specified Kubernetes API endpoint, which is parsed only for URL syntax (url.Parse) with no allow/deny-list for loopback, RFC1918 private ranges, link-local, or cloud-metadata addresses (e.g. 169.254.169.254). A user able to create or update a Cluster CRD can force the controller-manager and apiserver pods to issue outbound requests to arbitrary internal or metadata endpoints.
Характеристики атаки
Последствия
Строка CVSS v3.1