Saltar al contenido
CVE-2026-55598 Fuente: CVE.org Publicada · sin explotación confirmada

Vulnerabilidad de falsificación de solicitudes del lado del servidor (SSRF) en PinePods

madeofpendletonwool · PinePods · Publicada en CVE.org el 30-10-2026 · Última actualización: 09-11-2026

Descripción

PinePods es un sistema completo y autoalojado de gestión de podcasts escrito en Rust. En versiones anteriores a 0.9.0, un usuario autenticado puede suscribirse a un feed RSS controlado por un atacante mediante `POST /api/data/add_podcast` en `rust-api/src/handlers/podcasts.rs`. `get_podcast_values` y `add_episodes` en `rust-api/src/database.rs` analizan el feed con `feed-rs` y almacenan el `<enclosure url>` literalmente en `Episodes.episodeurl` sin validar el host o la IP de destino. `POST /api/data/download_podcast` invoca `spawn_download_podcast_episode` y `download_episode_and_wait()` en `rust-api/src/services/tasks.rs`, que envía una solicitud GET con `reqwest` a la URL almacenada y guarda y registra la respuesta en `DownloadedEpisodes` para su posterior recuperación. La ruta `estimate_duration_from_audio_url_async()` en `rust-api/src/database.rs` también envía una solicitud HEAD sin validar al agregar o actualizar el feed. El seguimiento de redirecciones por defecto permite que una URL de enclosure inicialmente externa redirija a un destino interno. Un usuario con privilegios bajos puede realizar solicitudes GET/HEAD del lado del servidor hacia servicios accesibles de loopback, de red privada y de metadatos en la nube, y leer las respuestas internas descargadas, lo que permite enumerar servicios internos, divulgar datos confidenciales y posiblemente robar credenciales de metadatos. La descarga de episodios requiere que las descargas en el servidor estén habilitadas, lo cual es la opción por defecto; además, se admite el registro autónomo de usuarios. Este problema está corregido en la versión 0.9.0.

Qué hacer

Revisa si usas el producto afectado y en qué versión, y aplica la actualización o la mitigación que indique el aviso del fabricante. CISA no ha confirmado que se esté explotando; si eso cambia, esta ficha pasa a «explotada» y te avisamos en el boletín.

Versiones afectadas

  • PinePods Afectadas: < 0.9.0

Según el registro de la vulnerabilidad en CVE.org, tal como lo publicó el fabricante. Confirma tu versión exacta en el aviso del fabricante.

Referencias

Ver el texto original en inglés (CVE.org)

PinePods: Authenticated SSRF via podcast RSS enclosure URL (server-side fetch of attacker-controlled URL, no host validation)

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.

Recibe el boletín cuando CISA agregue vulnerabilidades nuevas

Te escribimos solo cuando CISA agrega vulnerabilidades nuevas, ya traducidas: cada día que haya, o en un resumen los lunes. Confirmas por correo y te das de baja con un clic.

Frecuencia