PinePodsに重大なSSRF脆弱性、0.9.0で修正
Summary
セルフホスト型のポッドキャスト管理システムPinePodsに、ログインできる利用者がサーバー経由で内部ネットワークへ通信させられる脆弱性が見つかりました。0.9.0未満を使っているなら0.9.0へ更新し、新規登録の開放状況も見直してください。
AI summary
Written by an external AI model and may contain mistakes. Check the original description and references below before acting on it.
セルフホスト型のポッドキャスト管理システムPinePodsに、ログインできる利用者がサーバー経由で内部ネットワークへ通信させられる脆弱性が見つかりました。0.9.0未満を使っているなら0.9.0へ更新し、新規登録の開放状況も見直してください。
Original description The description as published by the source.
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 `` 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.
Source: CVE.org (CVE Program・cvelistV5) NVD