Skip to main content

AzuraCast CVE-2026-121432

| EUVDEUVD-2026-115854 MEDIUM
Improper Neutralization of CRLF Sequences ('CRLF Injection') (CWE-93)
2026-11-03 VulnCheck GHSA-w4gr-g696-2mxp
5.1
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as low-priv station user
  2. Delivery
    Set mount display_name with embedded CR/LF
  3. Exploit
    Injected FileN=/TitleN= stored in public playlist.pls
  4. Execution
    Guest downloads station playlist
  5. Impact
    Media player streams attacker-controlled URL under victim's name

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization CRLF sequence sanitization
Exploitation Conditions

Requires an authenticated station user with the Station:MountPoints or Station:RemoteRelays permission on at least one station (no admin needed), because display_name is writable only through those roles. The station's public page must be enabled (the default) so guests can fetch GET /public/{station}/playlist.pls. Exploitation is second-order and depends on victim interaction: an unauthenticated guest must download the .pls playlist AND use a media player that honors injected FileN= entries (many ignore NumberOfEntries). Limiting factors: the low-privilege-but-authenticated prerequisite, the reliance on guest download plus a tolerant player, and the fact that impact is confined to content spoofing/listener redirection (no code execution, no data exposure). Workaround per the advisory: disable the public page or unset the affected mounts' is_visible_on_public_pages flag so the playlist is not served to guests.

Impact

This is a genuine but low-severity, content-spoofing issue rather than a high-priority emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:L/VA:N, scored 5.1) and the vendor's own CVSS 3.1 equivalent (AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:L/A:N, 3.5) agree: network-reachable and low-complexity, but requiring authenticated low-privilege access (PR:L) plus victim interaction (UI:P/R), with only a limited integrity impact (VI:L/I:L) and no confidentiality, availability, code execution, or data exposure. The vuln.today decision label is 'this_month' - a routine, scheduled-remediation priority, not act_now/emergency. No CISA KEV listing and no EPSS score were supplied, so there is no signal of active or probabilistic exploitation; absence of these is not evidence of safety but does not elevate priority. A detailed public PoC with full reproduction steps exists in the GitHub Security Advisory (GHSA-cqgx-rqjr-5gf4), which lowers the bar to reproduce. The strongest signal tempering risk is the privilege requirement and the second-order nature of the attack: an attacker must already hold a Station:MountPoints or Station:RemoteRelays role on a station and depends on an unauthenticated guest downloading the playlist into a tolerant media player. Net: a real but narrow abuse-of-role/listener-phishing bug, appropriate for scheduled patching, not crisis response.

Exploit ScenarioDerived

A low-privilege user holding Station:MountPoints (or Station:RemoteRelays) permission on one station sets a mount's display_name to a value containing CR/LF sequences followed by injected FileN=/TitleN= lines. Because display_name is only length-truncated and never CR/LF-filtered, those lines are written raw into the guest-facing playlist.pls; an unauthenticated listener who downloads the station's public playlist has their media player redirected to an attacker-controlled stream presented under the victim station's name. A full working PoC (curl commands plus a negative control) is published in the GitHub Security Advisory.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available

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

Alert me

AnalysisAIv1 – Nov 03, 2026

CRLF injection in AzuraCast's public PLS playlist generation lets a station user who holds only the Station:MountPoints or Station:RemoteRelays permission plant extra FileN=/TitleN= entries into /public/{station}/playlist.pls, pointing guest listeners at an attacker-controlled stream that still displays the victim station's own name. The advisory scopes affected installations as AzuraCast before 0.24.0 and verifies the flaw on rolling release commit 2cb84e2f874d08ad9ff743ebda94fb30bc77041f; exploitation is second-order and depends on a guest downloading the playlist and using a media player that honors the injected entries, so impact stays within content spoofing and listener redirection with no code execution and no data exposure (assessed CVSS:3.1 AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:L/A:N). Step-by-step reproduction requests are published in GitHub advisory GHSA-cqgx-rqjr-5gf4, so a public PoC reference exists, but it is not verified as working exploit code; no CISA KEV entry or other active-exploitation signal is present, and priority is this_month.

RemediationAI

Vendor-released fix: upgrade to AzuraCast 0.24.0, the version that bounds the advisory's 'before 0.24.0' scope, and confirm against the release notes and https://github.com/AzuraCast/AzuraCast/security/advisories/GHSA-cqgx-rqjr-5gf4 before rolling out, because the composer package metadata provided here still listed the package with no fixed version. The upstream fix suggested in the advisory is to strip CR/LF and other control characters from display_name either in the StationMount/StationRemote entity setters, which also covers the ExportAction.php playlist export path that writes media title/artist raw, or when assembling the audio/x-scpls output in PlaylistAction.php; teams running modified or forked code should apply that filtering themselves rather than waiting on a package bump. If upgrading immediately is not possible, the advisory's documented workaround is to disable the station public page, or to clear is_visible_on_public_pages on the affected mounts and remote relays, so /public/{station}/playlist.pls is no longer served to guests - the trade-off is that guests lose the public playlist and the associated stream-discovery entry points for those stations. Because the prerequisite is an authenticated low-privilege station user, auditing which accounts hold Station:MountPoints or Station:RemoteRelays and reviewing existing mount and remote relay display_name values for embedded CR/LF sequences limits exposure in the interim.

Affected VersionsENISA

AzuraCast 0 <0.24.0

Affected Packages

euvd azuracast fix: 0.24.0

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 PHP/Symfony self-hosted radio streaming platform; station mounts and remote relays are Doctrine ORM entities (StationMount.php, StationRemote.php) whose display_name column is declared as ORM\Column(length: 255) and whose setter only calls truncateNullableString(), with no CR/LF or control-character filtering. PlaylistAction.php then builds each stream entry as the station name concatenated with ' - ' plus the mount's display_name and serializes it into an audio/x-scpls body as FileN=/TitleN=/LengthN= lines joined with a literal newline, so a newline embedded in display_name terminates the intended Title line and starts entirely new key/value lines in the generated file. That is the classic CWE-93 pattern (improper neutralization of CRLF sequences), with a secondary CWE-79 content-spoofing consequence because the injected TitleN= text is rendered to victims under the legitimate station's branding. Notably, mount stream URLs are station-derived and not user-editable, so CRLF injection is the only route by which a MountPoints-level user can redirect the public playlist to an arbitrary external stream, exceeding their role's intended envelope. The advisory also notes the same unsanitized field feeds the station playlist export path (ExportAction.php), which writes media title/artist raw; a setter-side fix would cover both. Deployment context in the report is Docker, station public page enabled (the default), with the playlist served via GET /public/{station}/playlist.pls in the default 'pls' format.

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.1 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
vuln.today AI 3.5 LOW

Network-reachable playlist endpoint (AV:N, AC:L); attacker needs a low-privilege station role to set display_name (PR:L); a guest must download and open the playlist (UI:R); only playlist integrity is affected (I:L), no C or A impact.

3.1 AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:L/VA:N/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
Passive
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Nov 03, 2026 - 16:17 EUVD

DescriptionCVE.org

AzuraCast before 0.24.0 contains a CRLF injection vulnerability that allows low-privilege station users to inject playlist entries by embedding CR/LF sequences in mount or remote relay display_name values. Attackers with Station:MountPoints or Station:RemoteRelays permission can inject FileN= and TitleN= lines into the public playlist.pls to redirect guest listeners to attacker-controlled streams under the victim station's name.

Threat Intelligence Overview

Prevalence
Low
self-hosted internet-radio station software, niche audience, limited enterprise footprint
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium

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 N/A
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
None
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

Attack Technique

Code Injection CRITICAL

Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.

CVE-2023-2531 CRITICAL POC
9.8 May 05

Improper Restriction of Excessive Authentication Attempts in GitHub repository azuracast/azuracast prior to 0.18.3. Rate

CVE-2026-100852 HIGH
8.7 Sep 27

Command execution as the Liquidsoap process user is possible in AzuraCast through 0.23.x when an authenticated station u

CVE-2023-2191 MEDIUM POC
4.8 Apr 20

Cross-site Scripting (XSS) - Stored in GitHub repository azuracast/azuracast prior to 0.18. Rated medium severity (CVSS

CVE-2026-100856 HIGH
8.7 Sep 27

Code injection in AzuraCast through 0.23.5 lets an authenticated user holding the RemoteRelays station permission inject

CVE-2026-76836 HIGH
8.7 Aug 24

Remote code execution in AzuraCast ≤0.23.8 is reachable by any authenticated station manager due to a serialization grou

CVE-2026-100847 HIGH
8.7 Sep 27

Unauthenticated DQL injection in AzuraCast before 0.23.8 allows remote attackers to extract sensitive database informati

CVE-2026-121429 HIGH
8.7 Nov 03

Authenticated command injection in AzuraCast through 0.23.8 lets any station user holding the standard Profile permissio

CVE-2026-121428 HIGH
8.7 Nov 03

Authenticated station managers in AzuraCast through 0.23.8 can turn a station profile edit into root-level command execu

CVE-2026-121427 HIGH
8.7 Nov 03

Configuration injection in AzuraCast through 0.23.8 lets an authenticated station user who holds only the 'Manage statio

CVE-2026-100857 HIGH
8.6 Sep 27

Authenticated code injection in AzuraCast 0.23.3 and earlier lets a user holding StationPermissions::Media or StationPer

CVE-2026-100853 HIGH
8.2 Sep 27

Unauthenticated media exposure in AzuraCast before 0.23.8 allows remote attackers to download audio files that station o

CVE-2025-67737 LOW POC
3.7 Dec 12

Unauthenticated HTTP requests to AzuraCast 0.23.1's internal sftpgo integration endpoints (/api/internal/sftp-auth and /

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