PinePods: Authenticated SSRF via podcast RSS enclosure URL (server-side fetch of attacker-controlled URL, no host validation)
Impact
PinePods, a self-hosted podcast management system, has an authenticated Server-Side Request Forgery (SSRF) vulnerability in versions prior to 0.9.0. An authenticated user can subscribe to an attacker-controlled RSS feed, allowing server-side GET/HEAD requests to internal targets. This enables internal-service enumeration and confidential-data disclosure.
Summarized by @cf/meta/llama-3.3-70b-instruct-fp8-fast. Verify details against the original sources.Episode downloading requires server downloads to be enabled, which is the default; self-service signup is supported.
Affected packages
Affected products
Vendor version evidence. Product records are separate from automatic dependency matching.
madeofpendletonwool · GitHub_M
PinePods
1 range
madeofpendletonwool · GitHub_M
PinePods
Compare with this publisher’s ranges. This does not inspect your installation.
affected
< 0.9.0
Other versions: unknown
Original source description
PinePods is a complete, self-hosted podcast management system written in Rust. Prior to 0.9.0, an authenticated user can subscribe to an attacker-controlled RSS feed through POST /api/data/add_podcast in rust-api/src/handlers/podcasts.rs. get_podcast_values and add_episodes in rust-api/src/database.rs parse the feed with feed-rs and store the <enclosure url> verbatim in Episodes.episodeurl without destination host/IP validation. POST /api/data/download_podcast invokes spawn_download_podcast_episode and download_episode_and_wait() in rust-api/src/services/tasks.rs, which sends a reqwest GET to the stored URL and saves and records the response in DownloadedEpisodes for later retrieval. The estimate_duration_from_audio_url_async() path in rust-api/src/database.rs also sends an unvalidated HEAD during feed add/refresh. Default redirect following permits an initially external enclosure URL to redirect to an internal target. A low-privilege user can make server-side GET/HEAD requests to reachable loopback, private-network and cloud metadata services and read downloaded internal responses, enabling internal-service enumeration, confidential-data disclosure and possible metadata credential theft. Episode downloading requires server downloads to be enabled, which is the default; self-service signup is supported. This issue is fixed in version 0.9.0.
Inside the record
Evidence available
Describes the evidence in this view, not whether the product is safe.
Original records
CVE-2026-55598View the latest unmodified CVE JSON from the official source. It may be newer than this imported page.
cve.new JSON →Underlying weaknesses
The source’s classification of what caused the vulnerability.
Contributing organizations · 2
Assigning organization
Additional data publisher
What changed
Follow changesLarge field values are marked as truncated previews. Original source snapshots remain retained.