CVE-2026-55598 in PinePods
Сводка
по VulDB • 30.10.2026
PinePods — это полная система управления подкастами с возможностью самостоятельного размещения (self-hosted), написанная на языке Rust. До версии 0.9.0 аутентифицированный пользователь может подписаться на RSS-канал, контролируемый злоумышленником, через запрос `POST /api/data/add_podcast` в файле `rust-api/src/handlers/podcasts.rs`. Функции `get_podcast_values` и `add_episodes` в `rust-api/src/database.rs` парсят канал с помощью библиотеки `feed-rs` и сохраняют значение `<enclosure url>` дословно в поле `Episodes.episodeurl` без проверки целевого хоста/IP-адреса. Запрос `POST /api/data/download_podcast` вызывает функции `spawn_download_podcast_episode` и `download_episode_and_wait()` из `rust-api/src/services/tasks.rs`, которые отправляют GET-запрос с помощью библиотеки `reqwest` к сохраненному URL, а затем сохраняют и фиксируют ответ в таблице `DownloadedEpisodes` для последующего получения. Путь `estimate_duration_from_audio_url_async()` в `rust-api/src/database.rs` также выполняет невалидированный HEAD-запрос при добавлении или обновлении канала. Поведение по умолчанию предполагает автоматическое следование редиректам, что позволяет изначально внешнему URL-адресу enclosure перенаправить запрос на внутренний целевой ресурс. Пользователь с низкими привилегиям может инициировать серверные GET/HEAD-запросы к доступным loopback-, частным сетевым и облачным метаданным сервисам, а также читать скачанные внутренние ответы, что позволяет осуществлять перечисление внутренних служб (internal-service enumeration), раскрывать конфиденциальные данные и потенциально красть учетные данные из метаданных. Загрузка эпизодов требует включения серверных загрузок, что является настройкой по умолчанию; поддерживается самостоятельная регистрация пользователей (self-service signup). Эта проблема исправлена в версии 0.9.0.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.