ترجمة آلية لم تُراجَع بعد. النص الإنجليزي هو المرجع في حال الاختلاف.
الملخص
إن PinePods هو نظام إدارة بودكاست متكامل وذاتي الاستضافة مكتوب بلغة 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` إلى الرابط المُخزن وتحفظ وتسجل الاستجابة في `DownloadedEpisodes` للاسترجاع لاحقاً. يرسل مسار `estimate_duration_from_audio_url_async()` في `rust-api\/src\/database.rs` أيضاً طلب HEAD غير مُتحقق منه أثناء إضافة/تحديث التغذية. يسمح اتباع إعادة التوجيه الافتراضي لرابط مرفق خارجي مبدئي بإعادة التوجيه إلى هدف داخلي. يمكن لمستخدم منخفض الصلاحيات إجراء طلبات GET/HEAD من جانب الخادم إلى خدمات حلقة الاسترجاع (loopback) والشبكة الخاصة وخدمات بيانات التخزين السحابي القابلة للوصول وقراءة الاستجابات الداخلية التي تم تنزيلها، مما يتيح تعداد الخدمات الداخلية، والكشف عن البيانات السرية، واحتمال سرقة بيانات اعتماد بيانات التخزين المؤقت (metadata). يتطلب تنزيل الحلقات تمكين تنزيلات الخادم، وهو الإعداد الافتراضي؛ كما يتم دعم التسجيل الذاتي للمستخدمين. تم إصلاح هذه المشكلة في الإصدار 0.9.0.