Skip to main content

AzuraCast EUVDEUVD-2026-115853

| CVE-2026-121431 MEDIUM
Server-Side Request Forgery (SSRF) (CWE-918)
2026-11-03 VulnCheck GHSA-8x7j-92r4-99vr
6.9
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Obtain station account with WebHooks permission
  2. Delivery
    Create Mastodon/Telegram/GroupMe/RadioReg webhook targeting internal URL
  3. Exploit
    Invoke PUT /station/{id}/webhook/{id}/test
  4. Execution
    Server sends outbound request to loopback/private/metadata endpoint
  5. Impact
    Read internal or cloud-metadata response from webhook logs

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Credential 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 user holding the station-scoped StationPermissions::WebHooks permission for any station (despite the supplied CVSS PR:N, the vendor advisory makes this permission mandatory). The attacker must use one of the four unpatched connectors - Mastodon (instance_url), Telegram (api), GroupMe (api), or RadioReg (webhookurl) - set its destination to an internal address, and trigger the test webhook endpoint (PUT /station/{id}/webhook/{id}/test) for immediate dispatch. Limiting factors: the WebHooks permission gate (not anonymous); only these four connectors are affected while Generic/Discord/MatomoAnalytics are already guarded by UserUrlFilter; and the highest-value outcomes (cloud-metadata credential theft, Docker-internal pivoting) depend on the instance running in a cloud/containerized environment where such internal endpoints are reachable. Affected: all versions through 0.23.8 including the earlier GHSA-3jp3-3wqw-jvw4 fix; resolved only in 0.24.0.

Impact

This is a genuine but moderate-priority issue rather than a high-CVSS-but-low-real-risk one, and the signals are mostly consistent. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) scores 6.9 (medium) and emphasizes remote, low-complexity reach with limited integrity/confidentiality impact that lands on subsequent systems (SC:L/SI:L/SA:L) - exactly matching an SSRF that pivots from AzuraCast into internal services. However, there is a clear conflict: the supplied CVSS uses PR:N (unauthenticated), yet the vendor GHSA advisory states the attack requires the station-scoped StationPermissions::WebHooks permission, so real exploitation is authenticated-insider or compromised-account, not anonymous - treat PR:N as inaccurate and PR:L as correct. No EPSS score was provided and the CVE is not in CISA KEV, so there is no evidence of widespread or active exploitation; vuln.today assigns a 'this_month' decision label (not act_now/emergency), consistent with an authenticated SSRF rather than a drive-by. The sharpest risk is deployment-dependent: in cloud or Docker-hosted AzuraCast instances the advisory explicitly demonstrates reaching 169.254.169.254 (cloud metadata) and 172.17.0.1 Docker-internal services, and responses are written to logs - so an attacker with WebHooks permission can read internal/metadata responses, potentially harvesting cloud credentials. Because this is an incomplete fix of GHSA-3jp3-3wqw-jvw4 (the guard was applied to only 3 of 7 connectors), environments that believed they were patched remain exposed, which raises practical urgency above the raw score for cloud-hosted operators.

Exploit ScenarioDerived

A low-privilege station user (or someone who has phished/compromised such an account) with the WebHooks permission creates a Mastodon, Telegram, GroupMe, or RadioReg webhook whose destination (instance_url, api, or webhookurl) points at an internal address such as http://169.254.169.254 or a Docker-internal service, then invokes the test endpoint (PUT /station/{id}/webhook/{id}/test) to force an immediate outbound request. The server issues the request to the internal target and logs the response, letting the attacker read cloud-metadata or private-service responses. No weaponized public exploit code is confirmed, but the vendor GHSA advisory publishes a complete step-by-step reproduction chain, and with AV:N/AC:L the technical barrier to reproduction is low.

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

Server-side request forgery in AzuraCast through 0.23.8 lets any station user holding the station-scoped WebHooks permission make the AzuraCast server issue outbound HTTP requests to attacker-chosen internal addresses. The flaw is an incomplete fix for GHSA-3jp3-3wqw-jvw4: the Mastodon (instance_url), Telegram (api), GroupMe (api) and RadioReg (webhookurl) connectors were never routed through the UserUrlFilter guard, so a low-privilege user can point them at loopback, private-network or cloud-metadata endpoints and fire the test webhook endpoint (PUT /station/{id}/webhook/{id}/test) for immediate dispatch, with the response captured in the HTTP log. Exploitation is gated by the WebHooks permission rather than being anonymous, and the highest-impact outcomes (metadata credential theft, Docker-internal pivoting) depend on such endpoints being reachable from the host; no public exploit code was identified at time of analysis and the issue is prioritised as a this-month item rather than an emergency.

RemediationAI

Upgrade to AzuraCast 0.24.0, the first release where these four connectors route their destinations through UserUrlFilter::filterSensitiveUserUrl(); there is no in-band fix for 0.23.8 and earlier, since applying the filter to Mastodon, Telegram, GroupMe and RadioReg is exactly the upstream change (advisory: https://github.com/AzuraCast/AzuraCast/security/advisories/GHSA-qh22-76gf-qwc4). If the upgrade cannot be scheduled immediately, the effective compensating control is to remove the station-scoped WebHooks permission (StationPermissions::WebHooks) from all users who do not strictly need it, since that permission is the sole gate on the attack chain - the trade-off is that legitimate station managers lose the ability to configure or test webhooks until you restore it. Additionally, restrict outbound egress from the AzuraCast container or host so it cannot reach 169.254.169.254, loopback and private RFC1918 ranges, and avoid running the instance on a Docker network with reachable internal services such as MySQL; the trade-off is that webhooks or integrations which legitimately target internal infrastructure will break. Reviewing existing webhook configurations for Mastodon, Telegram, GroupMe and RadioReg connectors with internal-looking instance_url, api or webhookurl values, and inspecting logged HTTP responses for those connectors, will show whether the bypass has already been exercised.

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 (Composer-packaged) self-hosted web radio station manager, and its webhook subsystem dispatches outbound HTTP calls through a Guzzle-style HTTP client for each configured connector. CWE-918 arises here because the destination URLs for four connectors are taken directly from station-manager-supplied configuration rather than being validated against private address space. The earlier GHSA-3jp3-3wqw-jvw4 fix introduced UserUrlFilter::filterSensitiveUserUrl() (with a Version20260807193430 migration) and applied it only to Generic, Discord and MatomoAnalytics; Mastodon instead relies on Urls::parseUserUrl(), which only checks URL syntax and the http/https scheme without resolving the hostname or checking whether the resulting IP is loopback, private or reserved, while Telegram and GroupMe simply rtrim() a user-overridable api field that defaults to api.telegram.org / api.groupme.com, and RadioReg posts straight to a user-controlled webhookurl. Because these connectors use the same HTTP client as the protected ones, the SSRF guard is bypassed entirely rather than merely weakened; the response body is written via logHttpResponse(), giving the attacker a partial read channel. Public packaging data records composer/azuracast/azuracast as vulnerable at <=0.23.8 and fixed in 0.24.0, and CPE cpe:2.3:a:azuracast:azuracast:*:*:*:*:*:*:*:* matches the whole 0.23.x line including builds carrying the previous fix.

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

Requires station-scoped WebHooks permission so PR:L (not PR:N); network/low-complexity SSRF changes scope (S:C) to reach internal services, with limited read via logged responses (C:L) and limited request forgery (I:L), no availability impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:L

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
Low

Lifecycle Timeline

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

DescriptionCVE.org

AzuraCast before 0.24.0 contains a server-side request forgery vulnerability that allows station users with WebHooks permission to bypass the UserUrlFilter guard via the Mastodon, Telegram, GroupMe, and RadioReg connectors. Attackers can set instance_url, api, or webhookurl to internal addresses and trigger the webhook test endpoint to reach loopback, private-network, or cloud-metadata services.

Threat Intelligence Overview

Prevalence
Low
self-hosted internet-radio management platform, niche audience despite open-source popularity
Social Media
1
Sightings
Data Quality
3 sources
Confidence: Low

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· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact· derived
Medium

Priority Score

34
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +34
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

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