mcpField
P
pentest-whitebox-code-review

pentest-whitebox-code-review

github.com/jd-opensourceセキュリティ31567 回インストール28 週間前に更新
リポジトリ

pentest-whitebox-code-review について

セキュリティ監査担当者向けのホワイトボックスコードレビュー用スキルです。ユーザー入力から危険なシンクへのデータフローを追跡し、注入や出力コンテキストを分類して検証対象に優先順位を付けます。

主な機能

  1. 01シンクからの逆方向汚染追跡
  2. 02注入スロットの分類
  3. 03XSS 出力コンテキストの検査
  4. 04認証・認可のレビュー
  5. 05SSRF シンクの分析
  6. 06優先度付き検証キューの作成

活用シーン

  1. 01コードリポジトリの注入リスク監査
  2. 02出力コンテキストごとのエンコード確認
  3. 03認証・認可制御のレビュー
  4. 04検証対象となる脆弱性の整理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jd-opensource/joysafeter --skill pentest-whitebox-code-review

インストール後、Claude Code で/pentest-whitebox-code-reviewを入力して読み込まれたか確認します。

同梱ファイルreferences/tools.mdreferences/workflows.md

詳細

ペンテストのホワイトボックスコードレビュー

目的

Shannon の後方 taint 分析手法を用いて、体系的なホワイトボックスのソースコードセキュリティ監査を実施します。危険なシンクからユーザーが制御するソースまで遡って追跡し、スロットタイプごとにインジェクションコンテキストを分類し、XSS のレンダリングコンテキストを検証して、後続の実証主導型エクスプロイトに向けた優先順位付きの検証キューを作成します。

前提条件

認可要件
  • ソースコードレビューの対象範囲を明示した書面による認可
  • ソースコードへのアクセス — バージョン管理履歴を含む完全なリポジトリ
  • 利用可能な場合はアーキテクチャドキュメント(データフロー図、API 仕様)
  • デプロイ設定へのアクセス(環境変数、シークレット管理)
環境設定
  • taint 分析用のカスタムルールを備えた semgrep
  • 対象言語向けに構築された CodeQL データベース
  • 高速なパターン検索用の ripgrep
  • Android APK の逆コンパイル用 jadx(該当する場合)
  • JavaScript のソースマップ抽出ツール(圧縮されている場合)
  • 対象言語用の AST 解析ツール(tree-sitter、babel など)

基本ワークフロー

フェーズ 1:調査
  1. アーキテクチャのマッピング:アプリケーションの各レイヤー(ルーティング、コントローラー、サービス、データアクセス、テンプレート)を特定します。HTTP のエントリーポイントからビジネスロジックを経て、データベース/ファイル/外部のシンクに至るまでのデータフローをマッピングします。
  2. エントリーポイントの列挙:ユーザーが制御するすべての入力ソース(HTTP パラメーター、ヘッダー、Cookie、ファイルアップロード、WebSocket メッセージ、環境変数、ユーザー保存データのデータベース読み取り)を一覧化します。
  3. セキュリティパターンの棚卸し:既存のセキュリティ対策(入力検証関数、出力エンコードヘルパー、パラメーター化クエリのパターン、CSRF 対策、認証ミドルウェア、レートリミッター)を特定します。
フェーズ 2:脆弱性分析(5 つの並行トラック)
  1. インジェクションシンクの探索:SQL/コマンド/ファイル/テンプレートのシンクからソースへ taint を逆向きに追跡します。各シンクをスロットタイプで分類します:SQL-val、SQL-ident、CMD-argument、FILE-path、TEMPLATE-expr。パラメーター化またはサニタイズによって taint チェーンが断たれているかを検証します。
  2. XSS レンダリングコンテキストの分析:テンプレート/レスポンス内のすべての動的出力箇所を特定します。それぞれをレンダリングコンテキストで分類します:HTML_BODY、HTML_ATTRIBUTE、JAVASCRIPT_STRING、URL_PARAM、CSS_VALUE。各出力箇所で、コンテキストに適したエンコードが適用されているかを検証します。
  3. 認証チェックリスト(9 項目):通信のセキュリティ、レート制限、セッション管理、トークンの特性、セッション固定への耐性、パスワードポリシーの適用、ログイン応答の均一性、アカウント復旧のセキュリティ、SSO/OAuth の実装。
  4. 認可モデルのレビュー(3 種類):水平(同じロールの別ユーザーへのアクセス)、垂直(ロールをまたぐ権限昇格)、コンテキスト/ワークフロー(状態に依存する認可の回避)。
  5. SSRF シンクの探索:すべての外向きリクエストのシンクを特定します。種類別に分類します:クラシック(直接 URL)、ブラインド(応答なし)、セミブラインド(一部応答あり)、格納型(遅延実行)。ユーザー入力からリクエストのディスパッチまで、URL の構築を追跡します。
フェーズ 3:統合
  1. 確信度のスコアリングと検証キュー:taint チェーンの完全性、サニタイズ回避の可能性、影響の重大度に基づいて各検出結果をスコアリングします。後続のエクスプロイト検証向けに、検証キューの JSON を生成します。

スロットタイプの分類

スロットタイプシンクパターン必要なサニタイズ
SQL-valクエリパラメーターの値の位置パラメーター化クエリ/プリペアドステートメント
SQL-identテーブル名、カラム名、ORDER BY許可リストによる検証
CMD-argumentシェルコマンドの引数引数のエスケープ処理+許可リスト
FILE-pathファイル読み書きパスの構築パスの正規化+許可リスト
TEMPLATE-exprテンプレートエンジンの式コンテキストを認識した自動エスケープ

コンテキスト別の出力形式

コンテキスト出力場所必要なエンコード
HTML_BODYHTML タグの間HTML エンティティエンコード
HTML_ATTRIBUTE属性値の内部属性エンコード + 引用符で囲む
JAVASCRIPT_STRINGJS 文字列リテラルの内部JavaScript Unicode エスケープ
URL_PARAMURL クエリパラメーター値URL パーセントエンコード
CSS_VALUECSS プロパティ値の内部CSS 16 進数エンコード

ツールのカテゴリ

カテゴリツール目的
汚染解析semgrep, CodeQLシンクからソースへの汚染を自動追跡
パターン検索ripgrep, ast-grepコードパターンを高速に照合
逆コンパイルjadx, sourcemap-extractコンパイル済みアーティファクトからソースを復元
AST 解析tree-sitter, babel言語を考慮したコード構造の解析
依存関係の監査npm audit, pip-audit, snyk既知の脆弱性を検出

参考資料

  • references/tools.md - ツール関数のシグネチャとパラメーター
  • references/workflows.md - 汚染解析のワークフローと脆弱性のパターン

コメント