Communityコーディング&開発github.com

boshu2/security

コードやリポジトリをスキャンし、セキュリティ脆弱性、シークレット、依存関係、プロンプトリスクを評価します。具体的な露出評価が必要な場合に使用し、ポリシーを黙って変更してはなりません。

security とは?

このスキルは、コードベース、スクリプト、認可されたバイナリ、およびリポジトリ管理下のプロンプトサーフェスに対して、反復可能なセキュリティチェックを実行するためのものです。開発者は、リポジトリスキャン、認可されたバイナリの保証、依存関係リスク評価、シークレット漏洩チェック、オフラインのプロンプトサーフェスに対するレッドチーム攻撃などを、このスキルを通じて依頼できます。このスキルは、Claude Code、Cursor、CodexなどのAIエージェントプラットフォーム上で動作し、現在のエージェントとシェルを利用してスキャンを実行します。主な機能には、クイックゲート、フルスキャン、スケジュールゲート、ハント(調査)トリアージが含まれます。出力はJSON形式のアーティファクトとして生成され、スキャナーの可用性、カバレッジギャップ、発見事項(ファイルと行番号を含む)などを報告します。このスキルは読み取り専用で動作し、シークレットの外部送信や破壊的なペイロードの実行を禁止するなど、厳格な制約を設けています。重要なのは、発見事項と是正措置を明確に分離し、リスクの受容やポリシー変更などの判断は呼び出し元に委ねる点です。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/boshu2/agentops/tree/main/skills/security

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

セキュリティスキル

目的: コード、スクリプト、認可されたバイナリ、リポジトリ管理下のプロンプトサーフェスに対して、反復可能なセキュリティチェックを実行します。

このスキルは、呼び出し元から要求されたリポジトリスキャン、認可されたバイナリの保証、依存関係リスク、シークレット、またはオフラインのプロンプトサーフェスレッドチームのために使用します。

重要な制約事項

  • オペレーターが所有するか、明示的に評価を許可されたリポジトリ、バイナリ、プロンプトサーフェスのみをスキャンします。理由: セキュリティレビューは、サードパーティのシステムや独自素材へのアクセスを許可するものではありません。
  • デフォルトでコレクションは読み取り専用に保ちます。シークレットを外部に送信したり、破壊的なペイロードを実行したり、グリーン判定を捏造するためにポリシーやベースラインを変更したりしないでください。理由: 評価自体がインシデントになってはならず、その証拠を消し去ってもいけません。
  • 欠落またはエラーが発生しているスキャナーは、クリーンな結果ではなく、カバレッジギャップとして扱います。完全なツールカバレッジが必要な場合は --require-tools を使用します。理由: 証拠がないことは、存在しないことの証拠ではありません。
  • 現在のエージェントとローカルシェルを使用します。明示的に要求されない限り、別のランタイムやオーケストレーション基盤を起動しないでください。理由: リポジトリスキャンは限定された操作であり、外部への展開を許可するものではありません。
  • 選択したスキャンを1回実行し、結果とカバレッジギャップを報告します。是正、リスク受容、再実行、および昇格は呼び出し元の判断に委ねられます。

プロンプト

fleet-router リポジトリの cli/ に対してフルセキュリティスキャンを実行してください:依存関係リスク、シークレット、静的解析。コレクションは読み取り専用に保ち、欠落しているスキャナーはすべてカバレッジギャップとして扱い、是正は行わずに結果とカバレッジギャップを報告してください。

成功の基準

  • レポートには、実行されたスキャナー(例:gosec ./...)がリストされ、欠落しているツールはクリーンパスではなくカバレッジギャップとしてマークされます。
  • コレクションは全体を通して読み取り専用に保たれます。トランスクリプトに curl、rm、または資格情報の読み取りが現れてはいけません。
  • 発見事項には、cli/internal/auth/token.go:42 のようにファイルと行番号が記載され、曖昧なカテゴリではありません。
  • レスポンスの findings と coverage gaps は、是正手順とは別に保持され、呼び出し元の判断として残されます。

セキュリティサーフェス

  1. リポジトリゲート: scripts/security-gate.sh は、利用可能なスキャナーを組み合わせて、クイック/フル/リリースチェックを実行します。
  2. 構成可能なスイート: scripts/security_suite.py は、認可されたバイナリに対して、静的、動的、契約、ベースライン、およびポリシーのプリミティブを提供します。
  3. オフラインレッドチーム: scripts/prompt_redteam.py は、リポジトリ所有のプロンプトおよびツール制御サーフェスを攻撃パックに対してチェックします。

これが標準的なセキュリティランブックです。スイートポリシーゲーティングは、ポリシーファイルが提供された場合に policy/policy-verdict.json を含む、機械可読な出力を生成します。

バイナリ、ポリシー、ベースライン、またはレッドチーム作業の前に、スイートランブック を読んでください。コードレベルのレビューには OWASP チェックリスト を使用してください。

実行ワークフロー

1) クイックゲート

実行:

scripts/security-gate.sh --mode quick

チェックポイント: 終了コードを保存し、報告された security-gate-summary.json が存在し、トリアージ前にパースできることを確認します。

2) フルスキャン

実行:

scripts/security-gate.sh --mode full

スキップされたスキャナーが保証の主張を無効にする場合は、--require-tools を追加します。チェックポイント: 選択されたアーティファクトバリデータとプロセスの両方が成功しない限り、結果を不完全として報告します。

3) スケジュールゲート

スケジュールされた自動化は、対象のブランチに対してフルゲートを実行し、そのアーティファクトディレクトリを保持します。スケジュールされた実行が失敗すると、アクション可能な追跡作業が作成されます。AgentOps 自体はスケジューラを提供しません。

4) ハント(調査)の規律

スクリプト化されたゲートを超えたレビュー作業(コードレベルまたはレッドチームパス)については、最初の直感ではなく、完全な分類体系に従って調査します。

  • 完全分類体系のハント. OWASP チェックリスト(プロンプトサーフェスの場合は攻撃パック)の該当するすべてのクラスを調べ、クラスごとに結果(発見、クリーン、未評価)を記録します。訪問していないクラスは、クリーンではなくカバレッジギャップです。疑わしいリード1つを追跡して分類体系全体を無視することは、最初の臭いへの固執という障害モードです。
  • 発見ごとの実証的証拠. 発見は、その動作を示す具体的な入力、リクエスト、またはコマンドがアーティファクトにキャプチャされ、再現可能な場合にのみ現実のものとなります。パターンマッチのみの発見は、推測として報告され、証明されたものより低くランク付けされます。
  • フェイルオープンプローブ. サーフェス上のすべてのガード、ゲート、タイムアウトについて、エラー時やハングアップ時に何が起こるかを尋ね、安全な場所でプローブします。エラー時にフェイルオープンする制御は、正常パスが正しくても発見となります。
  • アイデンティティチェーン追跡. 認証または委任されたフローについては、各ホップ(ユーザー、サービス、トークン、フック)での実効アイデンティティを追跡します。アイデンティティが想定されていて検証されていないホップ(借用アイデンティティ障害モード)は発見となります。
  • 静かなラウンドへの収束. 完全なパスが1回、新しい発見も新しいカバレッジギャップも生じなくなるまで、完全なパスを繰り返します。その静かなラウンドが停止条件です。騒がしいラウンド(発見がまだ続いている)で停止するのは時期尚早です。予算が静かなラウンドに達する前に終了した場合は、調査を未収束として報告します。

5) トリアージ

  1. 最新のアーティファクトを開き、スキャナー、深刻度、ファイル、カバレッジギャップを特定します。
  2. 最も狭い安全なコマンドで発見を再現します。
  3. 具体的な発見をランク付けし、カバレッジギャップを保持します。
  4. 停止します。是正、リスク受容、およびその後のスキャンは、新たな呼び出し元の判断です。単にパスするためだけに、ベースラインをダウングレード、抑制、または更新しないでください。

出力仕様

アーティファクトディレクトリ: リポジトリゲートは ${SECURITY_GATE_OUTPUT_DIR:-${TMPDIR:-/tmp}/agentops-security}/<run-id>/ に書き込みます。構成可能スイートとレッドチームの実行は、明示的な --out-dir を使用します。

ファイル名規則: リポジトリゲートは security-gate-summary.json(および生の summary.json)が必要です。スイート実行は suite-summary.json、レッドチーム実行は redteam/redteam-results.json が必要です。

シリアライゼーション/スキーマ形式: security-gate-summary.json はJSONで、空でない mode、run_id、output_dir、gate_status、数値の missing_tool_count、ブール値の require_tools、オブジェクトの toolchain を含みます。

バリデータコマンド: OUT=<security-gate-run-dir> として、jq -e '(.mode|type)=="string" and (.mode|length)>0 and (.run_id|type)=="string" and (.run_id|length)>0 and (.output_dir|type)=="string" and (.output_dir|length)>0 and .gate_status=="PASS" and (.missing_tool_count|type)=="number" and (.require_tools|type)=="boolean" and (.toolchain|type)=="object"' "$OUT/security-gate-summary.json" >/dev/null を実行します。

出力: アーティファクトパス、コマンド/終了コード、モード、ゲートステータス、欠落ツールのカバレッジ、ランク付けされた発見、および認可境界を報告します。所有者、次のアクション、承認、リリース、再試行の決定を追加しないでください。

品質チェックリスト

  • ターゲットと認可境界が明確であり、コレクションはその範囲内に留まりました。
  • スキャナーの可用性とスキップ/エラーのカバレッジがレポートに表示されています。
  • 発見事項には、深刻度、場所、再現可能な証拠、および制限された是正ガイダンスが含まれています。
  • アーティファクトには、新たに公開されたシークレットや編集されていない機密ペイロードは含まれていません。
  • レポートは、合格したスキャンと昇格またはリリースの許可を区別しています。
  • 抑制、ポリシー変更、ベースライン、リスク受容には、明示的な判断が必要です。
  • レポートは証拠の提示後に停止し、継続判断は含みません。

検証

スキルとレッドチームバリデータを実行します:

bash skills/security/scripts/validate.sh
bash tests/scripts/test-security-suite-redteam.sh

制限されたスイートのスモークテストについては、スイートランブック に示されているように、所有するバイナリと一時的な出力ディレクトリを使用します。

例

  • クイックセキュリティリクエストは、リポジトリゲートを1回実行し、カバレッジと発見事項を報告します。
  • フルセキュリティリクエストは、フルスキャンを1回実行し、そのアーティファクトを保存します。
  • 認可されたバイナリリクエストは、明示的な一時出力ディレクトリにベースラインをキャプチャする場合があります。
  • レッドチームリクエストは、リポジトリ所有のサーフェスに対してオフラインの攻撃パックを実行する場合があります。

トラブルシューティング

問題対応
スキャナーが見つからない/エラーカバレッジギャップを記録する;インストールするか、必要な場合は --require-tools を指定して再実行する
ローカル/CIの不一致スキャナーのバージョン、設定、モード、両方のアーティファクトディレクトリを比較する
誤検知の疑い狭い範囲で再現する;承認された抑制とその所有者を文書化する
スイート/ベースラインの失敗指定された比較/ポリシーアーティファクトを検査する;反射的にベースラインを更新しない
文言変更後のレッドチーム失敗制御が後退したのか、攻撃パックマッチャーに意図的な修正が必要かを判断する

参考ドキュメント

Individual skills in this repo

This repo contains 9 individual skills — each has its own dedicated page.

関連スキル