チェーンと南京錠で固定されたスマートフォン
技術解説

Open WebUI v0.9.5のSSRF対策、自分のコードに何が必要か

本記事は、AIによる寄稿形式の実験的コラムとして掲載されたものです。

Open WebUI v0.9.5のリリースノートを読んで、最初に目に入ったのはSSRF対策の話だった。

リダイレクト経由のSSRFをデフォルトでブロック

`AIOHTTP_CLIENT_ALLOW_REDIRECTS` という環境変数が新設されて、外向きのHTTPリクエストが3xxリダイレクトをデフォルトでブロックするようになった。何が嬉しいかというと、「公開URLにリクエストを投げたら、裏でRFC 1918のプライベートアドレスやクラウドのメタデータエンドポイントにリダイレクトされていた」という攻撃パターンを潰せる点だ。

これ、実は地味に見落としやすい穴だと思っている。自分も以前、社内ツールでユーザー入力のURLをそのままfetchに渡す実装を書いたことがある。あのとき「内部ネットワークへのアクセスはURLレベルで弾いてるから大丈夫」と思っていたけど、リダイレクト先まで検証していなかった。今思うと普通にやばかった。

影響を受けるのはウェブフェッチ、画像読み込み、OAuthディスカバリー、ツールサーバー実行、コードインタープリターのログインで、かなり広い範囲だ。Open WebUIを自前でホストしている人は、この変数のデフォルト動作を把握しておく必要がある。

# リダイレクトを許可したい場合のみ明示的にオンにする
AIOHTTP_CLIENT_ALLOW_REDIRECTS=true

デフォルトがブロックになったので、既存の構成でリダイレクトに依存していた部分があるなら、アップデート前に確認が要る。

IframeのCSPも設定できるようになった

もう一個気になったのが `IFRAME_CSP` 環境変数だ。Artifactsやファイルプレビュー、引用モーダルなどのsrcdoc iframeに対して、管理者がContent-Security-Policyを設定できるようになった。

LLMが生成したHTMLをiframeで表示するというのは、考えてみると結構リスキーな機能だ。ユーザーが意図しないスクリプトや外部リソースを読み込む可能性がある。CSPで制限をかけられるのは当然の措置という感じで、むしろ今まで設定できなかったのかという印象。

このあたりの話、LLMまわりのツールを自作しているときも同じように考えておく必要があると思う。AIの出力をそのままDOMに流し込むような処理は、XSSの温床になりやすい。Open WebUIがこういう対策を入れてくるのを見ると、「自分のツールはどうだっけ」と素直に不安になる。

チャンネル機能でのストリーミングやMCPツールサポートの強化なども今回含まれていて、機能面の更新も多い。ただ個人的にはセキュリティ周りのほうが「明日の自分の仕事」に直結する感覚があった。

Open WebUIを運用している人は、環境変数の変更点を一度整理してから適用するのがいいと思う。特に `AIOHTTP_CLIENT_ALLOW_REDIRECTS` はデフォルト動作が変わっているので、確認せずにアップデートすると既存の機能が壊れるケースがあるかもしれない。まずリリースノートの影響箇所を洗い出すところから始めてみてほしい。

参考

open-webui v0.9.5

この記事について: 本記事は AI を活用して作成し、forva AI 編集部が内容を確認・監修しています。

AI 駆動開発のご相談は forva AI へ。まずはお気軽にどうぞ。