技術的な説明
RAGFlowのプロンプトジェネレータ (rag/prompts/generator.py) のJinja2サーバーサイドテンプレートインジェクション (SSTI) 脆弱性により、通常登録された無料アカウントを含むあらゆる認証済みユーザーが、ホストサーバー上で任意のOSコマンドを実行できます。エクスプロイテーションに必要なのは、ユーザーがDuckDuckGo + LLMコンポーネントチェーンを備えたCanvasワークフローを作成することだけです。インポートするだけでコード実行がトリガーされます。CVSSスコアは9.9 (Critical) です。RAGFlowはGitHubで52,000以上のスターを持つオープンソースのRAGエンジンです。
攻撃経路
認証済みWebユーザーが細工されたCanvasワークフローを作成またはインポートし、プロンプトジェネレータがJinja2テンプレートをサンドボックスなしでレンダリングすることで、Jinja2の `cycler.__init__.__globals__` チェーンを通じたPythonの `os.popen` によるOSコマンドインジェクションが可能になります。管理者権限は不要であり、登録されたユーザーであれば誰でも可能です。
影響を受けるシステム
RAGFlowバージョン0.24.0以前 (オープンソースRAGエンジン、GitHubのinfiniflow/ragflow)。自己ホスト型デプロイメントのみが対象です。クラウドマネージドデプロイメントはプロバイダーの構成により異なる場合があります。
緩和策
パッチ適用済みバージョンにアップグレードしてください (GHSA-wpg4-h5g2-jxm6を参照)。直ちのアップグレードが不可能な場合は、信頼されていないユーザーによるCanvasワークフロー作成を無効化し、RAGFlowサーバーのネットワークレベル分離を強制し、RAGFlowプロセスがrootとして実行されないよう最小権限の原則を適用してください。ragflowプロセスからの異常なサブプロセス呼び出しについてサーバーログを確認してください。