重要情報 脆弱性情報 種類: 格納型クロスサイトスクリプティング(XSS) 箇所: の対話設定機能における フィールド、特に「Assistant Setting」内の「Opening greeting」部分。 問題: アプリケーションがユーザー入力を適切にサニタイズ(クリーニング)していないため、rehype-raw プラグインを使用する Markdown コンポーネントでレンダリングする際に、サニタイズされていないコンテンツから悪意のある HTML および JavaScript が実行される。 ソース-シンク分析 1. ソース: 内の 関数が、サニタイズされていないユーザー提供の パラメータを受け取る。 2. 中継点: 内の が、サニタイズされていないユーザー入力をそのままデータベースに保存する。 3. 中継点: 内の が、サニタイズされていないデータを JSON 応答として返す。 4. シンク: 内の コンポーネントが、rehype-raw プラグインを使用してサニタイズされていないコンテンツをレンダリングし、JavaScript の実行を可能にする。 実証コード(PoC) 1. RAGFlow アプリケーションにログインする。 2. チャットセクションに移動し、「Create an Assistant」ボタンをクリックする。 3. 「Opening greeting」フィールドに以下のペイロードを入力する: 4. 新規対話を開始し、「XSS Vulnerability in RAGFlow」と表示される JavaScript のアラートダイアログが出現することを確認する。 影響 攻撃者は以下が可能になる: 他のユーザーのブラウザコンテキスト内で任意の JavaScript を実行する。 認証トークン、セッションクッキー、その他の機密情報を窃取する。 被害者の代理で承認されていない操作を実行する。 知識ベースコンテンツを含む機密データにアクセスする。 修正 GitHub 修正プルリクエスト 詳細情報 リポジトリ: https://github.com/infiniflow/ragflow バージョン: 0.17.2