Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with station Media permission
-
DeliverySet playlist remote_url to file:// or internal HTTP
-
ExploitAutoDJ fetches via file_get_contents()
-
ExecutionLines parsed and stored in queue
-
ImpactRead queue via API to exfiltrate file/response contents
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 user with the station Media permission to create/update a playlist configured with source=remote_url and remote_type=playlist. The deployment must have PHP allow_url_fopen enabled - this is the default, including the official Docker image, so it is the common case. Retrieving the disclosed data additionally requires an account with the station Broadcasting permission reading GET /api/station/{station_id}/queue (a single user can hold both permissions and complete the chain). Exploitation is limited by needing valid low-privilege authentication and by being confined to files/HTTP endpoints readable by the web container; at publication no patched version existed, so mitigation depends on disabling allow_url_fopen or restricting Media-permission accounts. |
| Impact | This is a legitimate but moderate-priority issue whose real-world risk is bounded by authentication and impact type rather than reach. The vendor CVSS 4.0 base is 4.8 (AV:L/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:L). Two of the vendor's metric choices are questionable: AV:L is inconsistent with the description, which describes exploitation entirely through authenticated web API calls (POST/PUT to create/update a playlist, then GET /api/station/{id}/queue) - that is a network vector (AV:N), not local. More importantly VC:N contradicts the core of the finding, which is disclosure of host files such as /etc/passwd and the application .env (secrets/DB credentials) - that is a real, potentially high confidentiality impact, not none. My independent read scores confidentiality materially higher (see assessed vectors). Exploitation status: no public exploit identified at time of analysis - there is no EPSS score, no CISA KEV listing, and no POC referenced in the two provided advisories (AzuraCast GHSA-rrjx-wrhf-8v47 and VulnCheck). No SSVC decision data was supplied. The mitigating realities: it requires an authenticated account with the station Media permission (PR:L), and at publication no patched version existed, so defenders must rely on configuration hardening. Net: a real but lower-tier priority - an authenticated info-disclosure/SSRF, not a wormable unauthenticated RCE. |
| Exploit ScenarioDerived | An authenticated user holding the station Media permission creates or edits a playlist with source=remote_url and remote_type=playlist, setting remote_url to file:///etc/passwd, file://.../.env, or an internal/loopback/link-local HTTP endpoint (e.g. cloud metadata). When AutoDJ builds the queue, the backend calls file_get_contents() on that URL with no scheme allowlist and no private-IP policy (allow_url_fopen is on by default, including the Docker image), parses the returned lines as M3U/PLS entries, and stores them in StationQueue.autodj_custom_uri, where any user with Broadcasting permission reads them back via GET /api/station/{id}/queue. No public exploit is known, but the mechanics are fully described in the advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 27, 2026
AzuraCast deployments before 0.23.8 expose a server-side request forgery and local file read flaw in the AutoDJ remote playlist fetcher, letting an authenticated user who holds the station Media permission point a remote_url playlist at a file:// path or an internal/loopback HTTP endpoint and have the backend fetch it with file_get_contents(). The retrieved lines are stored as queue entries and then disclosed through GET /api/station/{station_id}/queue to any user with the Broadcasting permission, exposing host files readable by the web container (such as /etc/passwd or the application .env) and the bodies of non-blind internal HTTP requests. Exploitation is bounded by valid low-privilege authentication and by the privileges of the web container, and no public exploit code was identified at time of analysis; the advisory data states that no patched version was available at publication, so mitigation depends on disabling PHP allow_url_fopen or tightening Media-permission access.
RemediationAI
Upgrade to AzuraCast 0.23.8 or later, the version boundary referenced in the advisory title and the affected-version range, and verify the deployed Docker image tag or package version actually corresponds to that release; note that the provided data also states no patched version was available at the time of publication, so confirm availability against GHSA-rrjx-wrhf-8v47 before relying on the upgrade alone. Where an upgrade cannot be applied immediately, disable PHP allow_url_fopen in the web container's php.ini (this stops the file:// and http:// wrappers at the sink, but will also break legitimate outbound remote-playlist fetching and any other feature relying on URL-aware file functions), and restrict who holds the station Media and Broadcasting permissions so that creating remote_url playlists and reading the queue API are limited to trusted operators - revoking either permission breaks the exploitation chain. Additional compensating controls include running the web container with a read-only filesystem and least-privilege service account so sensitive files such as /etc/passwd and the application .env are not readable, moving credentials out of files reachable by the PHP process, and enforcing egress filtering at the container or host network layer to block loopback, link-local (169.254.0.0/16), and cloud metadata endpoints; each of these reduces impact only, is not a substitute for patching, and egress filtering carries the trade-off of potentially disrupting legitimate internal integrations.
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
The root cause is CWE-918 (Server-Side Request Forgery) combined with an unvalidated scheme and destination policy in backend/src/Radio/AutoDJ/QueueBuilder.php, specifically getMediaFromRemoteUrl(): user-supplied remote_url values are passed directly to PHP's file_get_contents() with no URL scheme allowlist and no blocklist for loopback, link-local, or cloud metadata addresses. Because PHP's allow_url_fopen is enabled by default - including in the official AzuraCast Docker image - file:// and http:// wrappers are both usable, so the same sink supports arbitrary local file reads and SSRF against internal services. Fetched content is interpreted as M3U/PLS playlist lines, persisted into StationQueue.autodj_custom_uri during AutoDJ queue construction, and surfaced through the station queue API, turning a server-side fetch into a stored disclosure channel. The supplied CVSS 4.0 vector rates the issue AV:L/PR:L with low confidentiality scope, whereas the independent assessment scores it CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N, reflecting that the interaction occurs over the web API but requires an existing low-privilege account; the affected CPE cpe:2.3:a:azuracast:azuracast:*:*:*:*:*:*:*:* is version-wildcarded, and the advisory context identifies releases before 0.23.8 as the vulnerable boundary.
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:L/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:L
Exploited over the web API by a low-privilege authenticated user (PR:L, AV:N); primary impact is disclosure of secrets like .env/DB creds (C:H) with no integrity or availability effect.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
AzuraCast before 0.23.8 contains a server-side request forgery and local file read vulnerability in the AutoDJ remote playlist fetch (backend/src/Radio/AutoDJ/QueueBuilder.php, getMediaFromRemoteUrl()). A user with the station Media permission can create or update a playlist with source=remote_url and remote_type=playlist whose remote_url points at a file:// path or an internal/loopback/link-local HTTP endpoint. When AutoDJ builds the queue, the backend passes the user-supplied URL directly to file_get_contents() with no scheme allowlist and no private/loopback/metadata IP policy (PHP allow_url_fopen is enabled by default, including in the Docker image). Lines from the fetched resource are parsed as M3U/PLS entries, stored in StationQueue.autodj_custom_uri, and returned by GET /api/station/{station_id}/queue to any user with the Broadcasting permission, disclosing host files readable by the web container (for example /etc/passwd or the application .env) and the bodies of non-blind internal HTTP requests. No patched version was available at the time of publication.
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-87838
GHSA-r4xq-h58x-54m9
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB