Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with WebHooks-permission account
-
DeliveryConfigure webhook URL to internal/loopback/private target
-
ExploitInvoke PUT /station/{id}/webhook/{id}/test
-
ExecutionServer issues outbound POST to internal service
-
ImpactReach/probe internal network resources
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Credential Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated AzuraCast user holding the station-scoped WebHooks permission (PR:L) - not unauthenticated. The affected connectors are the Generic and Discord webhook connectors, whose getValidUrl() filter only blocks literal link-local IPs (169.254.0.0/16, fe80::/10); loopback and RFC1918 private ranges pass, and any non-literal hostname makes the IP-parsing call throw, skipping the check entirely. Exploitation is meaningful only where the AzuraCast host can route to sensitive internal/loopback services. The PUT /station/{id}/webhook/{id}/test endpoint lets the same low-privileged user trigger the request on demand. Limiting factors: valid low-privilege account required, impact is largely a blind outbound POST (Now-Playing payload) rather than confirmed response exfiltration, and no patch exists so mitigation must be compensating (network egress controls, restricting WebHooks permission). |
| Impact | This is a moderate, not urgent, priority. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) correctly reflects a network-reachable flaw with low attack complexity that requires an authenticated, low-privileged account - specifically a user holding the station-scoped WebHooks permission - so it is NOT unauthenticated. No EPSS score, CISA KEV listing, or public POC is present in the provided intelligence; SSVC-style signals are therefore effectively 'exploitation: none / automatable: unknown'. That means there is no evidence of active exploitation, and the requirement for a valid WebHooks-capable account meaningfully narrows the attacker population. The primary caveats are: (1) no patched version existed at advisory time, so there is no clean remediation path, and (2) the vendor's CVSS 4.0 rates confidentiality high (VC:H) whereas the described impact is a blind/semi-blind outbound POST of Now-Playing data to an attacker-chosen internal target - internal-service reachability and limited data exposure, which I assess as lower (C:L). Net: a real but bounded SSRF that matters most where AzuraCast is co-located with sensitive internal services. |
| Exploit ScenarioDerived | A user with only the station-scoped WebHooks permission configures a Generic or Discord webhook whose URL points at an internal, loopback (127.0.0.1), or RFC1918 private address that the host-based IP filter fails to reject. They then call PUT /station/{id}/webhook/{id}/test to make the AzuraCast server issue an outbound HTTP POST to that internal target on demand, reaching services not exposed to the internet. No public exploit code is identified at time of analysis, though the mechanics are fully detailed in the VulnCheck and GitHub advisories. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 27, 2026
Server-side request forgery in AzuraCast before 0.23.8 allows an authenticated user with the station-scoped WebHooks permission to make the server send outbound HTTP POST requests to internal, loopback, or RFC1918 addresses through the Generic and Discord webhook connectors. The AbstractConnector::getValidUrl() validation only rejects literal link-local IPs and skips validation entirely when the hostname is not a literal IP, and the same user can trigger the request on demand via the webhook test endpoint. No public exploit identified at time of analysis; risk is moderate because exploitation requires a low-privileged account and impact is largely a blind Now Playing POST unless the target internal service is reachable and responsive.
RemediationAI
No vendor-released patch identified at time of analysis; the advisory notes no patched version was available. Until a fix is available, restrict the station-scoped WebHooks permission to fully trusted administrators, because any user with that permission can configure the malicious webhook and trigger it through PUT /station/{id}/webhook/{id}/test. If Generic and Discord webhooks are not required, disable or remove those connectors to eliminate the attack path. Apply network egress controls on the AzuraCast host to block outbound HTTP(S) traffic to loopback, link-local, and RFC1918 ranges (127.0.0.0/8, ::1, 169.254.0.0/16, fe80::/10, 10/8, 172.16/12, 192.168/16), or use an allowlist for approved webhook destinations; this may break legitimate internal webhook integrations and requires careful tuning. Monitor AzuraCast logs and network traffic for outbound POSTs from the webhook test endpoint to unexpected internal addresses. See advisory URLs: https://github.com/AzuraCast/AzuraCast/security/advisories/GHSA-3jp3-3wqw-jvw4 and https://www.vulncheck.com/advisories/azuracast-before-0.23.8-ssrf-filter-bypass-via-hostname-and-private-ips.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
This is a CWE-918 server-side request forgery weakness in AzuraCast, a self-hosted PHP web radio management suite. The CPE cpe:2.3:a:azuracast:azuracast:*:*:*:*:*:*:*:* identifies AzuraCast as the affected product. The vulnerable code is AbstractConnector::getValidUrl() in backend/src/Webhook/Connector/AbstractConnector.php, used by the Generic and Discord webhook connectors. Its SSRF filter blocks only hosts that parse as literal link-local addresses (169.254.0.0/16 or fe80::/10). Loopback (127.0.0.0/8, ::1) and RFC1918 private ranges (10/8, 172.16/12, 192.168/16) are not rejected, and a hostname that is not a literal IP makes the IP parsing call throw, which skips the check. A user with the station-scoped WebHooks permission can set the webhook URL to an internal target and invoke PUT /station/{id}/webhook/{id}/test, causing an outbound HTTP POST with the station's Now Playing data. The supplied CVSS 4.0 score is 7.1 with PR:L, while the independent assessment uses CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N, reflecting authenticated access, changed scope, and limited confidentiality impact rather than remote unauthenticated code execution or full data exfiltration.
Know when Azuracast gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N
Authenticated low-priv WebHooks permission (PR:L); SSRF pivots to other systems (S:C); blind outbound POST yields limited confidentiality (C:L) with no integrity/availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
AzuraCast is a self-hosted web radio management suite. In AzuraCast before 0.23.8, the station webhook URL validation in AbstractConnector::getValidUrl() (backend/src/Webhook/Connector/AbstractConnector.php), used by the Generic and Discord webhook connectors, rejects only URLs whose host is a literal link-local IP address (169.254.0.0/16 or fe80::/10). Loopback addresses and RFC1918 private ranges are not rejected, and any non-literal-IP hostname causes the IP parsing call to throw, which skips the check entirely. A user holding only the station-scoped WebHooks permission can therefore configure a webhook pointing at an internal, loopback, or private-network target and cause the server to issue an outbound HTTP POST containing the station's Now Playing data, resulting in server-side request forgery. The PUT /station/{id}/webhook/{id}/test endpoint allows the same low-privileged user to trigger the request on demand. At the time of the advisory no patched version was available.
Technical POC Analysis
CWE-918 (Server-Side Request Forgery).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
AzuraCast deployments running versions prior to 0.23.8 are affected by a server-side request forgery flaw that allows a user holding the station-scoped WebHooks permission to make the application server issue outbound POST requests to internal, loopback, and RFC1918 addresses. Because AzuraCast is frequently internet-facing and the request can be triggered on demand through the webhook test function, the issue gives a low-privileged account a potential foothold for probing or reaching internal services that should never be exposed to that user. No public exploit code or confirmed active exploitation has been identified at this time, so leadership should prioritize network egress containment and permission reduction over emergency outage-style response.
No vendor-released patch identified at time of analysis. Interim mitigations: enforce network-level egress filtering from AzuraCast hosts that denies RFC1918, loopback, and link-local destinations and permits only an approved allowlist; block access to cloud instance metadata endpoints from the application host; restrict the station-scoped WebHooks permission to the smallest possible set of trusted administrators and remove it from all other accounts; disable or remove the Generic and Discord webhook connectors where they are not operationally required; route server-side webhook traffic through a validating forward proxy or enforce DNS resolution checks that reject internal address ranges; and monitor webhook logs and network flow data for outbound POST requests to internal destinations as a detection and early-warning measure until an upgrade to AzuraCast 0.23.8 or later can be completed.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.
Related Vulnerabilities in AzuraCast SSRF, Injection, and Access Control Flaws
View all 11Improper Restriction of Excessive Authentication Attempts in GitHub repository azuracast/azuracast prior to 0.18.3. Rate
Cross-site Scripting (XSS) - Stored in GitHub repository azuracast/azuracast prior to 0.18. Rated medium severity (CVSS
Remote code execution in AzuraCast ≤0.23.8 is reachable by any authenticated station manager due to a serialization grou
Unauthenticated HTTP requests to AzuraCast 0.23.1's internal sftpgo integration endpoints (/api/internal/sftp-auth and /
EUVD-2026-87839
GHSA-c94r-cgjw-f264
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB