{"id":"CVE-2026-76836","summary":"AzuraCast through 0.23.8 Liquidsoap Configuration Write via Profile Edit Serialization Group Bypass","details":"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.","aliases":["GHSA-q8wg-3qg7-8pc7"],"modified":"2026-08-30T03:30:28.624236949Z","published":"2026-08-24T17:36:01.620Z","database_specific":{"cwe_ids":["CWE-863","CWE-94"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/76xxx/CVE-2026-76836.json","cna_assigner":"VulnCheck"},"references":[{"type":"ADVISORY","url":"https://github.com/AzuraCast/AzuraCast/security/advisories/GHSA-q8wg-3qg7-8pc7"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/76xxx/CVE-2026-76836.json"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-76836"},{"type":"ADVISORY","url":"https://www.vulncheck.com/advisories/azuracast-through-liquidsoap-configuration-write-via-profile-edit-serialization-group-bypass"},{"type":"PACKAGE","url":"https://github.com/AzuraCast/AzuraCast"},{"type":"ARTICLE","url":"https://github.com/AzuraCast/AzuraCast/blob/0.23.8/backend/src/Entity/Station.php"},{"type":"ARTICLE","url":"https://github.com/AzuraCast/AzuraCast/blob/0.23.8/backend/src/Radio/Backend/Liquidsoap/ConfigWriter.php"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/azuracast/azuracast","events":[{"introduced":"0"},{"last_affected":"62a30e5342ee8e571e02c832d7d2e9809bc81fae"}],"database_specific":{"source":"AFFECTED_FIELD","extracted_events":[{"introduced":"0"},{"last_affected":"0.23.8"}]}}],"versions":["0.23.8","0.23.7","0.23.6","0.23.5","0.23.4","0.23.3","0.23.2","0.23.1","0.23.0","0.22.1","0.22.0","0.21.0","0.20.4","0.20.3","0.20.2","0.20.1","0.20.0","0.19.7","0.19.6","0.19.5","0.19.4","0.19.3","0.19.2","0.19.1","0.19.0","0.18.5","0.18.3","0.18.2","0.18.1","0.18.0","0.17.7","0.17.6","0.17.5","0.17.4","0.17.3","0.17.2","0.17.1","0.17.0","0.16.1","0.16.0","0.15.2","0.15.1","0.15.0","0.14.1","0.10.2","0.10.1","0.10.0","0.9.9","0.9.8.1","0.9.8","0.9.7.1","0.9.7","0.9.6.5","0.9.6.2","0.9.6.1","0.9.6","0.9.5.1","0.9.5","0.9.4.2","0.9.4.1","0.9.4","0.9.3","0.9.2","0.9.1","0.9.0","0.8.0","0.6.0","0.5.0","0.3.3","0.3.2","0.3.1"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-76836.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V4","score":"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"}]}