{"schema":"threatline.record/2","record":{"id":"CVE-2026-100849","aliases":["GHSA-3jp3-3wqw-jvw4"],"summary":"AzuraCast before 0.23.8 SSRF Filter Bypass via Hostname and Private IPs","details":"AzuraCast is a self-hosted web radio management suite. In AzuraCast before 0.23.8, the station webhook URL validation in AbstractConnector::getValidUrl() (backend/src/Webhook/Connector/AbstractConnector.php), used by the Generic and Discord webhook connectors, rejects only URLs whose host is a literal link-local IP address (169.254.0.0/16 or fe80::/10). Loopback addresses and RFC1918 private ranges are not rejected, and any non-literal-IP hostname causes the IP parsing call to throw, which skips the check entirely. A user holding only the station-scoped WebHooks permission can therefore configure a webhook pointing at an internal, loopback, or private-network target and cause the server to issue an outbound HTTP POST containing the station's Now Playing data, resulting in server-side request forgery. The PUT /station/{id}/webhook/{id}/test endpoint allows the same low-privileged user to trigger the request on demand. At the time of the advisory no patched version was available.","categories":["Unclassified"],"product":"AzuraCast","vendor":"AzuraCast","ecosystem":null,"affected_ranges":[{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-100849","source_modified_at":"2026-09-28T13:57:34.821Z","fetched_at":"2026-10-23T18:52:38.922436Z","product":"AzuraCast","vendor":"AzuraCast","versions":[{"version":"0","status":"affected","versionType":"semver","lessThan":"0.23.8"},{"version":"0.23.8","status":"unaffected","versionType":"semver"}],"defaultStatus":"unaffected"}],"fixed_versions":[{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-100849","source_modified_at":"2026-09-28T13:57:34.821Z","fetched_at":"2026-10-23T18:52:38.922436Z","package":{"name":"AzuraCast","ecosystem":null},"version":"0.23.8","basis":"first unaffected version stated in the CVE record"}],"cvss":7.1,"severity":"High","kev":{"listed":false},"epss":{"probability":0.00239,"percentile":0.14194,"score_date":"2026-10-23"},"published_at":"2026-09-27T01:28:42.974Z","modified_at":"2026-09-28T13:57:34.821Z","provenance":[{"source":"CVE List","url":"https://www.cve.org/CVERecord?id=CVE-2026-100849","fetched_at":"2026-10-23T18:52:38.922436Z","source_modified_at":"2026-09-28T13:57:34.821Z"},{"source":"EPSS","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-100849","fetched_at":"2026-10-23T18:42:43.628194Z","source_modified_at":"2026-10-23"}],"sources":["CVE List","EPSS"],"references":[{"source":"CVE List","url":"https://github.com/AzuraCast/AzuraCast/security/advisories/GHSA-3jp3-3wqw-jvw4","tags":["exploit"]},{"source":"CVE List","url":"https://www.vulncheck.com/advisories/azuracast-before-0.23.8-ssrf-filter-bypass-via-hostname-and-private-ips","tags":["third-party-advisory"]}],"locations":[],"motoko_assessment":{"status":"requires_architecture_review","automatic_remediation":false},"cve_state":"PUBLISHED","cvss_source":"CVE List","ssvc":{"exploitation":"poc","automatable":"no","technical_impact":"partial","assessed_at":"2026-09-28T13:57:11.719666Z"},"classification":{"method":"product-first software-layer rules","rules_version":"2.1","matched_on":null,"confidence":"unknown","reviewed":false},"change_timestamp":"2026-09-28T13:57:34.821Z","content_hash":"580a7c7eca2883522366d4f2f072e5ae84d8da77bd74dc2988a57f507020852a"}}
