CSIRTS // UNIFIED SECURITY ADVISORY FEEDSYS ● ONLINE · POWERED BY INTELFUSIONS.COM

CVE-2026-50552

mediumCVSS 6.3covered by 1 sourcefirst seen 2026-07-15
Summary Koel v9.5.0 contains a Server-Side Request Forgery (SSRF) vulnerability in the radio station creation endpoint (POST /api/radio/stations). The url field validation rules are declared without the bail keyword, so the HasAudioContentType rule — which issues HTTP requests to the supplied URL — still executes even after the SafeUrl rule has rejected the URL as pointing to a private/reserved address. Any authenticated, non-admin user can therefore coerce the server into making HEAD/GET requests to arbitrary internal hosts. This is a blind SSRF: the response body is never returned to the client, but the two distinct validation error messages form a reliable internal-network reachability oracle. Severity Medium — CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N (5.4) Authenticated (low-privilege) actor; blind SSRF (no response-body exfiltration). Confidentiality (L) reflects the internal reachability oracle; Integrity (L) reflects state-changing internal endpoints that act on GET/HEAD. Affected Component - Version: Koel v9.5.0 (latest release, HEAD b2e9a34, verified 2026-05-30) - Endpoint: POST /api/radio/stations - Files: - app/Http/Requests/API/Radio/RadioStationStoreRequest.php (missing bail) - app/Rules/HasAudioContentType.php (unguarded HTTP fetch) Root Cause app/Http/Requests/API/Radio/RadioStationStoreRequest.php (lines 25-34): 'url' => [ 'required', 'url', Rule::unique('radio_stations')->where(function ($query) { return $query->where('user_id', $this->user()->id); }), new SafeUrl(), new HasAudioContentType(), ], In Laravel, validation rules within a single attribute run in sequence and do not stop on the first failure unless bail is present or FormRequest::$stopOnFirstFailure is set. Neither is the case here (App\Http\Requests\Request does not override stopOnFirstFailure, and authorize() simply returns true). For a directly-supplied private/reserved address (e.g. http://169.254.169.254, http://127.0.0.1:6379, http://192.168.0.1): 1. SafeUrl (app/Ru

⚡ Watch CVE-2026-50552

Get an email if CVE-2026-50552 is added to CISA KEV, gains public exploit code, or a new advisory cites it — max one per day, one-click unsubscribe.

Exploitation outlook

Advisory coverage (1)

External references

NVD record for CVE-2026-50552

CVE.org record

Embed the live status

CVE-2026-50552 live status badge — this badge updates automatically when the KEV or exploit status changes. How to embed it →

[![CVE-2026-50552 status](https://www.csirts.com/badge/CVE-2026-50552)](https://www.csirts.com/cve/CVE-2026-50552)