pyLoad: ダウンロードリンクの送信を介したサーバーサイドリクエストフォージェリにより、クラウドメタデータの流出が可能
プラットフォーム
python
コンポーネント
pyload-ng
修正バージョン
0.5.0b3.dev97
## 概要 PyLoadのダウンロードエンジンは、検証なしに任意のURLを受け入れるため、サーバーサイドリクエストフォージェリ(SSRF: Server-Side Request Forgery)攻撃が可能になります。認証された攻撃者は、これを利用して内部ネットワークサービスにアクセスし、クラウドプロバイダーのメタデータを流出させることができます。DigitalOceanのDropletでは、これにより、Droplet ID、ネットワーク構成、リージョン、認証キー、およびuser-data/cloud-initで構成されたSSHキーを含む機密性の高いインフラストラクチャデータが公開されます。 ## 詳細 この脆弱性は、PyLoadのダウンロードパッケージ機能(`/api/addPackage`エンドポイント)に存在し、ユーザーが提供したURLを検証せずにダウンロードエンジンに直接渡します。影響を受けるコードは`src/pyload/webui/app/blueprints/api_blueprint.py`にあります: ```python @bp.route("/addPackage", methods=["POST"], endpoint="add_package") @login_required def add_package(): name = flask.request.form["add_name"] links = flask.request.form["add_links"].split("\n") # ... 検証は省略 ... api.add_package(name, links, dest) # URL検証なし ``` `src/pyload/core/managers/download.py`のダウンロードエンジンは、任意のURLスキームを受け入れ、内部ネットを含む任意の宛先へのHTTPリクエストを開始します。
修正方法
公式パッチはありません。回避策を確認するか、アップデートを監視してください。