Bezpečnostné hrozby · 28. októbra 2026

Argo CD: kritická chyba v spracovaní Jsonnetu umožňuje čítať tokeny a kľúče z repo-servera

Argo CD, nástroj na nasadzovanie aplikácií do Kubernetes, má kritickú chybu s CVSS 9,9. Kto môže zapísať súbor Jsonnet do repozitára alebo smie len zobraziť existujúcu aplikáciu typu Directory, dokáže z repo-servera vytiahnuť tokeny, kľúče a prístupy ku Git repozitárom. Oprava je dostupná.

Čo sa stalo

Argo CD je populárny open source nástroj, ktorý automaticky nasadzuje aplikácie do Kubernetes podľa toho, čo je uložené v Git repozitári. Tomuto prístupu sa hovorí GitOps. Súčasťou Argo CD je komponent repo-server, ktorý z repozitára pripravuje konfiguráciu aplikácií, okrem iného aj zo súborov vo formáte Jsonnet.

Práve v tomto komponente sa našla chyba označená CVE-2026-113672 (v európskej databáze EUVD-2026-105227). Pri spracovaní súborov .jsonnet Argo CD nekontroluje, či príkazy na vloženie iného súboru zostávajú vnútri repozitára. Súbor tak môže načítať čokoľvek, k čomu má repo-server prístup, napríklad tokeny, súkromné kľúče či prihlasovacie údaje ku Git repozitárom.

Opravené verzie vydal tím Argo CD 6. októbra a zraniteľnosť bola v americkej databáze NVD zverejnená 20. októbra 2026. Tie isté vydania opravujú aj ďalšie kritické chyby, napríklad dve chyby v Kustomize, ktoré umožňujú spúšťať príkazy na repo-server. Ku dňu písania článku chyba nie je v katalógu CISA KEV a ani databáza EUVD neeviduje jej aktívne zneužívanie. Zneužitie zatiaľ nie je známe.

Prečo je to nebezpečné

Ide o chybu typu path traversal (CWE-22), voľne preložené „únik mimo povolený priečinok“. Predstavte si archivára, ktorý má podľa pokynov nosiť len dokumenty z jednej police. Ak mu niekto podá lístok „choď o dve poschodia vyššie a prines obsah trezoru“, archivár to bez otázok urobí. Presne tak sa správa Jsonnet v Argo CD: dovolí načítať súbory aj mimo repozitára.

Útok ide cez sieť a útočník potrebuje len minimálne oprávnenie. Stačí, ak môže zapísať súbor do Git repozitára, ktorý Argo CD používa, alebo ak má v Argo CD iba právo zobraziť existujúcu aplikáciu typu Directory. V druhom prípade nepotrebuje právo aplikáciu meniť ani synchronizovať a ani zapisovať do repozitára. Argo CD síce objekty typu Secret v odpovedi zakryje, no obsah vložený do ConfigMap vráti útočníkovi v čitateľnej podobe.

Čo môže útočník získať alebo spôsobiť:

  • premenné prostredia procesu repo-server, v ktorých môžu byť heslá a kľúče
  • tokeny servisných účtov Kubernetes pripojené do repo-server
  • pripojené súkromné kľúče a prístupy ku Git repozitárom
  • vyčerpanie pamäte repo-server, ktoré naruší jeho činnosť

Skóre CVSS je 9,9 z maximálnych desiatich bodov, teda kritická závažnosť. CVSS je medzinárodná stupnica, ktorá hodnotí, ako ľahko sa chyba zneužije a akú škodu spôsobí. Vysoké skóre vychádza z toho, že útok je jednoduchý, ide cez sieť a jeho dopad presahuje samotný Argo CD.

EPSS je model, ktorý odhaduje pravdepodobnosť, že chybu niekto zneužije v najbližších 30 dňoch. Pre túto chybu je odhad k 28. októbru 2026 pod 1 %, zhruba osem šancí z tisíc. Katalóg CISA KEV je americký zoznam chýb, ktoré útočníci preukázateľne zneužívajú, a táto chyba v ňom zatiaľ nie je. To však nie je dôvod aktualizáciu odkladať, pretože popis chyby je verejný.

Koho sa to týka

Dotknuté sú všetky verzie Argo CD od 0.9.0 až po verzie pred 3.3.15, 3.4.10, 3.5.4 a 3.6.0-rc2. Prakticky teda takmer každá inštalácia, ktorá ešte nebola aktualizovaná na niektoré z opravených vydaní.

Argo CD typicky beží vo firmách, ktoré prevádzkujú vlastné alebo cloudové klastre Kubernetes a nasadzujú aplikácie spôsobom GitOps. Najväčšie riziko je tam, kde Argo CD zdieľa viac tímov či externí dodávatelia, alebo kde majú právo čítať aplikácie všetci prihlásení používatelia. Rizikové sú aj inštalácie, ktorých webové rozhranie alebo API je dostupné z internetu.

Netýka sa to organizácií, ktoré Argo CD nepoužívajú. Ak Argo CD prevádzkuje váš dodávateľ alebo poskytovateľ spravovanej platformy, overte si u neho, či už aktualizoval.

Ako zistiť, či ste zasiahnutí

Verziu zistíte v ľavom paneli webového rozhrania Argo CD alebo z príkazového riadka. Nasledujúce príkazy len čítajú údaje a nič nemenia. Ak Argo CD nebeží v mennom priestore argocd, upravte jeho názov.

argocd version

Príkaz vypíše verziu klienta aj servera, rozhodujúca je verzia servera. Verziu overíte aj podľa obrazov kontajnerov:

kubectl get deployments -n argocd -o wide

Či máte zapnutý Jsonnet a kto má právo zobrazovať aplikácie, zistíte z konfigurácie argocd-cm a argocd-rbac-cm. Ak kľúč jsonnet.enable chýba, Jsonnet je zapnutý.

kubectl get configmap argocd-cm argocd-rbac-cm -n argocd -o yaml

Ak je verzia servera nižšia ako opravené vydanie vo vašej vetve, ste zasiahnutí. Zasiahnuté sú aj všetky vetvy staršie ako 3.3.

Ako to opraviť

Výrobca chybu opravil vo verziách 3.3.15, 3.4.10, 3.5.4 a 3.6.0-rc2. Postupujte takto:

  • Zistite aktuálnu verziu servera podľa predchádzajúcej sekcie.
  • Aktualizujte v rámci svojej vetvy: z 3.3 na 3.3.15, z 3.4 na 3.4.10, z 3.5 na 3.5.4. Testovacie inštalácie predbežnej verzie aktualizujte na 3.6.0-rc2.
  • Pre vetvy staršie ako 3.3 výrobca opravené vydanie neuvádza. Naplánujte prechod na podporovanú vetvu a pri zmene vetvy si prečítajte oficiálny návod na upgrade.
  • Pred aktualizáciou si overte zmeny, ktoré môžu niečo rozbiť: Kustomize s Helm grafmi už nerešpektuje helmGlobals.configHome a OCI manifest väčší ako 4 MiB je odmietnutý.
  • Po aktualizácii vymeňte citlivé údaje, ku ktorým mal repo-server prístup: prístupy ku Git repozitárom, kľúče a tokeny.

Kým aktualizujete, môžete riziko znížiť. Podľa dokumentácie Argo CD môže vypnutie nepoužívaných nástrojov na tvorbu konfigurácie zvýšiť bezpečnosť. Ak Jsonnet nepotrebujete, nastavte v ConfigMap argocd-cm kľúč jsonnet.enable na hodnotu false. Výrobca to neuvádza ako oficiálne riešenie práve tejto chyby, ide o všeobecné odporúčanie na sprísnenie.

Zároveň obmedzte, kto má v Argo CD právo zobrazovať aplikácie a kto môže zapisovať do repozitárov, z ktorých Argo CD nasadzuje. Ako prvé aktualizujte inštancie dostupné z internetu a tie, ktoré zdieľa viac tímov alebo dodávateľov.

Čo ak už ste mohli byť napadnutí

Argo CD v popise chyby ani v poznámkach k vydaniu neuvádza konkrétne indikátory napadnutia. Z popisu chyby však vyplýva, kde hľadať stopy:

  • súbory .jsonnet v repozitároch, ktoré cez import, importstr alebo importbin načítajú absolútne cesty, cesty s .. alebo symbolické odkazy
  • volania API manifestsWithFiles v logoch argocd-server. Vznikajú aj pri príkaze argocd app diff --local --server-side-generate. Útok touto cestou nezanechá stopu v repozitári.
  • neočakávané objekty ConfigMap v manifestoch aplikácií
  • opakované reštarty repo-server pre nedostatok pamäte (OOMKilled)

Nasledujúce príkazy len čítajú. Prvý prehľadá logy servera, ďalšie dva spustite v naklonovanom repozitári, posledný ukáže reštarty repo-server:

kubectl logs -n argocd -l app.kubernetes.io/name=argocd-server --tail=-1 --prefix | grep -i manifestswithfiles
grep -rnE --include='*.jsonnet' --include='*.libsonnet' "import(str|bin)?[[:space:]]*['\"](/|[^'\"]*\.\.)" .
find . -path ./.git -prune -o -type l -ls
kubectl describe pods -n argocd -l app.kubernetes.io/name=argocd-repo-server | grep -iE 'restart count|oomkilled'

Logy v klastri sa po čase prepisujú, preto prehľadajte aj centrálny logovací systém, ak ho máte. Ak nájdete podozrivý súbor alebo volanie od neznámeho používateľa, považujte všetky údaje dostupné pre repo-server za uniknuté a vymeňte ich. Pri náleze alebo pochybnosti prizvite odborníka na bezpečnosť Kubernetes, pretože medzi uniknutými údajmi môžu byť aj tokeny servisných účtov.

Zdroje

Články zostavuje AI agent z verejných zdrojov (výrobcovia, CISA, ENISA, NVD, SK-CERT, NÚKIB) a čísla verzií aj CVE voči nim automaticky overuje. Pred zásahom do produkcie si postup vždy overte v bulletine výrobcu.

← Všetky hrozby · RSS

Potrebujete pomôcť s opravou alebo kontrolou?

Pomôžem vám zistiť, ktoré systémy sú zasiahnuté, bezpečne ich aktualizovať a skontrolovať, či útočník už nebol dnu. Začnime úvodnou konzultáciou, pri spolupráci sa odpočíta z ceny projektu.