Securitybedrijf Synacktiv heeft een ongepatcht lek onthuld in de repo-server van Argo CD waarmee een niet-geauthenticeerde aanvaller commando's kan uitvoeren en, van daaruit, een volledig Kubernetes-cluster kan overnemen. Er is geen gefixte release en geen CVE. Als ook maar één pod in je cluster de interne poort van de repo-server kan bereiken, behandel die dan als een geauthenticeerde aanvaller totdat je netwerkisolatie hebt toegepast. Dit is het zeldzame type bug waarbij de fix geen versie-update is — het is een firewallregel die je zelf moet schrijven.
Argo CD is een van de meest ingezette GitOps-tools ter wereld: het houdt je Git-repository's in de gaten, bouwt Kubernetes-manifesten en synct die naar je clusters. Die taak plaatst het in het hart van je deploymentpijplijn, en dat is precies waarom een code-executiebug hier zo gevaarlijk is.
Wat is het repo-server-lek in Argo CD?
De kwetsbaarheid zit in repo-server, de Argo CD-component die Git-repo's cloont en de manifesten rendert die bepalen wat je cluster deployt. Repo-server stelt een interne gRPC-service beschikbaar, en volgens de analyse van Synacktiv heeft één endpoint — /repository.RepoServerService/GenerateManifest — helemaal geen authenticatie. Iedereen die de poort kan bereiken, kan een geprepareerd verzoek sturen dat eindigt in commando-uitvoering.
De truc is Kustomize. Wanneer repo-server een manifest rendert, kan het uitwijken naar Kustomize, dat een --helm-command-optie accepteert waarmee je opgeeft welk binary moet draaien voor Helm-charts. Door het veld BuildOptions in de KustomizeOptions van het verzoek te controleren, laat een aanvaller --helm-command naar zijn eigen script wijzen in plaats van naar het echte helm-binary. Synacktiv demonstreerde het tegen Argo CD v2.13.3 door een niet-geauthenticeerde gRPC-call te sturen die een door de aanvaller beheerde Git-repo ophaalde en het geplante script uitvoerde met de rechten van repo-server. Zoals The Hacker News meldde, beantwoordt het endpoint niet-geauthenticeerde verzoeken direct — er is geen loginstap om te omzeilen, want er is überhaupt geen loginstap.
Hoe de aanval uitgroeit tot een volledige clusterovername
Code-uitvoering op repo-server is op zich al erg, maar de escalatie naar clustercontrole is wat dit kritiek maakt. Repo-server houdt het REDIS_PASSWORD in zijn omgeving, en Argo CD gebruikt Redis om de manifesten te cachen die het gaat deployen. De keten verloopt zo:
- Stuur een niet-geauthenticeerde
GenerateManifest-gRPC-call met kwaadaardigeKustomizeOptionsom commando-uitvoering op repo-server te krijgen. - Lees
REDIS_PASSWORDuit de omgeving en verbind met de Redis-cache van Argo CD. - Vergiftig de gecachete manifest-key (
mfst) met een kwaadaardig Kubernetes-manifest en herschrijf vervolgens degit-refs-entry zodat die naar een oudere commit-SHA wijst. - Wanneer Auto Sync draait, ziet Argo CD wat het denkt dat een nieuwe commit is, reconcilieert en deployt de workload van de aanvaller naar het doelcluster.
Bij stap vier draait de aanvaller niet langer code in één pod — hij deployt willekeurige workloads met de sync-rechten die aan Argo CD zijn toegekend, wat voor de meeste installaties neerkomt op brede controle over het cluster. Auto Sync, een feature die teams inschakelen juist omdat die zo handig is, wordt het afleveringsmechanisme.
Waarom er geen patch en geen CVE is
Dit is het ongemakkelijke deel. Synacktiv zegt het lek in januari 2025 te hebben gemeld bij de maintainers van Argo CD, en zo'n achttien maanden later, bij de publieke onthulling op 1 juli 2026, had het kernproject nog steeds geen gefixte release. Er is ook geen CVE toegewezen aan het kernprobleem. Het standpunt van de maintainers is dat de interne service van repo-server nooit bedoeld was om blootgesteld te worden en met een network policy geïsoleerd zou moeten worden — vanuit dat oogpunt is het dus een hardening-tekortkoming en geen te patchen codefout.
Het probleem zit in de defaults. De officiële Helm-chart wordt geleverd met die network policies uitgeschakeld, dus een standaard Helm-gebaseerde installatie laat de poorten van repo-server en Redis bereikbaar voor elke pod in de namespace. Een gerelateerde Helm-chart-advisory (GHSA-47m3-95c7-g2g8) houdt de packaging-kant bij, maar als je Argo CD met Helm hebt uitgerold en nooit iets aan de network policies hebt aangeraakt, ben je vrijwel zeker op dit moment blootgesteld.
Waarom GitOps-infrastructuur "tier zero" is
De diepere les, en de reden dat dit zoveel aandacht kreeg, is wat Argo CD is. Het heeft leestoegang tot je private repository's, schrijf- en synctoegang tot je clusters, en het bewaart deployment-secrets. Compromitteer het en je breekt niet zomaar in bij één app — je bezit de pijplijn die elke app uitlevert.
In een stuk op CSO Online stelde analist Devashri Datta het onomwonden: "GitOps-engines zijn geen utility-services; het zijn tier-0 control-plane-componenten", en "elke pod die het kan bereiken, wordt gelijk aan een geauthenticeerde aanvaller." Sakshi Grover van IDC formuleerde de defensieve vraag als een kwestie van aanvalspaden in plaats van perimeter: bepaal "welke workloads met de Argo CD-control-plane kunnen communiceren" en of er "onnodige vertrouwensrelaties bestaan" tussen gewone app-pods en je GitOps-engine. De les is dat blootstelling aan het internet hier nooit het juiste dreigingsmodel was — laterale beweging vanuit één gecompromitteerde pod wel.
Die mindset — vertrouw intern verkeer nooit standaard, segmenteer alles — is dezelfde als achter de verschuiving die we behandelden in zero trust versus VPN in 2026. Network policies zijn microsegmentatie toegepast binnen het cluster.
Hoe je je cluster nu meteen beschermt
Met geen patch om te installeren, is de verdediging netwerkisolatie. Argo CD levert de policybestanden zelf mee; Helm-gebruikers hoeven ze alleen maar in te schakelen.
1. Controleer of je blootgesteld bent. Toon de network policies in je Argo CD-namespace:
kubectl get networkpolicy -n argocd
Als dat niets teruggeeft (of geen policy die argocd-repo-server afdekt), kan elke pod die naar de namespace kan routeren de niet-geauthenticeerde gRPC-poort bereiken. Dat is de blootgestelde staat.
2. Pas de network policy voor repo-server toe. Argo CD levert argocd-repo-server-network-policy.yaml, die ingress op poort 8081 beperkt tot alleen de legitieme interne callers — de API-server, de application controller, de applicationset controller en de notifications controller. Pas de volledige set Argo CD-network-policies toe (repo-server, Redis en de rest) uit de versie die bij je installatie past, of schakel ze in in je Helm-values als je op die manier deployt.
3. Verifieer. Bevestig dat er nu policies bestaan voor elke component, repo-server en Redis inbegrepen:
kubectl get networkpolicy -A | grep argocd
4. Verklein de blast radius. Behandel de namespace van Argo CD als tier-zero: beperk welke workloads die delen, scope de clusterrechten tot precies wat het nodig heeft om te syncen, en audit de bereikbaarheid van RepoServerService op dezelfde manier als je een admin-API zou auditen. Als je Auto Sync niet strikt nodig hebt op gevoelige applicaties, dan verwijdert het uitschakelen ervan het geautomatiseerde pad van cache-vergiftiging naar deployment.
Blootstelling in één oogopslag
| Deployment | Network policies | Repo-server bereikbaar voor elke pod? | Actie |
|---|---|---|---|
| Helm-chart, defaults | Uit | Ja — blootgesteld | Schakel policies nu in |
| Manifesten, geen policies toegevoegd | Uit | Ja — blootgesteld | Pas meegeleverde policies toe |
| Policies toegepast + geverifieerd | Aan | Nee — beperkt tot Argo-componenten | Behoud, en audit |
| Auto Sync op gevoelige apps | n.v.t. | Maakt cache-vergiftiging → deploy mogelijk | Overweeg uitschakelen |
Dit is meer control-plane-hygiëne dan incident response, en het gaat hand in hand met de basis van het afschermen van elke machine die je draait — dezelfde discipline als bij het veilige eerste uur op een nieuwe VPS. Als je je eigen stack self-host, is de stap-voor-stap self-hostinggids een goede plek om deze gewoontes vanaf het begin in te bouwen.
Veelgestelde vragen
Wat is de repo-server van Argo CD? Het is de Argo CD-component die je Git-repository's cloont en ze rendert tot Kubernetes-manifesten — de daadwerkelijke bestanden die het cluster vertellen wat het moet deployen. Het draait als een interne service en stelt een gRPC-API beschikbaar op poort 8081 die de andere Argo CD-componenten aanroepen.
Is er een patch of een CVE voor dit lek? Nee. Per de onthulling van 1 juli 2026 is er geen gefixte release van de Argo CD-kern en geen CVE voor het kernprobleem. De maintainers behandelen de interne service als iets dat je met network policies moet isoleren; een aparte Helm-chart-advisory (GHSA-47m3-95c7-g2g8) dekt de packaging-defaults.
Ben ik getroffen als ik Argo CD met Helm heb geïnstalleerd?
Waarschijnlijk wel, tenzij je expliciet network policies hebt ingeschakeld. De officiële Helm-chart wordt geleverd met die uitgeschakeld, waardoor de poorten van repo-server en Redis bereikbaar blijven voor elke pod in de namespace. Draai kubectl get networkpolicy -n argocd om het te controleren.
Heeft een aanvaller internettoegang tot mijn cluster nodig? Nee, en dat is nou juist het punt. De dreiging is intern: elke pod die de gRPC-poort van repo-server kan bereiken, kan het niet-geauthenticeerde verzoek sturen. Eén gecompromitteerde of kwaadaardige workload binnen het cluster is genoeg, dus de fix is segmentatie, niet alleen een firewall aan de rand.
Is Argo CD alleen voor Kubernetes? Ja. Argo CD is een declaratieve GitOps-continuous-delivery-tool die specifiek voor Kubernetes is gebouwd; het reconcilieert de live clusterstaat tegen manifesten die in Git zijn opgeslagen. Die nauwe koppeling is waarom een compromittering van repo-server zo direct doorvertaalt naar een compromittering van het cluster.
Sources
- Synacktiv — Unauthenticated RCE in Argo CD with CodeQL: de primaire technische onthulling, het endpoint, het misbruik van Kustomize
--helm-command, de Redis-cache-vergiftigingsketen en de network-policy-mitigatie. - The Hacker News — Unpatched Argo CD Repo-Server Flaw Could Let Attackers Take Over Kubernetes Clusters: samenvatting van het lek, het niet-geauthenticeerde gRPC-endpoint en de onthullingstijdlijn.
- CSO Online — Argo CD flaw shows why GitOps infrastructure should be treated as tier zero: expertanalyse over GitOps als een tier-0 control plane en denken in aanvalspaden.
- GitHub — argoproj/argo-cd: het Argo CD-project, de security-advisories en de meegeleverde network-policy-manifesten.
Waqas Ahmed Waseer
Waqas Ahmed Waseer is ontwikkelaar en automation-builder met meer dan 8 jaar ervaring in het bouwen van productiesystemen die door 100.000+ mensen worden gebruikt. Hij bouwt custom multi-tenant SaaS, AI-automatisering (n8n, LLM-workflows, WhatsApp-bots) en hostinginfrastructuur (WHM/cPanel, CloudLinux) — en is de maker van WaSphere, FlowMaticX en het hostingmerk WaseerHost. 100+ projecten opgeleverd voor mkb, bureaus en gefinancierde startups.



