Skip to main content

AzuraCast EUVDEUVD-2026-87834

| CVE-2026-100854 MEDIUM
Missing Authorization (CWE-862)
2026-09-27 VulnCheck GHSA-m6mg-63cr-44jj
5.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate with View station permission
  2. Delivery
    Send request to public /api/internal/liquidsoap endpoint
  3. Exploit
    Include arbitrary X-Liquidsoap-Api-Key header
  4. Execution
    Endpoint treats caller as AutoDJ
  5. Impact
    Inject 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

AzuraCast 0 <0.23.6

Affected Packages

composer azuracast/azuracast fix: 0.23.6
euvd azuracast fix: 0.23.6

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

Vendor (VulnCheck) PRIMARY 5.3 MEDIUM
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
vuln.today AI 6.3 MEDIUM

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).

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Sep 27, 2026 - 03:16 EUVD

DescriptionCVE.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

EPSS Score
0.2%
Top 96% exploitable
Prevalence
Low
AzuraCast is niche self-hosted web-radio automation software
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy