cloud-pathfinder について
cloud-pathfinderは、インフラテンプレートを確認するセキュリティチーム向けの、ホスト型IaC攻撃経路監査ツールです。複数形式のリソースグラフから、インターネット起点で機密リソースに至る経路を追跡し、稼働中のクラウド環境は評価しません。
主な機能
- 01ファイル横断のリソースグラフを構築
- 02インターネットから機密リソースへの攻撃経路を追跡
- 03IAM権限昇格を分析
- 04IaC変更前後の攻撃経路を比較
- 05Terraform、CloudFormation、Kubernetesなどに対応
- 06SARIF 2.1.0を出力可能
活用シーン
- 01シークレットやデータストアに至るIaC経路を確認
- 02プルリクエストによる攻撃経路の変化を評価
- 03GitHubコードスキャンで検出結果を表示
MCP 対応
MCPサーバーは、MCPクライアントに `audit_iac_attack_paths` と `diff_attack_paths` を提供します。軽量クライアントはIaCテキストをホスト型サービスに送り、分析はサービス側でメモリ上で実行されます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://cloud-pathfinder.vercel.app/mcpclaude mcp add --transport http baneado98-cloud-pathfinder https://cloud-pathfinder.vercel.app/mcp{"mcpServers":{"baneado98-cloud-pathfinder":{"type":"http","url":"https://cloud-pathfinder.vercel.app/mcp"}}}Cursor で開く{"servers":{"baneado98-cloud-pathfinder":{"type":"http","url":"https://cloud-pathfinder.vercel.app/mcp"}}}VS Code で開く{"mcpServers":{"baneado98-cloud-pathfinder":{"type":"http","url":"https://cloud-pathfinder.vercel.app/mcp"}}}{"mcpServers":{"baneado98-cloud-pathfinder":{"serverUrl":"https://cloud-pathfinder.vercel.app/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
cloud-pathfinder 🛰️
Infrastructure-as-Code 向けの攻撃経路監査ツール — Terraform、CloudFormation、Kubernetes、CDK、Pulumi、Bicep/ARM。
リンターではありません。IaC を解析してリソースグラフを構築し、リソース間(およびファイル間)の関係を解決して、パブリックインターネットから最重要資産(データストア、シークレット、管理者)に至る複数ホップの経路を探索します。BREACHABLE / EXPOSED / HARDENED の判定と、攻撃者がたどる具体的な経路を返します。
検出される経路の例:
open security group (SSH 0.0.0.0/0) → EC2 instance-profile role → iam:PassRole privilege escalation to admin → S3 exfiltration
MCP サーバー(Claude、Cursor、あらゆる MCP エージェント)および従量課金の x402 API(ウォレットを持つ自律型 AI エージェント)として利用できます。
🔐 プライバシーとデータモデル(最初にお読みください)
IaC を第三者に送信することは機密性に関わるため、ここで実際に行われることを説明します。
- IaC が保存・記録されることはありません。 監査はホスト型サービス上でメモリ内で実行され、応答の送信後に破棄されます。テンプレートを保存するデータベースも、データの保持も、ファイル内容の分析もありません。
- 送信されるもの: お客様が渡した IaC テキスト(
filesマップまたはsourceblob)のみです。お客様のマシン、クラウドアカウント、認証情報から読み取ることはありません。cloud-pathfinder が稼働中のクラウドにアクセスすることはありません(下記の「正直な制限」を参照)。宣言されたテンプレートのみを分析するため、提供が必要なクラウドキーはありません。 - 無料ティアとディープティア — どちらもサーバー側で実行されます。その理由と違いは次のとおりです。
- 軽量な npm クライアントには、分析ロジック(グラフエンジン、IAM 権限昇格に関するナレッジベース)は一切含まれていません。純粋な HTTP 呼び出し元です。そのため、無料の判定と件数であってもホスト型サービスで計算され、その後 IaC は破棄されます。これは、お客様のマシンに機密情報を残さないための率直なトレードオフです。「100% ローカル」モードがあると偽って主張するのではなく、明確に説明しています。
- ディープ分析は明示的なオプトイン方式です(
deep: true。支払いが必要です)。選択した場合にのみ、完全な経路、ファイルと行の証拠、修正方法が返されます。どちらを選んでも送信する IaC は同じです。ディープティアのために、お客様のマシンから追加の情報が送信されることはありません。
ホスト型サービス: https://cloud-pathfinder.vercel.app — 分析はすべて サーバー側で実行されます。この npm パッケージは軽量な MCP クライアントです。IaC テキストを ホスト型エンドポイントに送信し、判定を表示します。分析ロジックがお客様のマシンに含まれることはありません。
⚡ 仕組み(30 秒)
- MCP エージェントが
audit_iac_attack_paths { files: { "main.tf": "..." } }を呼び出します。 - 軽量なクライアントが IaC テキストを
https://cloud-pathfinder.vercel.appに POST します。 - ホスト型エンジンが型付きのリソースグラフを構築し、
INTERNETノードから各データストア/シークレット/管理者シンクへの幅優先探索を実行し、各ホップにおける IAM 権限昇格の到達可能性を解決します。すべてメモリ内で行われます。 - IaC は破棄され、何も永続化されません。
- ディープティアでは、各ホップの
file:line証拠付きで完全な経路がすべて返されます。無料ティアでは、判定、スコア、件数が返されます。
npm の tarball に含まれるのは HTTP 呼び出し元のみです。そのため、無料ティアもディープティアもオフラインでは実行されません。サーバーに接続できない場合は、明確なネットワークエラーになります。
🆚 これはリンターではありません(ローカルのリンターでは代替できない理由)
リンターはリソースを1つずつ検出します。「この SG は公開されています」「このロールの権限は広すぎます」などです。 cloud-pathfinder は、こうした事実がどのようにつながっているかを推論します。これは、ファイル単位で動作するローカルツールでは構造上できません。
| 機能 | ローカルリンター | cloud-pathfinder |
|---|---|---|
| 公開された SG や権限の広すぎるロールを1つずつ検出 | ✅ | ✅ |
| グラフ — どの SG がどのインスタンスに関連付けられ、どのロールを引き受け、何を読み取るか | ❌ | ✅ |
| 到達可能性 BFS インターネット → 重要資産、完全なマルチホップチェーンとファイル:行番号 | ❌ | ✅ |
| IAM 権限昇格ナレッジベース(20種類以上のプリミティブ:PassRole、CreatePolicyVersion…) | ❌ | ✅ |
| マルチクラウド — AWS / GCP / Azure を1つのグラフに統合 | ❌ | ✅ |
| チョークポイント分析(修正すると最も多くのパスを遮断できる、唯一のホップ) | ❌ | ✅ |
| 差分モード — PR が何を導入/排除/悪化させるか | ❌ | ✅ |
| Kubernetes LB/NodePort → 特権付き Pod → cluster-admin SA → Secret | ❌ | ✅ |
| GitHub コードスキャン用 SARIF 2.1.0(Security タブにインラインでチェーンを表示) | ❌ | ✅ |
- 🔗 リンティングではなく、グラフ。 型付きリソースグラフを構築し、ファイルやクラウドをまたぐ実際の関係を解決します。
- 🧭 到達可能性検索。
INTERNETからすべてのデータストア/シークレット/管理用シンクまで BFS で検索し、各ホップのファイル:行番号の証拠を含む完全なマルチホップチェーンを返します。 - 👑 IAM 権限昇格ナレッジベース。 AWS 管理ポリシーの権限と、20種類以上の権限昇格プリミティブ(PassRole+RunInstances、CreatePolicyVersion、AttachRolePolicy、SSM SendCommand、UpdateFunctionCode、UpdateAssumeRolePolicy…)を把握しています。
- ☸️ Kubernetes の攻撃対象領域。 LoadBalancer/NodePort による公開 → 特権付き/hostPath/hostNetwork Pod、cluster-admin ServiceAccount、マウントされた Secret を検出します。
ファイルごとにフォーマットを自動検出し、まとめて分析します。.tf、CloudFormation の .yaml/.json、Kubernetes マニフェストを1回の呼び出しで組み合わせられます。
🚀 クイックスタート — MCP クライアントに追加する
{
"mcpServers": {
"cloud-pathfinder": { "command": "npx", "args": ["-y", "cloud-pathfinder-mcp"] }
}
}
無料プランではキーは不要です。クライアントを再起動すると、
audit_iac_attack_paths と diff_attack_paths ツールが表示されます。(リモートサーバー:
https://cloud-pathfinder.vercel.app/mcp。)
ツール:audit_iac_attack_paths
{
"files": {
"main.tf": "resource \"aws_security_group\" \"web\" { ingress { ... cidr_blocks = [\"0.0.0.0/0\"] } } ...",
"k8s.yaml": "apiVersion: v1\nkind: Service\n..."
}
// or: "source": "<a single IaC blob>", "filename": "main.tf"
}
例 — 入力 → 出力
audit_iac_attack_paths { "files": { "main.tf": "<SG open to 0.0.0.0/0 on 22 +
EC2 with instance-profile role that can s3:* + iam:PassRole>" } }
→ FREE: verdict: BREACHABLE · risk 86/100 · 1 attack path · 1 crown jewel · 3 misconfigs
→ DEEP (deep:true): verdict: BREACHABLE
PATH #1 (internet → admin):
[1] INTERNET → aws_security_group.web (main.tf:4 — ingress 22 from 0.0.0.0/0)
[2] → aws_instance.app (main.tf:19 — attaches sg web)
[3] → aws_iam_role.app_role (main.tf:31 — instance profile)
[4] → iam:PassRole + ec2:RunInstances (privesc → launch instance as admin role)
[5] → s3:* on aws_s3_bucket.data (main.tf:52 — exfiltration sink)
CHOKE POINT: tighten main.tf:4 ingress → cuts this entire path.
FIX: restrict ingress CIDR; split the role; add a permissions boundary.
無料プランでは、判定、リスクスコア、件数(攻撃パス、重要資産、設定ミスの数)が返されます。deepプランでは、ホップ、ファイル:行番号の証拠、権限昇格による到達可能性、修正策を含む完全なチェーンがすべて返されます。
ツール:diff_attack_paths — CI/CD ゲート
IaC の変更前と後(PR の base と head のツリー)を渡すと、その変更が攻撃対象領域に与えた影響を正確に報告します。どのインターネット→重要資産のチェーンが導入され、どれが排除され、どれが悪化したかを、INTRODUCES_BREACH / REDUCES_RISK / NEUTRAL / MIXED の判定とともに確認できます。
{
"before": { "files": { "main.tf": "...security group admits 10.0.0.0/16..." } },
"after": { "files": { "main.tf": "...security group admits 0.0.0.0/0..." } }
// deep: true → full introduced/eliminated chains + before→after exploitability + which choke points now matter
}
ファイル単位のリンターや単一状態のスキャンでは、これに答えられません。両方の状態における完全なグラフと権限昇格による到達可能性に加え、状態間のセマンティックなパスの照合が必要です。
HTTP:POST /diff(無料、件数のみ)/POST /pro/diff(詳細)。
無料 HTTP API
POST /audit
Content-Type: application/json
{ "files": { "main.tf": "resource \"aws_security_group\" ..." } }
レート制限は IP あたり1時間に30リクエストです。無制限/商用/詳細な利用には、/pro/audit を呼び出してください。
入力フォーマット: Terraform / OpenTofu、CloudFormation、Kubernetes、Helm、Kustomize、
Pulumi(TS/JS/Python)、Bicep/ARM、AWS CDK — 合成済みの
cdk.out/*.template.json と 未合成の CDK プログラム(TypeScript + Python)の両方に対応しているため、cdk synth の前に PR 差分で CI ゲートを実行できます。
SARIF 2.1.0 → GitHub コードスキャン
/audit、/pro/audit、/diff、または /pro/diff に ?format=sarif(または { "format": "sarif" })を追加すると、GitHub コードスキャンにアップロードできる SARIF 2.1.0 を取得できます。各攻撃チェーンが PR の Security タブにインラインで表示されます。
- 各チェーンは、IaC の
file:lineを起点とするcodeFlow(インターネット → SG → インスタンスロール → 権限昇格 → S3 をたどるステップごとの経路)を含む、1 つの SARIFresultです。バッジの色が正しく表示されるよう、security-severity/CVSS も設定されます。 - 差分の SARIF では、新たに追加された/悪化した経路のみがチェック失敗の対象になります(エラーレベル)。解消/緩和された経路は
noteになります。 - 無料ティアでは、編集済みでもスキーマに準拠した SARIF が返されます(件数のみ。チェーン、コードフロー、経路の file:line は含まれません)。完全なコードフローはプレミアム機能です。
# .github/workflows/cloud-pathfinder.yml (sketch)
- run: curl -s -X POST "$CPF/pro/diff?format=sarif" -H "Authorization: Bearer $KEY" \
--data @payload.json -o cloud-pathfinder.sarif
- uses: github/codeql-action/upload-sarif@v3
with: { sarif_file: cloud-pathfinder.sarif }
💳 /pro を利用する — お支払い方法は 2 通り(デュアルペイ)
詳細な /pro/audit では、完全な攻撃チェーン、各ホップの証拠、権限昇格の分析、修正方法が返されます。2 つのお支払い方法を利用できます。
| 方法 | 対象 | 手順 |
|---|---|---|
| 💳 カード(Stripe) | 個人/チーム | /pro/checkout でプリペイドキーを購入し、Authorization: Bearer <key> を送信します(または CLOUD_PATHFINDER_KEY を設定します)。 |
| 🪙 x402(USDC) | ウォレットを持つ AI エージェント | 呼び出しごとに $0.30 を自動で支払います。Base 上で決済されます。登録もキーも不要です。 |
POST /pro/audit # 402 (shows BOTH lanes) → pay → result
検出対象(抜粋)
| 分類 | 詳細 |
|---|---|
| パブリック → ロール → データ | 機密性の高いポート(SSH/RDP/DB)で開放された SG → S3/Dynamo/RDS/Secrets の読み取りが可能なインスタンスロール → データ流出 |
| IAM 権限昇格 | iam:PassRole+ec2:RunInstances、iam:CreatePolicyVersion、iam:AttachRolePolicy、ssm:SendCommand、* に対するワイルドカード *、およびその他約 15 種類 |
| パブリックデータストア | publicly_accessible = true の RDS、全世界に公開されたバケット |
| Kubernetes | LoadBalancer/NodePort → 特権付き Pod → cluster-admin ServiceAccount → Secret |
| CloudFormation | !Ref/!GetAtt の組み込み関数を解決し、ManagedPolicyArns/インラインポリシーを分析します |
誠実さを保つための仕組み
プレミアムのエンジンとナレッジベースは npm パッケージに含まれていません。公開されているクライアントは、ホスト型の分析サービスを呼び出す薄いレンダラーです。無料ティアでも、判定結果と件数を提供するため、十分に役立ちます。詳細なチェーン、証拠、権限昇格の分析は、支払い後にサーバー側で提供されます。
宣言された IaC のヒューリスティックな静的解析であり、稼働中のクラウド環境を評価するものではありません。テンプレートで宣言されている内容を対象に推論します(実行時の SCP/権限境界/条件の評価は行いません)。検出結果は優先順位付けされた調査の手掛かりとして扱い、保証とは見なさないでください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。