mcpField
T
testing-security

testing-security

github.com/alphaonedevセキュリティ42 回インストール
リポジトリ

testing-security について

コードベースや Web アプリを監査するためのセキュリティテストスキルです。動的・静的解析、依存関係、シークレットのスキャンを組み合わせ、CI/CDやデプロイ前の確認、定期監査に対応します。

主な機能

  1. 01OWASP ZAP と Nuclei による動的スキャン
  2. 02Semgrep と Bandit による静的解析
  3. 03Snyk と Trivy による依存関係・コンテナのスキャン
  4. 04ファイルと Git 履歴のシークレット検出
  5. 05スクリプトでのスキャンツール連携

活用シーン

  1. 01プルリクエストのコード問題とシークレット漏えいの確認
  2. 02デプロイ前のステージング Web アプリのスキャン
  3. 03依存関係とコンテナイメージの脆弱性監査

インストール

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

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill testing-security

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

詳細

セキュリティテスト

目的

このスキルは、DAST ツール(OWASP ZAP、Nuclei)、SAST ツール(Semgrep、Bandit)、SCA ツール(Snyk、Trivy)、およびシークレットスキャナー(detect-secrets、TruffleHog)を統合してセキュリティテストを自動化し、コード、アプリケーション、シークレットに含まれる脆弱性を特定します。

使用するタイミング

CI/CD パイプライン、デプロイ前、または定期的な監査でこのスキルを使用します。Web アプリ、API、またはセキュリティ上の欠陥が侵害につながる可能性のある Python、Java、JavaScript などの言語で書かれたコードベースのあるプロジェクトに最適です。

主な機能

  • DAST:OWASP ZAP を実行して Web アプリをアクティブスキャンし、XSS や SQLi などの問題を検出します。カスタムの脆弱性テンプレートには Nuclei を使用します。
  • SAST:Semgrep を実行してパターンベースのコード解析(例:YAML ルールセット)を行うか、安全でないインポートなど Python 固有の問題には Bandit を使用します。
  • SCA:Snyk を活用し、SBOM 解析を通じて既知の CVE がないか依存関係をスキャンします。脆弱性データベースを使用したコンテナイメージのスキャンには Trivy を使用します。
  • シークレットの検出:detect-secrets を適用して API キーなどのパターンがないかファイルをスキャンします。公開されたシークレットを見つけるには、TruffleHog で Git の履歴をスキャンします。
  • 統合:ツールを単一のワークフローにまとめます。たとえば、コードの変更に対して SAST を実行し、ステージング環境に対して DAST を実行します。

使用パターン

認証には常に環境変数を使ってツールを設定します(例:OWASP ZAP の $ZAP_API_KEY、Snyk の $SNYK_TOKEN)。新しいプロジェクトではまずベースラインスキャンを行い、その後スクリプトで自動化します。

  • パターン 1:CI/CD では、プルリクエストで SAST を、ビルドで DAST を実行します。例:GitHub Actions を使って差分ファイルに対して Semgrep を実行します。
  • パターン 2:ローカルテストでは、ツールを順番につなげます。まず Docker イメージに対して Trivy を実行し、次に URL に対して Nuclei を実行します。
  • 例 1:Python リポジトリの SAST とシークレットをスキャンするには、ツールをインストールし、ファイルに対して Bandit を実行してから detect-secrets を実行します。解析用に結果を JSON レポートに出力します。
  • 例 2:Web アプリで DAST を実行するには、OWASP ZAP をデーモンモードで起動し、zap-cli を使って URL をスキャンしてから、特定のエクスプロイトを対象に Nuclei を実行します。

主なコマンド/API

スクリプトやターミナルでは次のコマンドをそのまま使用します。依存関係がインストールされていることを確認してください(例:pip または Docker を使用)。

  • OWASP ZAP(DAST):zap.sh -daemon -port 8080 で起動し、続いて zap-cli -p 8080 quick-scan --spider https://target.com --report html でスキャンします。API エンドポイント:$ZAP_API_KEY を指定して /JSON/core/action/newSession/ に POST します。
  • Nuclei(DAST):nuclei -t templates/ -u https://target.com -o results.txt を実行します。重大度レベルを設定した nuclei-config.yaml などの設定ファイルを使用します。
  • Semgrep(SAST):semgrep --config p/default --lang python . を実行します。.semgrep.yml ファイルでカスタマイズします:rules: - id: no-os-system patterns: - pattern: os.system(...)。
  • Bandit(SAST):コマンド:bandit -r /path/to/code -f json。-x tests/ でパスを除外します。
  • Snyk(SCA):$SNYK_TOKEN で認証してから、snyk test --file=requirements.txt を実行します。API:プロジェクト一覧の取得には https://snyk.io/api/v1/org/{orgId}/projects に GET します。
  • Trivy(SCA):イメージをスキャンします:trivy image myimage:latest --exit-code 1 --severity CRITICAL。.trivy.yaml の ignoreUnfixed: true で設定します。
  • detect-secrets(シークレット):detect-secrets scan > .secrets.baseline を実行します。Git フックでは detect-secrets hook --baseline .secrets.baseline と併用します。
  • TruffleHog(シークレット):コマンド:trufflehog git https://github.com/repo --since-commit HEAD~1。パターンを指定するには --regex で絞り込みます。

統合に関する注意

スクリプト、または Jenkins や GitHub Actions などのオーケストレーションツールを通じて統合し、連携のために出力を JSON として渡します。認証には $TRIVY_USERNAME や $TRIVY_PASSWORD などの環境変数を設定します。分離して実行するには、Docker イメージ(例:owasp/zap2docker-stable)を使用します。設定形式:Semgrep ルールには YAML(例:{ patterns: [pattern: "regex"] })、Snyk レポートには JSON を使用します。互換性を損なう変更を避けるため、ツールのバージョンを固定してください(例:Semgrep v0.100.0)。

エラー処理

各コマンドの実行後に終了コードを確認します(例:Semgrep は検出結果があるとゼロ以外を返します)。OWASP ZAP の「error」キーを含む JSON レスポンスのように、標準出力からエラーを解析します。よくある問題:DAST でのネットワークエラー — zap-cli --retries 3 で再試行します。認証の失敗 — 環境変数を確認します(例:$SNYK_TOKEN が無効な場合、「Auth error」と出力されます)。すべての出力をファイルに記録し、スクリプトでは try-catch で処理します。たとえば、Bash では zap-cli quick-scan || echo "Scan failed: $?" >> error.log のようにします。API 呼び出しでは、HTTP ステータスコード(例:未認証を示す 401)を確認します。

グラフの関係

  • 関連:組み合わせたワークフローで unit-testing や integration-testing のスキルにリンクするなど、「testing」クラスターに関連します。
  • 依存:DAST には OWASP ZAP、SAST には Semgrep が必要です。
  • 統合:SCA には Snyk API、バージョン管理システム内のシークレットには TruffleHog と統合します。

コメント