CVE-2026-113708
KrytyczneCVSS 9.9Streszczenie
W Argo CD od wersji 2.7.0 do 3.3.15, 3.4.10, 3.5.4 i 3.6.0-rc2 Kustomize przekazuje wartości zapytań ref lub version z adresów URL zdalnych zasobów, baz lub komponentów do git fetch bez separatora końca opcji. Wartość rozpoczynająca się od myślnika może zostać zinterpretowana jako --upload-pack i wykonać polecenie w argocd-repo-server, gdy zdalne źródło używa transportu lokalnego, takiego jak file://. Git nie uruchamia dostarczonego polecenia dla zdalnego źródła https://. Transport lokalny nie opuszcza poda, więc blokowanie ruchu wychodzącego repo-server nie zapobiega wykonaniu. Polecenie działa jako użytkownik repo-server, może odczytać poświadczenia repozytorium i inne dane dostępne dla procesu oraz zwrócić dane wyjściowe przez błędy generowania manifestów. Atakujący może zatwierdzić Kustomization w repozytorium Git budowanym przez Application lub przesłać pliki przez POST /api/v1/applications/manifestsWithFiles, również udostępniane przez argocd app diff --local --server-side-generate. Ścieżka przesyłania wymaga jedynie uprawnienia Application get na istniejącym Application, bez uprawnień Application update lub sync ani dostępu do zapisu repozytorium. Kustomize 5.0.0 wprowadziło akceptację file://, podczas gdy 4.5.7 odrzuca ten transport; sama zamiana dotkniętego Kustomize na nowszą wersję nie naprawia brakującego separatora opcji. Problem naprawiono w wersjach 3.3.15, 3.4.10, 3.5.4 i 3.6.0-rc2.
Ocena ryzyka
Atakujący z minimalnymi uprawnieniami może wykonać dowolny kod w argocd-repo-server i odczytać poświadczenia repozytoriów oraz inne dane dostępne dla procesu. Może to prowadzić do naruszenia poufności i integralności całego środowiska GitOps.
Rekomendacja
Zaktualizuj Argo CD do wersji 3.3.15, 3.4.10, 3.5.4 lub 3.6.0-rc2 (lub nowszej). Nie polegaj wyłącznie na aktualizacji Kustomize — poprawka wymaga aktualizacji Argo CD.
Inne podatności w Argo CD
Zobacz wszystkie- CVE-2026-113709Krytyczne
W Argo CD od wersji 2.1.0 do 3.3.15, 3.4.10, 3.5.4 i 3.6.0-rc2, gdy operator włączył --enable-helm dla kustomize build, pole helmGlobals.configHome może wskazywać katalogi konfiguracji i danych Helm na lokalizację kontrolowaną przez repozytorium. Helm automatycznie ładuje wtyczkę downloadera z <configHome>/.data/plugins bez osobnego kroku instalacji i wykonuje jej program w argocd-repo-server, gdy URL repozytorium helmCharts używa protokołu wtyczki. Polecenie działa jako użytkownik repo-server i może odczytać poświadczenia repozytorium oraz inne dane dostępne dla procesu. Atakujący może zatwierdzić Kustomization i wtyczkę w repozytorium Git budowanym przez Application lub przesłać pliki przez POST /api/v1/applications/manifestsWithFiles, również udostępniane przez argocd app diff --local --server-side-generate. Ścieżka przesyłania wymaga jedynie uprawnienia Application get na istniejącym Application, bez uprawnień Application update lub sync ani dostępu do zapisu repozytorium. Obie ścieżki dostarczania wymagają wcześniejszego włączenia --enable-helm przez operatora; wdrożenia, które go nie włączają, nie są dotknięte. Kustomize 4.1.0 po raz pierwszy przekazało helmGlobals.configHome do Helm. Problem naprawiono w wersjach 3.3.15, 3.4.10, 3.5.4 i 3.6.0-rc2.
- CVE-2026-113672Krytyczne
W Argo CD od wersji 0.9.0 do 3.3.15, 3.4.10, 3.5.4 i 3.6.0-rc2 repo-server przetwarza pliki .jsonnet za pomocą importera, który nie ogranicza import, importstr ani importbin do katalogu głównego repozytorium. Ścieżki bezwzględne, przechodzenie do katalogu nadrzędnego i dowiązania symboliczne w repozytorium mogą otworzyć dowolny plik czytelny dla repo-server, w tym /proc/self/environ, tokeny konta usługi, zamontowane klucze prywatne i poświadczenia repozytorium. Chociaż wygenerowane Secrets są redagowane, umieszczenie zaimportowanej zawartości w ConfigMap zwraca dane do wywołującego. Użycie importstr na urządzeniu, które nie kończy się, takim jak /dev/zero, może wyczerpać pamięć repo-server. Atakujący może zatwierdzić plik .jsonnet w repozytorium Git używanym przez Application lub przesłać plik przez POST /api/v1/applications/manifestsWithFiles, również udostępniane przez argocd app diff --local --server-side-generate. Aplikacje katalogowe oceniają każdy plik .jsonnet w katalogu aplikacji. Ścieżka przesyłania wymaga jedynie uprawnienia Application get na istniejącym Application katalogowym, bez uprawnień Application update lub sync ani dostępu do zapisu repozytorium. Problem naprawiono w wersjach 3.3.15, 3.4.10, 3.5.4 i 3.6.0-rc2.
- CVE-2026-77459Krytyczne
Argo CD od wersji 2.10.0 do 3.3.15, 3.4.10, 3.5.4 i 3.6.0-rc2 tworzy hooki zasobów PostDelete bez stosowania kontroli autoryzacji AppProject dla miejsca docelowego i zasobów używanych podczas zwykłej synchronizacji. Użytkownik mogący zapisywać w repozytorium Git aplikacji może zatwierdzić hook usuwający skierowany do zabronionej przestrzeni nazw, serwera, grupy, rodzaju lub nazwy zasobu, a usunięcie aplikacji powoduje utworzenie tego zasobu z poświadczeniami klastra docelowego. Problem naprawiono w wersjach 3.3.15, 3.4.10, 3.5.4 i 3.6.0-rc2.
- CVE-2026-42880Krytyczne
W Argo CD w wersjach od 3.2.0 do 3.2.10 oraz od 3.3.0 do 3.3.8 brakuje autoryzacji i maskowania danych w punkcie końcowym ServerSideDiff. Umożliwia to atakującemu z dostępem tylko do odczytu wyodrębnienie danych Secret w postaci jawnego tekstu z etcd za pomocą mechanizmu Server-Side Apply dry-run serwera API Kubernetes.
- CVE-2025-59538Wysokie
Argo CD w wersjach 2.9.0-rc1 do 2.14.19, 3.0.0-rc1 do 3.2.0-rc1, 3.1.6 i 3.0.17 ma podatność polegającą na tym, że gdy webhook.azuredevops.username i webhook.azuredevops.password nie są ustawione w domyślnej konfiguracji, endpoint /api/webhook powoduje awarię całego procesu argocd-server po otrzymaniu zdarzenia Azure DevOps Push, którego tablica JSON resource.refUpdates jest pusta. Dostęp do indeksu [0] bez sprawdzenia długości powoduje panikę index-out-of-range. Pojedynczy nieuwierzytelniony żądanie HTTP POST wystarczy, aby zabić proces. Problem rozwiązano w wersjach 2.14.20, 3.2.0-rc2, 3.1.8 i 3.0.19.
- CVE-2025-55190Krytyczne
Argo CD w wersjach 2.13.0-2.13.8, 2.14.0-2.14.15, 3.0.0-3.0.12 i 3.1.0-rc1-3.1.1 pozwala tokenom API z uprawnieniami na poziomie projektu na pobranie poufnych danych uwierzytelniających repozytorium (nazwy użytkownika, hasła) poprzez punkt końcowy API szczegółów projektu. Podatność dotyczy również tokenów z globalnymi uprawnieniami do odczytu projektów. Naprawiono w wersjach 2.13.9, 2.14.16, 3.0.14 i 3.1.2.
- CVE-2026-55797Wysokie
Argo CD repo-server jest podatny na wstrzyknięcie poleceń podczas klonowania, testowania lub pobierania repozytorium Git SSH skonfigurowanego z adresem URL proxy. Host i port proxy są osadzane w SSH ProxyCommand wykonywanym przez powłokę bez neutralizacji znaków specjalnych. Użytkownik mogący tworzyć lub aktualizować repozytorium albo szablon poświadczeń repozytorium może wykonać polecenia w repo-server i uzyskać dostęp do jego poświadczeń Git, Helm i OCI.
- CVE-2025-61560Wysokie
W SessionManager w Argo CD w wersji 3.0.6 występuje podatność typu race condition. Pozwala ona atakującemu ominąć ograniczanie liczby prób i przeprowadzić atak brute force poprzez powtarzane, spreparowane żądania.
- CVE-2026-45738Wysokie
Podatność w Argo CD pozwala użytkownikom z dostępem do zapisu aplikacji na ustawienie adnotacji link.argocd.argoproj.io/* z wartościami rozdzielonymi pionową kreską, które są renderowane jako atrybuty href w sekcji URL w zakładce Podsumowanie bez walidacji, umożliwiając wykonanie kodu JavaScript w sesji uwierzytelnionego użytkownika o wyższych uprawnieniach. Problem został naprawiony w wersjach 3.2.12, 3.3.10 i 3.4.2.
- CVE-2026-45737Średnie
Argo CD ServerSideDiff w wersjach od 3.2.0 do 3.2.12, 3.3.10 i 3.4.2 nieprawidłowo oczyszcza dane Secretów Kubernetes, co może ujawnić wrażliwe wartości, w tym dane z adnotacji kubectl.kubernetes.io/last-applied-configuration. Podatność pozwala na wyświetlenie tych danych w interfejsie użytkownika lub w różnicach CLI.
Oryginalny opis (angielski, źródło NVD)
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. From 2.7.0 until 3.3.15, 3.4.10, 3.5.4, and 3.6.0-rc2, Kustomize passes ref or version query values from remote resource, base, or component URLs to git fetch without an end-of-options separator. A leading-hyphen value can be parsed as --upload-pack and execute a command inside argocd-repo-server when the remote uses a local transport such as file://. Git does not run the supplied command for an https:// remote. The local transport does not leave the pod, so blocking repo-server egress does not prevent the execution. The command runs as the repo-server user, can read repository credentials and other process-accessible data, and can return output through manifest-generation errors. An attacker can commit a Kustomization to a Git repository that an Application builds or upload files through POST /api/v1/applications/manifestsWithFiles, also exposed by argocd app diff --local --server-side-generate. The upload path requires only Application get permission on an existing Application, without Application update or sync permission or repository write access. Kustomize 5.0.0 introduced acceptance of file://, whereas 4.5.7 rejects that transport; replacing the affected Kustomize with a newer version alone does not correct the missing option separator. This issue is fixed in versions 3.3.15, 3.4.10, 3.5.4, and 3.6.0-rc2.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

