ArgoCD нашли критическую уязвимость (9.1 по CVSS) CVE-2024-31989: Use of Risky or Missing Cryptographic Algorithms in Redis Cache, эксплуатация которой не требует особых привилегий и может привести к полному захвату Kubernetes кластера.Исследователей нашедших уязвимость, заинтересовал
Redis, который деплоится в кластер при установке ArgoCD, а точнее возможность подключения к нему (из любого Pod) без необходимости указывать username и password. Там они обнаружили множество ключей, которые содержали данные о развернутых приложениях. Однако ключи были сжаты в формате gzip. В документации говорится, что Redis служит в качестве кэширующего слоя, уменьшая количество запросов, отправляемых к Kube API и Git-провайдеру.Используя исходный код
ArgoCD в качестве образца, ресерчеры написали код на Go для распаковки содержимого gzipped и раскрытия его значений. Как и ожидалось, в ключах была закэширована информация о приложениях, управляемых ArgoCD, включая их манифесты и сведения о кластере Kubernetes.Однако, для того чтобы заставить
ArgoCD задеплоить манифесты, доставленные через Redis, нужно было также добавить ключ с контрольной суммой. К счастью исследователей, этот хэш генерировался без какой-либо секретной подписи и им с легкостью удалось его воспроизвести (base64 encoded FNV64a). Как итог, добавив пару ключей в Redis им удалось задеплоить BadPods и получить реверс шелл, сбежав на Node.Уязвимость затронула все версии
ArgoCD, необходимые патчи доступны в версиях 2.11.1, 2.10.10, 2.9.15, 2.8.19. В качестве основной меры митигации можно рассмотреть использование NetworkPolicy для ограничения общения с инстансом Redis.P.S. Более подробно об уязвимости можно почитать в этой статье.