Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with any low-privilege account
-
ExploitEnumerate target station_id and media_id
-
ExecutionPOST attacker JSON to unguarded waveform route
-
ImpactOverwrite cached waveform, corrupting victim station Visual Cue Editor data
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 a valid AzuraCast login of the lowest privilege tier - any authenticated account with zero station assignment suffices (PR:L); no admin or station grant is needed. The attacker also needs network reach to the API and a target station_id plus a media_id to address (enumerable/guessable). The specific affected feature is the station-scoped waveform endpoints GET/POST /api/station/{station_id}/waveform/{media_id} (GetWaveformAction / PostCacheWaveformAction), which - unlike sibling /quota, /art, and /files/* routes - carry no Permissions(StationPermissions) middleware. LIMITING FACTORS: exploitation requires authentication (not anonymous); impact is confined to per-media cached waveform JSON (disclosure and overwrite), not the media files, credentials, arbitrary filesystem paths, or availability; affects installations on the rolling main branch / before the fixed release. No user interaction and no non-default configuration are required - the gap is present in the default compiled route table. |
| Impact | This is a genuine but moderate-priority access-control flaw, not a critical emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) scoring 5.3 Medium is consistent with the mechanism: network-reachable, low complexity, no user interaction, but requiring PR:L - any authenticated account. Impact is deliberately bounded (VC:L/VI:L/VA:N): cross-station disclosure and tampering of cached waveform JSON only, not media files, credentials, or arbitrary paths. There is NO KEV listing and NO EPSS score in the provided data, so active-exploitation and statistical-likelihood signals are simply absent rather than negative. The vuln.today decision label is 'this_month' (not act_now/emergency), aligning with a medium severity. A public PoC exists in the GHSA advisory but it dynamically proves the missing-middleware gap via route-table reflection - it is not verified as a full working HTTP exploit against a live multi-user instance. The authentication requirement (PR:L) and the narrow, non-destructive impact are the main factors keeping real-world risk below the raw network-vector reading. One data conflict to flag: the CVE description says 'before 0.24.0' (implying 0.24.0 fixes it), while the package evidence states 'fixed in: not yet patched' and the advisory confirms against rolling main as of 2026-09-04 with no version-gated history - verify the actual fixed version with the vendor. |
| Exploit ScenarioDerived | An attacker registers or obtains any low-privilege AzuraCast account with no station assignment, then sends an authenticated POST to /api/station/{station_id}/waveform/{media_id} targeting a station they have no access to. Because the route carries no Permissions middleware, the attacker-supplied JSON body overwrites that station's cached waveform file, corrupting the Visual Cue Editor data its legitimate operators will next edit; the GET counterpart similarly leaks another station's cached waveform. A public PoC in the GHSA advisory demonstrates the missing-authorization mechanism via live route-table introspection, though it is not a verified end-to-end HTTP exploit. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 03, 2026
AzuraCast's station waveform endpoints (GET and POST /api/station/{station_id}/waveform/{media_id}) are missing the Permissions middleware that every sibling station-scoped media route carries, so any authenticated user - even one with no station assignment at all - can read another station's cached waveform JSON and overwrite it with arbitrary content. Successful abuse gives limited cross-station data disclosure and limited tampering with the Visual Cue Editor waveform data, not access to media files, credentials, or arbitrary filesystem paths (CVSS 3.1: AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N; CVSS 4.0 base 5.3). Authentication of the lowest privilege tier is required and the attacker must reach the API with a target station_id and media_id; VulnCheck and the upstream advisory provide a PoC reference that boots the real application and introspects its compiled route table to prove the missing middleware - it is not verified as working end-to-end exploit code, and there is no KEV listing or active-exploitation reporting.
RemediationAI
Apply the vendor fix by adding ->add(new Middleware\Permissions(StationPermissions::Media, true)) to both the api:stations:media:waveform (GetWaveformAction) and api:stations:media:waveform-cache (PostCacheWaveformAction) route registrations in backend/config/routes/api_station.php, matching the gating already used on sibling /art, /quota and /files/* routes, and upgrade to the release identified in the vendor advisory - the CVE record names 0.24.0 as the fixed version, but the GHSA package metadata supplied here reports the main branch as not yet patched, so verify the exact patched tag at https://github.com/AzuraCast/AzuraCast/security/advisories/GHSA-q3x9-qgv6-hgq3 before relying on a version number. Until a build containing the middleware is deployed, the effective compensating control is to shrink the authenticated population, because the flaw needs only the lowest privilege tier with zero station assignment: audit and remove API accounts that do not need access (side effect: legitimate read-only or unassigned users lose API access), or front the /api/station/*/waveform/* endpoints with a reverse-proxy or WAF rule restricting them to known management IPs (side effect: breaks waveform loading for remote clients and the Visual Cue Editor unless those clients are proxied through an allowed address). Also add a regression test asserting every route in the RequireLogin-gated station group that touches a StationMedia or station-owned resource carries a Permissions middleware, since this is the second reported occurrence of this exact class of gap in the codebase.
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
AzuraCast is a self-hosted PHP radio-streaming and automation platform distributed as the Composer/Packagist package azuracast/azuracast and built on the Slim framework. Routes are declared in backend/config/routes/api_station.php inside an "Authenticated Functions" group that is gated only by Middleware\RequireLogin; per-station authorization is normally applied as route-level Middleware\Permissions(StationPermissions::X, true), as seen on the sibling /quota, /art, /files/*, /mounts/*, /reports/* and /webhooks/* routes. The {station_id} argument is resolved by Middleware\GetStation, which performs only a repository lookup (findByIdentifier) and attaches the Station record to the request without any ACL evaluation, and neither affected controller performs an inline check. GetWaveformAction calls mediaRepo->requireByUniqueId($mediaId, $station), computes the waveform if no cache file exists, and streams waveforms/{unique_id}.json from the station's filesystem; PostCacheWaveformAction takes the fully attacker-controlled parsed request body via Types::arrayOrNull() and passes it to StationMediaRepository::saveWaveformData(), which re-encodes (but does not otherwise validate) it into waveforms/{unique_id}.json on the victim station's filesystem. The root cause class is CWE-862 (Missing Authorization): a specific omission in route registration rather than an intentionally public feature, since the same StationMedia resource is permission-gated everywhere else. The trigger condition is documented - an authenticated request to either route for a station the caller has no rights to - and the advisory demonstrates it dynamically by booting the real app and reflecting on the live compiled Slim route middleware stack; a full HTTP walkthrough against MySQL/Redis with two low-privilege users was explicitly not performed.
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:N/SC:N/SI:N/SA:N
Network-reachable low-complexity route needing only any logged-in account (PR:L), no interaction; limited cross-station waveform disclosure (C:L) and cache overwrite (I:L), no availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
AzuraCast before 0.24.0 contains a missing authorization vulnerability in the GET and POST /api/station/{station_id}/waveform/{media_id} routes, which lack Permissions middleware. Any authenticated user without station assignment can read another station's cached waveform JSON and overwrite it with attacker-supplied data, corrupting Visual Cue Editor data.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Improper Restriction of Excessive Authentication Attempts in GitHub repository azuracast/azuracast prior to 0.18.3. Rate
Command execution as the Liquidsoap process user is possible in AzuraCast through 0.23.x when an authenticated station u
Cross-site Scripting (XSS) - Stored in GitHub repository azuracast/azuracast prior to 0.18. Rated medium severity (CVSS
Code injection in AzuraCast through 0.23.5 lets an authenticated user holding the RemoteRelays station permission inject
Remote code execution in AzuraCast ≤0.23.8 is reachable by any authenticated station manager due to a serialization grou
Unauthenticated DQL injection in AzuraCast before 0.23.8 allows remote attackers to extract sensitive database informati
Authenticated command injection in AzuraCast through 0.23.8 lets any station user holding the standard Profile permissio
Authenticated station managers in AzuraCast through 0.23.8 can turn a station profile edit into root-level command execu
Configuration injection in AzuraCast through 0.23.8 lets an authenticated station user who holds only the 'Manage statio
Authenticated code injection in AzuraCast 0.23.3 and earlier lets a user holding StationPermissions::Media or StationPer
Unauthenticated media exposure in AzuraCast before 0.23.8 allows remote attackers to download audio files that station o
Unauthenticated HTTP requests to AzuraCast 0.23.1's internal sftpgo integration endpoints (/api/internal/sftp-auth and /
EUVD-2026-115852
GHSA-5p6h-gpj3-x86x
NVD
CVE.org
Exploit-DB