CVE-2026-55598 in PinePods
Sumário
de VulDB • 30/10/2026
PinePods é um sistema completo de gerenciamento de podcasts auto-hospedado, escrito em Rust. Antes da versão 0.9.0, um usuário autenticado pode se inscrever em um feed RSS controlado por um atacante através do endpoint `POST /api/data/add_podcast` em `rust-api/src/handlers/podcasts.rs`. As funções `get_podcast_values` e `add_episodes`, localizadas em `rust-api/src/database.rs`, analisam o feed utilizando a biblioteca `feed-rs` e armazenam o atributo `<enclosure url>` literalmente no campo `Episodes.episodeurl`, sem validação do host/IP de destino. O endpoint `POST /api/data/download_podcast` invoca as funções `spawn_download_podcast_episode` e `download_episode_and_wait()` em `rust-api/src/services/tasks.rs`, que realizam uma requisição GET via `reqwest` para a URL armazenada, salvando e registrando a resposta no modelo `DownloadedEpisodes` para recuperação posterior. O caminho `estimate_duration_from_audio_url_async()`, também presente em `rust-api/src/database.rs`, envia uma requisição HEAD não validada durante a adição ou atualização do feed. A configuração padrão de redirecionamento permite que um URL de enclosure inicialmente externo seja redirecionado para um alvo interno. Um usuário com privilégios baixos pode realizar requisições GET/HEAD no lado do servidor (server-side) direcionadas a serviços de loopback, rede privada e metadados em nuvem acessíveis, além de ler respostas internas baixadas, o que permite enumeração de serviços internos, divulgação de dados confidenciais e possível roubo de credenciais nos metadados. O download de episódios requer que os downloads no lado do servidor estejam habilitados (configuração padrão); a inscrição autoatendida está suportada. Este problema foi corrigido na versão 0.9.0.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.