Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with View station permission
-
DeliverySend request to public /api/internal/liquidsoap endpoint
-
ExploitInclude arbitrary X-Liquidsoap-Api-Key header
-
ExecutionEndpoint treats caller as AutoDJ
-
ImpactInject metadata, disrupt broadcast, leak filesystem paths
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation 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 account holding at least the basic 'View station' permission on the target station (PR:L) - not fully unauthenticated. Exploitation works against default deployments because the /api/internal/{station_id}/liquidsoap/{action} route ships without the RequireInternalConnection middleware, and nginx only enforces the IS_INTERNAL FastCGI parameter on internal port 6010, leaving the endpoint reachable from public ports 80/443. The attacker supplies any arbitrary value for the X-Liquidsoap-Api-Key header; the value is never validated when the ACL check passes. Impact is capped at metadata spoofing, broadcast-tracking disruption, and filesystem path disclosure. Most relevant to multi-tenant AzuraCast installations where untrusted users hold station accounts; single-operator instances face little realistic exposure. |
| Impact | This is a genuine but moderate-severity access-control flaw (CWE-862), not an inflated high-CVSS issue. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L) scores 5.3, consistent with a low-privilege authenticated user achieving low-magnitude confidentiality, integrity, and availability impacts. No EPSS score, no CISA KEV listing, and no separately packaged POC are present in the input - so exploitation status is 'no public exploit identified,' though the GHSA advisory documents the exact vulnerable code (route table, header-presence logic) in enough detail to be effectively reproducible. The key signals align rather than conflict: low privilege requirement plus network vector make it easy to trigger for anyone with a station account, but the ceiling is low (metadata spoofing, broadcast disruption, filesystem path leakage - not RCE or full data theft). The real limiting factor is that the attacker must already hold the basic 'View station' permission on a target station, so the population of attackers is authenticated tenants of a multi-user AzuraCast install. Net: a real priority for multi-tenant AzuraCast operators, low priority for single-operator instances. |
| Exploit ScenarioDerived | A user holding only the basic 'View station' permission sends a GET/POST to the public-facing /api/internal/{station_id}/liquidsoap/{action} endpoint with any arbitrary X-Liquidsoap-Api-Key header value. Because the route lacks the RequireInternalConnection middleware and $asAutoDj is set from header presence rather than a validated key, the request is treated as a privileged AutoDJ call, letting the attacker inject fake now-playing metadata seen by all listeners, disrupt live broadcast tracking, and read back absolute filesystem paths. No standalone POC is published, but the advisory details the exact endpoint and header behavior. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 27, 2026
AzuraCast 0.23.5 and earlier exposes its internal Liquidsoap API endpoint (/api/internal/{station_id}/liquidsoap/{action}) to the public web interface, allowing any authenticated user who holds only the basic View station permission to invoke privileged Liquidsoap commands. The endpoint is missing the RequireInternalConnection middleware that guards the sibling /sftp-auth and /sftp-event routes, and the $asAutoDj flag is derived from the mere presence of the X-Liquidsoap-Api-Key header rather than its validated value, so the header value is never checked when the ACL check passes. Practical impact is bounded to spoofed now-playing metadata visible to all listeners, disruption of live broadcast tracking, and disclosure of absolute filesystem paths (assessed CVSS:3.1 5.3, C:L/I:L/A:L) - a genuine but moderate CWE-862 access-control flaw, most relevant to multi-tenant installations where untrusted users hold station accounts. A vendor fix is available in 0.23.6; no public exploit code has been identified at time of analysis.
RemediationAI
Upgrade AzuraCast to 0.23.6 or later - vendor-released patch: 0.23.6, implemented by commit 13fa7a71435629147b351d3ee151b8de6acd5c8c (https://github.com/AzuraCast/AzuraCast/commit/13fa7a71435629147b351d3ee151b8de6acd5c8c), as documented in advisory GHSA-4fm3-ggg2-c6qx. The fix restores the RequireInternalConnection middleware on the /liquidsoap/{action} route group and corrects the $asAutoDj derivation to key off the validated X-Liquidsoap-Api-Key value rather than header presence. If immediate upgrade is not possible, the highest-value compensating control is to block external access to the /api/internal/ path prefix at the reverse proxy (return 403 for requests to /api/internal/* originating from ports 80/443) while allowing it only from the internal port 6010 listener; the trade-off is that any other legitimate internal callers routed through the public vhost will break, so verify Liquidsoap's callback path before applying. A second mitigation is to audit and restrict StationPermissions::View grants so only fully trusted accounts can view a station, which removes the required precondition (PR:L) at the cost of reduced multi-user functionality; note that this does not fix the underlying endpoint exposure. There is no configuration flag that simply disables the affected commands, so proxy-level blocking plus least-privilege station permissions are the only practical interim measures, and the residual risk of metadata spoofing and path disclosure persists until 0.23.6 is deployed.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in composer, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
CWE-862 (Missing Authorization) is the root cause here, manifesting as a defense-in-depth middleware gap combined with flawed authentication logic in AzuraCast's internal API layer. The application defines an internal-only surface (route group in backend/config/routes/api_internal.php) intended to be reachable solely through Liquidsoap's internal connection; the sftp-auth and sftp-event endpoints correctly attach Middleware\RequireInternalConnection, but the liquidsoap route group added on lines 17-21 does not. The nginx template (util/docker/web/nginx/azuracast.conf.tmpl) only sets the IS_INTERNAL FastCGI parameter on the internal port 6010 server block, not on the public ports 80/443 block, so without the middleware the route is fully reachable from the Internet. The second defect lives in backend/src/Controller/Api/Internal/LiquidsoapAction.php: line 34 sets $asAutoDj = $request->hasHeader('X-Liquidsoap-Api-Key'), testing header PRESENCE rather than value, while the adapter API key is only validated (via validateAdapterApiKey) inside the branch that runs when the ACL check fails. A session- or API-authenticated user with StationPermissions::View therefore passes the ACL check, never reaches the key-validation branch, and still carries $asAutoDj = true from an arbitrary header value - escalating an unprivileged metadata/read context into privileged Liquidsoap action execution. The affected package is composer/azuracast/azuracast, vulnerable through 0.23.5, fixed in 0.23.6.
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:L/VI:L/VA:L/SC:N/SI:N/SA:N
Network-reachable public endpoint (AV:N/AC:L) but needs a low-privilege View account (PR:L); impacts are all low - path disclosure (C:L), metadata injection (I:L), broadcast disruption (A:L).
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
AzuraCast before 0.23.6 lacks RequireInternalConnection middleware on the Liquidsoap API endpoint and incorrectly derives the AutoDJ flag from header presence rather than validated value. Users with View station permission can inject arbitrary now-playing metadata, disrupt live broadcasts, and disclose filesystem paths.
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
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-87834
GHSA-m6mg-63cr-44jj
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB