Description
AzuraCast exposes the Liquidsoap custom configuration fields through an endpoint that does not require the permission guarding them. The backend_config property in backend/src/Entity/Station.php is annotated with GROUP_GENERAL, and PUT /api/station/{station_id}/profile/edit in backend/src/Controller/Api/Stations/ProfileEditController.php deserializes with that group while requiring only StationPermissions::Profile. AbstractArrayEntity::fromArray() then assigns every public property with no field-level permission check, so custom_config_top, custom_config, custom_config_pre_playlists, custom_config_pre_live, custom_config_pre_fade and custom_config_bottom are writable through it. ConfigWriter::writeCustomConfigurationSection() emits those values verbatim into the generated Liquidsoap .liq script, where the process.run() and process.exec() built-ins execute operating system commands when the backend restarts, which the built-in sync task triggers automatically once needs_restart is set. The dedicated endpoint for the same data, PUT /api/station/{id}/liquidsoap-config, requires StationPermissions::Broadcasting, so a station manager holding only the profile permission reaches configuration that the intended boundary reserves for broadcasting operators.
Published: 2026-08-24
Score: 8.7 High
EPSS: < 1% Very Low
KEV: No
Impact: Remote Code Execution
Action: Immediate Patch
AI Analysis

Impact

AzuraCast up to version 0.23.8 has a serialization group bypass that allows a user with only station profile permission to write arbitrary Liquidsoap configuration values. The configuration includes fields that are emitted verbatim into a Liquidsoap .liq script, where built‑ins such as process.run() and process.exec() can execute arbitrary operating system commands when the backend restarts. This flaw, identified as a combination of improper access control (CWE‑863) and code injection (CWE‑94), gives the attacker the ability to run arbitrary commands on the hosting machine, compromising confidentiality, integrity, and availability of the system.

Affected Systems

The vulnerability affects AzuraCast, specifically all releases up to and including 0.23.8. Users deploying these versions expose themselves to the described risk.

Risk and Exploitability

The CVSS score of 8.7 classifies this flaw as high severity, and the flaw is not listed in the CISA KEV catalog yet. Although no EPSS score is provided, the attack path is straightforward for any authenticated user who holds the StationPermissions::Profile for a station, a privilege that is commonly granted. The exploit requires only the ability to send a PUT request to /api/station/{station_id}/profile/edit; upon setting the needs_restart flag, the backend automatically restarts the Liquidsoap instance, triggering the malicious command execution. No additional privileges beyond the standard station manager role are required.

Generated by OpenCVE AI on August 24, 2026 at 20:50 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade AzuraCast to a version in which the patch for the Liquidsoap configuration serialization group bypass has been applied — typically the latest release beyond 0.23.8.
  • After upgrading, verify that the /api/station/{id}/liquidsoap-config endpoint now requires StationPermissions::Broadcasting and that the /api/station/{station_id}/profile/edit endpoint no longer grants write access to custom configuration fields.
  • If an upgrade cannot be performed immediately, restrict custom configuration to avoid using built‑ins that execute system commands (for example, remove process.run() and process.exec() from the Liquidsoap script) and disable automatic restarts triggered by needs_restart, or monitor the application for unexpected restarts.

Generated by OpenCVE AI on August 24, 2026 at 20:50 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 24 Aug 2026 20:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Mon, 24 Aug 2026 18:00:00 +0000

Type Values Removed Values Added
Description AzuraCast exposes the Liquidsoap custom configuration fields through an endpoint that does not require the permission guarding them. The backend_config property in backend/src/Entity/Station.php is annotated with GROUP_GENERAL, and PUT /api/station/{station_id}/profile/edit in backend/src/Controller/Api/Stations/ProfileEditController.php deserializes with that group while requiring only StationPermissions::Profile. AbstractArrayEntity::fromArray() then assigns every public property with no field-level permission check, so custom_config_top, custom_config, custom_config_pre_playlists, custom_config_pre_live, custom_config_pre_fade and custom_config_bottom are writable through it. ConfigWriter::writeCustomConfigurationSection() emits those values verbatim into the generated Liquidsoap .liq script, where the process.run() and process.exec() built-ins execute operating system commands when the backend restarts, which the built-in sync task triggers automatically once needs_restart is set. The dedicated endpoint for the same data, PUT /api/station/{id}/liquidsoap-config, requires StationPermissions::Broadcasting, so a station manager holding only the profile permission reaches configuration that the intended boundary reserves for broadcasting operators.
Title AzuraCast through 0.23.8 Liquidsoap Configuration Write via Profile Edit Serialization Group Bypass
First Time appeared Azuracast
Azuracast azuracast
Weaknesses CWE-863
CWE-94
CPEs cpe:2.3:a:azuracast:azuracast:*:*:*:*:*:*:*:*
Vendors & Products Azuracast
Azuracast azuracast
References
Metrics cvssV3_1

{'score': 8.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'}

cvssV4_0

{'score': 8.7, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N'}


Subscriptions

Azuracast Azuracast
cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-08-29T11:47:49.114Z

Reserved: 2026-08-19T20:34:00.154Z

Link: CVE-2026-76836

cve-icon Vulnrichment

Updated: 2026-08-24T19:59:04.111Z

cve-icon NVD

Status : Received

Published: 2026-08-24T18:17:21.733

Modified: 2026-08-24T20:17:20.080

Link: CVE-2026-76836

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-24T21:00:13Z

Weaknesses
  • CWE-863

    Incorrect Authorization

  • CWE-94

    Improper Control of Generation of Code ('Code Injection')