Skip to main content

AzuraCast EUVDEUVD-2026-87822

| CVE-2026-100857 HIGH
Code Injection (CWE-94)
2026-09-27 VulnCheck GHSA-64wj-2chj-3r96
8.6
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Obtain account with Media or Profile permission
  2. Delivery
    Inject #{process.run()} payload into playlist URL or metadata
  3. Exploit
    Payload written unsanitized to liquidsoap.liq
  4. Execution
    Station restart triggers Liquidsoap config parse
  5. Persist
    Shell command executes as azuracast user
  6. Impact
    Host compromise / lateral movement

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Code injection prevention, sandbox exec
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Initial 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 AzuraCast account with StationPermissions::Media (to set a playlist remote_url) or StationPermissions::Profile (to set station name/description/genre/url, live_broadcast_text, or dj_mount_point). The malicious payload must be a Liquidsoap string-interpolation sequence (#{...} invoking process.run()) placed in one of those fields. Execution is NOT immediate: it fires only when the affected station's Liquidsoap backend is restarted and re-parses the generated .liq config (the UI:P/interaction-dependent step), so a station restart is a hard prerequisite. Exploitation is limited by needing valid credentials with the relevant permission and applies to AzuraCast <= 0.23.3; it is fixed in 0.23.4. Commands run with the privileges of the azuracast service user, not root.

Impact

This is a genuine remote code execution flaw (CWE-94) with strong technical impact, but its real-world priority is tempered by an authentication requirement and a delayed, interaction-dependent trigger. The vendor CVSS 4.0 vector (AV:N/AC:L/PR:L/UI:P/VC:H/VI:H/VA:H = 8.6) is internally consistent with the description: network-reachable API, low attacker complexity, but requiring a valid account holding Media or Profile permissions (PR:L, not unauthenticated) and passive interaction (UI:P) because injected code only executes when the station's Liquidsoap backend restarts. No EPSS score, no CISA KEV listing, and no in-the-wild data are provided, so there is no evidence of active exploitation - however, a detailed proof-of-concept IS embedded in the GHSA advisory (two working PoCs with exact HTTP requests), so publicly available exploit code exists. The combination of a reliable public PoC, full C/I/A impact, and trivial complexity makes this a real, actionable RCE for any AzuraCast operator, though the PR:L gate and low deployment footprint keep it below the tier of an unauthenticated, mass-exploitable bug. Net: prioritize patching to 0.23.4 for exposed multi-tenant AzuraCast instances, but this is targeted (needs an account) rather than internet-wide wormable. No SSVC decision fields were supplied in the input.

Exploit ScenarioDerived

An authenticated AzuraCast user holding only Media or Profile station permissions submits a playlist remote URL or station metadata field (e.g. description, genre, name) containing a Liquidsoap interpolation payload such as http://x#{process.run('id > /tmp/pwned')}.example.com/stream. The unsanitized value is written verbatim into the generated liquidsoap.liq config, and when the station backend is (re)started the #{process.run(...)} expression is evaluated, executing arbitrary shell commands as the azuracast OS user. A complete PoC with exact API requests is published in the GHSA advisory, lowering the barrier to exploitation.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 27, 2026

Authenticated code injection in AzuraCast 0.23.3 and earlier lets a user holding StationPermissions::Media or StationPermissions::Profile plant Liquidsoap interpolation sequences (#{...}) into playlist remote URLs or station metadata fields, which the ConfigWriter::cleanUpString() helper writes unsanitized into the generated .liq configuration. When the affected station's Liquidsoap backend is next restarted and re-parses that config, the embedded #{process.run(...)} expression is evaluated and executes arbitrary shell commands as the azuracast service user. Exploitation is not confirmed in the wild (no CISA KEV listing), but the vendor advisory publishes proof-of-concept payloads for both the Media-permission and Profile-permission paths; the trigger is delayed and interaction-dependent, requiring a station restart after the malicious value is saved.

RemediationAI

Vendor-released patch: upgrade AzuraCast to 0.23.4 or later, which contains the fixes in commits d04b5c55ce0d867bcb87f49f7082bf8edbcd360c and ff49ef4d0fa571a3661abff6d0a9546ba3ed5df5 (see GHSA-93fx-5qgc-wr38). If an immediate upgrade is not possible, treat the permission boundary as the control surface: revoke StationPermissions::Media and StationPermissions::Profile from all non-administrative accounts, since an account without either permission cannot reach a vulnerable field; the trade-off is that legitimate DJs and media managers lose the ability to set remote playlist sources or edit station metadata until patched. Audit existing station records and the on-disk Liquidsoap configuration files for the literal sequence #{ or process.run( in playlist remote_url, station name, description, genre, url, live_broadcast_text and dj_mount_point values, and remove or restore any matches before the next backend restart - remember that execution only fires on restart, so remediation can be performed while the malicious value is still inert. As defence in depth, run the azuracast service account as an unprivileged, containerised user with no access to secrets beyond its own database credentials and monitor for unexpected child processes spawned by Liquidsoap. Rotate any credentials, API keys and tokens reachable by the azuracast user if suspicious injected values or unexpected process.run() invocations are found.

Affected VersionsENISA

AzuraCast 0 <0.23.4

Affected Packages

composer azuracast/azuracast fix: 0.23.4
euvd azuracast fix: 0.23.4

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

AzuraCast generates its radio automation backend configuration as Liquidsoap scripts (.liq) from user-supplied station settings. Liquidsoap, like Ruby, performs string interpolation inside double-quoted strings: any #{expression} is evaluated as Liquidsoap code, and the process.run() function executes a shell command. The affected helper ConfigWriter::cleanUpString() in backend/src/Radio/Backend/Liquidsoap/ConfigWriter.php (around line 1345) only maps double quotes to single quotes and strips CR/LF characters, leaving #{...} interpolation markers and the backslash escape character untouched. This is a classic CWE-94 code injection: untrusted input is concatenated into an interpreted-language configuration artifact without neutralising the metacharacters of that interpreter. The vulnerable sinks include playlist.remote_url (Media permission) embedded into input.http("...") and input.harbor("..."), plus station name, description, genre and url, backend_config.live_broadcast_text, and dj_mount_point (Profile permission). The CPE cpe:2.3:a:azuracast:azuracast:*:*:*:*:*:*:*:* and the Composer package composer/azuracast/azuracast confirm the upstream project as the affected component through 0.23.3. Commands execute with the privileges of the azuracast service account, not root, which limits blast radius but still permits full application-level compromise and lateral movement within the host.

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 8.6 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 8.0 HIGH

Network API with low complexity but requires a Media/Profile account (PR:L) and a station restart to trigger execution (UI:R); command execution as azuracast user yields full C/I/A within an unchanged scope.

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

Lifecycle Timeline

2
Patch available
Sep 27, 2026 - 03:16 EUVD
CVE Published
Sep 27, 2026 - 01:28 cve.org
HIGH 8.6

DescriptionCVE.org

AzuraCast before 0.23.4 contains a code injection vulnerability in the ConfigWriter::cleanUpString() method that fails to sanitize Liquidsoap string interpolation sequences, allowing authenticated users with Media or Profile permissions to inject arbitrary Liquidsoap code into station configuration. Attackers can inject #{process.run()} expressions into playlist URLs or station metadata fields that execute shell commands as the azuracast user when the station restarts.

Technical POC Analysis

Evidence base: GitHub Security Advisory GHSA-93fx-5qgc-wr38 (reporter q1uf3ng, published Mar 8 2026).

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

AzuraCast deployments running version 0.23.3 or earlier are affected by a high-severity flaw that lets station media or profile administrators trigger arbitrary code execution on the server when the affected station's Liquidsoap service restarts. No vendor-released patch identified at time of analysis, and publicly available exploit code exists, creating a credible insider or compromised-account risk that can disrupt radio automation, expose data, and give attackers control of the azuracast service account. Security leadership should prioritize asset inventory, permission reduction, and monitoring of station configuration changes until a fix is released.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: restrict StationPermissions::Media and StationPermissions::Profile to trusted users; temporarily disable playlist remote URL and station metadata editing for non-essential accounts; validate or strip Liquidsoap interpolation sequences (#{...}) from all user-supplied configuration fields; monitor generated .liq files and Liquidsoap restarts for unexpected changes; run the azuracast service account with least privilege and isolate it from sensitive systems; audit existing metadata and remote URLs for suspicious #{...} content.

Threat Intelligence Overview

EPSS Score
0.3%
Top 76% exploitable
Prevalence
Low
niche self-hosted web-radio automation suite, limited enterprise footprint
Social Media
1
Sightings
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 HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

43
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +43
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.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

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