Open WebUIは完全にオフラインで動作する自己ホスト型の人工知能プラットフォームです。バージョン0.9.6以前では、`backend/open_webui/routers/terminals.py` にあるターミナルサーバーのリバースプロキシが、管理者によって設定されたターミナルサーバーに転送する前に、ユーザーが制御する `path` セグメントを十分に制限していませんでした。ターミナルサーバーへのアクセス権を持つ認証済みユーザーは、エンコードされた `../` トラバーサルシーケンスを含む `path` 値を作成することで、そのサーバー上で意図されたパス(またはポリシー)範囲を逸脱し、ターミナルサーバーホスト上の意図しないエンドポイントやファイルに到達できました。ターミナルサーバーが内部サービスへリクエストを分散する場合、これはSSRFスタイルのリーチをこれらのサービスへ与えます。これは `/api/v1/retrieval/process/web` のSSRF(GHSA-c6xv-rcvw-v685)とは別のコードパスであり、入力も異なります。ここでは2つの異なる攻撃ベクターが存在します。ひとつは生のパスの転送および単一エンコードされたトラバーサル(元の報告)、もうひとつは後から追加された `_sanitize_proxy_path` 緩和策を二重エンコードされたドット(`%252e%252e`)を用いてバイパスする方法です。攻撃者が制御する入力は非管理者ユーザーが提供するリクエストの `path` であり、管理者が設定するものではないため、これは管理者信頼/Rule-9の問題ではありません。バージョン0.9.6でこの問題は修正されました。
|