client-side-exploitation について
ブラウザー向けアプリを対象に、基本的な XSS や CSRF を超えるクライアント側および HTTP 層の脆弱性を調べるセキュリティスキルです。許可された評価での検出や PoC の記録、他のユーザーに影響し得るリスクの安全なテストを扱います。
主な機能
- 019 種類のクライアント側・HTTP 攻撃を検査
- 02DOM XSS とプロトタイプ汚染の経路を追跡
- 03CORS、CSP、クリックジャッキング、メッセージ処理を確認
- 04脆弱性と PoC の詳細を記録
- 05共有インフラのリスクには隔離テストを要求
活用シーン
- 01ブラウザー向けアプリの見落とされやすい脆弱性評価
- 02認証情報付き CORS や不適切な postMessage の調査
- 03隔離したステージング環境でのキャッシュポイズニングやリクエストスマグリングの検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mn-youssef/ security-skills --skill client-side-exploitationインストール後、Claude Code で/client-side-exploitationを入力して読み込まれたか確認します。
同梱ファイルreferences/client-attacks.md
詳細
クライアントサイドエクスプロイト(検出/悪用 — ブラウザーと HTTP 層)
概要
プレゼンテーション層には、スキャナーが見逃す問題があります。クライアントサイドのコード、ブラウザー特有の挙動、ユーザーとサーバー間の HTTP 通信処理です。このスキルでは、security-code-audit/references/web-frontend.md の XSS/CSRF の基本を超えた高度な攻撃クラスを扱います。
基本原則: ブラウザーはページの指示どおりに実行し、プロキシやキャッシュは正常に解析できるものを信頼します。クライアントの信頼と、通信経路の前提を攻撃します。
該当する場合/スキップする場合
- 該当する場合: アプリがブラウザーで描画される UI を提供している、またはクライアントサイド JavaScript を配布している場合。
- スキップする場合: API のみ、CLI、デーモン、またはブラウザーに表示される部分のないバックエンドサービス → 該当なし。
- 該当しない場合: 「client-side-exploitation: N/A — no frontend surface」と報告して終了します。これは「スキルがアプリに合わない」場合の正式な扱いです。適切にスキップし、ブラウザーテストを無理に当てはめないでください。
⚠️ 認可
自身が所有するアプリ、または認可を得たアプリに限ります。リクエストスマグリングやキャッシュポイズニングは、共有キャッシュ/プロキシの他のユーザーにも影響する可能性があります。自分が管理する隔離されたステージング環境でのみテストしてください。
攻撃クラス
| クラス | テスト内容 |
|---|---|
| DOM XSS | クライアント JS で、ソース(location、postMessage、ストレージ)からシンク(innerHTML、eval)への流れを確認 |
| CSP バイパス | 弱い CSP:unsafe-inline、ワイルドカード、JSONP/Angular ガジェット、base-uri の欠落 |
| CORS の悪用 | サーバーが任意の Origin を反射し、Allow-Credentials: true を許可 → クロスサイトでのデータ窃取 |
| postMessage の悪用 | event.origin を検証せず、データをシンクに渡すハンドラー |
| プロトタイプ汚染 | ユーザーの JSON を Object.prototype にマージ → ガジェット → XSS/RCE/DoS |
| DOM クラバリング | 挿入された id/name 属性付き HTML が JS の変数や関数を上書き |
| クリックジャッキング | 機密操作に frame-ancestors/X-Frame-Options が設定されていない |
| Web キャッシュポイズニング | キーに含まれない入力(ヘッダー)が反射されてキャッシュされ、他のユーザーに配信される |
| リクエストスマグリング | フロントエンドとバックエンドのサーバー間における CL.TE/TE.CL のデシンク |
検出方法と PoC の手順については、references/client-attacks.md を参照してください。
見逃されやすい重要項目
- 認証情報を伴う CORS: 問題は
*ではありません。認証情報を許可しつつ、攻撃者のOriginを反射することです。これにより、認証済みのレスポンスがクロスサイトで漏えいします。 - プロトタイプ汚染: ライブラリのディープマージで攻撃者の JSON を取り込みます。既知のガジェットを使って DOM XSS につなげます。
- リクエストスマグリング: 影響が最も大きい問題(大量のセッション窃取、キャッシュポイズニング、認証バイパス)です。慎重にテストし、隔離環境でのみ実施してください。
出力
検出結果ごとに、ソース→シンク(DOM/プロトタイプ汚染の場合)、またはデシンク/キャッシュの仕組み、PoC、影響を受ける対象(自分のみか他のユーザーも含むか。後者の場合、深刻度は大幅に上がります)を示します。
引き継ぎ
DOM XSS は、vulnerability-chaining への足掛かりになることがよくあります。active-pentest で再現し、security-hardening で修正します(エンコード、厳格な CSP、オリジンの完全一致を確認する CORS、Object.freeze/null プロトタイプ、フロントエンド/バックエンドサーバー間の正規化)。
よくある間違い
- 反射型/格納型 XSS の確認で終えてしまうこと。DOM XSS は完全にクライアント JS 内で発生するため、ソースからシンクへの追跡が必要です。
- CORS を「問題なのは
*のみ」と解釈すること。実際の欠陥は、認証情報を伴うオリジンの反射です。 - 「難しい」という理由でリクエストスマグリングを省略すること。クライアント層のバグの中で最も影響が大きいものです。
- 共有インフラでキャッシュポイズニング/リクエストスマグリングをテストすること。実際のユーザーに影響する可能性があるため、まず環境を隔離してください。