security について
許可されたコード、リポジトリ、バイナリ、設計、プロンプト面を対象とするセキュリティレビュー用スキルです。手動の脅威分析と任意のスキャンを組み合わせ、確認済みの問題と疑いを区別し、網羅性の不足も記録します。
主な機能
- 01許可されたコードと設計をレビュー
- 02フェイルオープンとID経路を確認
- 03弱点分類ごとの網羅性を記録
- 04確認済みと疑いを区別
- 05利用可能なスキャンと不足を記録
活用シーン
- 01リポジトリのセキュリティ弱点を調査
- 02実装前に設計を評価
- 03許可されたバイナリやプロンプト面を調査
- 04スキャン結果と網羅性の制約を報告
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ boshu2/ agentops --skill securityインストール後、Claude Code で/securityを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/agentops-redteam-pack.jsonattacker-path-evidence.mdowasp-checklist.mdpolicy-example.jsonsecurity-suite-runbook.mdscripts/prompt_redteam.pysecurity_suite.pyvalidate.sh詳細
セキュリティスキル
目的: コード、スクリプト、許可されたバイナリ、リポジトリ管理下のプロンプトサーフェスにおけるセキュリティ上の弱点を、カバレッジを偽らずに見つけて報告します。
呼び出し元から依頼されたコードのセキュリティレビュー、コード作成前の計画や設計のレビュー、リポジトリのスキャン、許可されたバイナリの保証、依存関係のリスク、シークレット、またはオフラインでのプロンプトサーフェスのレッドチームにこのスキルを使用します。
重要な制約
- オペレーターが所有している、または評価する明示的な許可を得ているリポジトリ、バイナリ、プロンプトサーフェスのみをスキャンしてください。理由: セキュリティレビューを行う許可は、サードパーティのシステムや専有資料へのアクセスを許可するものではありません。
- データ収集は既定で読み取り専用にしてください。シークレットを持ち出したり、破壊的なペイロードを実行したり、評価を良好に見せるためにポリシーやベースラインを変更したりしないでください。理由: 評価そのものがインシデントになったり、その証拠を消したりしてはなりません。
- スキャナーがない場合やエラーが発生した場合は、問題がないと判断せず、カバレッジの不足として扱ってください。すべてのツールを確実にカバーする必要がある場合は、
--require-toolsを使用してください。理由: 証拠がないことは、問題がない証拠ではありません。 - 現在のエージェントとローカルシェルを使用してください。明示的に依頼されない限り、別のランタイムやオーケストレーション基盤を起動しないでください。理由: リポジトリのスキャンは範囲が限定された作業であり、処理を分散する許可ではありません。
- 検出事項とカバレッジの不足を報告したら終了してください。修正、リスクの受容、再実行、昇格、および出荷やマージの判断は、呼び出し元が決定します。出荷、マージ、デプロイの可否を尋ねられた場合は、検出事項とカバレッジを伝えたうえで、その証拠に基づく実施可否の判断は呼び出し元が行うことを一行で述べてください。どのような表現であっても、出荷、保留、またはブロックを推奨することは、その判断を下すことにあたります。各検出事項の修正分類を数語で示してください。パッチ、計画、担当者、優先度は記載しないでください。依頼された場合も同様です。
すべてのレビューで報告する内容
スクリプトによるレビューにも手動レビューにも、以下を適用してください。最も見落とされやすいルールです。
- フェイルオープン経路。 表面に現れるすべてのガード、チェック、タイムアウト、例外ハンドラーについて、エラーやハングが発生した場合に何が起きるかを確認してください。エラー時にアクセスを許可する、チェックを省略する、成功として処理を続行する制御は、通常どおりの経路が正しくても指摘事項です。
- 借用されたアイデンティティ。 各ホップで有効なアイデンティティ(ユーザー、サービス、トークン、デフォルト、フック)を追跡してください。アイデンティティが検証されず、想定、デフォルト設定、または継承されているホップは、借用されたアイデンティティの障害モードであり、指摘事項です。
- クラスごとの網羅性台帳。 クラスチェックリストにある該当する各クラスに加え、フェイルオープン、アイデンティティ、および対象範囲に必要でリストにないクラスもすべて確認し、それぞれについて結果(指摘事項、問題なし、未評価)を記載してください。確認していないクラスは未評価であり、問題なしとしてはなりません。分類体系を網羅せず、ひとつの手がかりだけを追い続けることは、最初に見つけた兆候への固執という障害モードです。
- 立証済みか、疑いか。 具体的な入力、リクエスト、またはコマンドを実行し、その挙動を確認した場合に限り、指摘事項は立証済みです。確認した内容を記録してください。コードから推論した指摘事項は、候補となる入力があっても疑いの段階です。その入力を示し、立証済みの指摘事項より低い優先度を付けてください。
- スナップショットの範囲。 対象とする正確なスナップショット(コミット、指定した HEAD の作業ツリー、またはドキュメントのリビジョン)とパスの範囲を明記してください。読まなかった入力は、未読、削除済み、または範囲外として別途列挙してください。これらはどれも問題なしには該当しません。影響の範囲はスナップショット内に限定してください。存在しないコード、将来の変更、または未読のパスを必要とする指摘事項は仮説であり、そのように明記します。残りの予算で完全なパスをもう一度実施できない場合は、新たな手がかりの調査をやめ、調査が未収束であると報告してください。
- 共有または公開に関する質問での公開対象範囲。 コンテンツを公開したり、他者に渡したりしても安全か(リポジトリ、エクスポート、パッケージ)と尋ねられた場合、スナップショットには受領者が受け取るものを含めます。つまり、ビルド済み成果物または出力ツリー、それに含まれるすべての到達可能なコミット履歴、さらにインデックス、キャッシュ、生成ファイルなどの派生コピーです。HEAD で削除されたコンテンツも、過去のコミットから漏えいする可能性があります。履歴からの露出について、修正クラス(認証情報のローテーション、新しい履歴の作成、または所有者が承認した書き換え)とともに報告し、いずれも実施しないでください。
各指摘事項について、攻撃者がたどる経路と関連する保護制御を、以下のフィールドで説明してください。到達可能性、制御の有効性、または主張されているテスト完了の裏付けをさらに確認する必要がある場合に限り、攻撃者経路の証拠を読んでください。
target: <paths, endpoints, or binary>; authorization: <boundary>
snapshot: <commit | working tree on HEAD | document revision>; unread: <paths> | deleted: <paths> | outside scope: <paths>
findings: <id> <severity> <file:line> <class>: <what>
proven: <input run> | suspected: <candidate input, why not run>
path: <attacker input> -> <reachable behavior> -> <trust boundary> -> <impact>
control: <relevant protection challenged and outcome, or none identified>
fix class: <a few words>
coverage: <class> -> finding <ids> | clean | not assessed (<why>)
tools: <scanner or command> -> ran | missing | error
hunt: converged after <n> passes | unconverged | not run
手動調査
コードレベルのレビューとレッドチームの調査は、AgentOps ツールの有無を問わず、どのリポジトリでも実施できます。対象範囲全体について台帳を確認し、安全であればフェイルオープンの挙動を調べてください。完全なパスを繰り返し実施し、新たな指摘事項も新たな網羅性のギャップも見つからないパスが一度完了した時点で終了してください。この静かなラウンドが終了条件です。それより先に予算が尽きた場合は、調査が未収束であると報告してください。この静かなラウンドのルールは、手動調査にのみ適用されます。
まだコードのない計画、仕様、設計にも、対象をドキュメントが提案する内容に置き換えて、同じ調査を実施してください。新たに追加されるエンドポイント、データストア、連携、入力を列挙し、記載どおりに構築された場合に攻撃者が利用できる弱点のみを報告します。たとえば、名前の示されたアクターやアクセス判断がない機能、転送中、保存中、ログ記録時、削除時の取り扱いが明記されていない機密データ、信頼性、保存、ローテーション、侵害時の挙動が明記されていない第三者またはシークレット、あるいは入力の扱い方を含め、それ自体が安全でないと明記された選択肢などです。該当するセクションを引用してください。ドキュメントが提案する内容の弱点はそのリビジョンの範囲内であり、ルール5の仮説ではありません。実行できるものがないため、それぞれ疑いとして扱います。
スクリプトによるスキャン
選択したスキャンはリクエストごとに1回実行されます。再実行は、新たな呼び出し元の判断となります。
<skill-dir> は、この SKILL.md を含むディレクトリです。Claude Code では「このスキルのベースディレクトリ」と表示され、Codex ではこのスキルの SKILL.md のパスとして表示されます。AgentOps のソースチェックアウトでは skills/security です。コマンドを実行する前に、<skill-dir> をその絶対パスに置き換えてください。作業ディレクトリはユーザーのリポジトリのままにします。ホストがこのスキルのインストール場所を表示しなかった場合は、読み込んだ SKILL.md のディレクトリを使用してください。特定できない場合は、パスを推測したり、現在のリポジトリにある同名のスクリプトを実行したりしないでください。バンドルされたスクリプトは利用できないと伝え、プロジェクトで既に使用されているスキャナーを実行し、スイートまたはレッドチームスキャンをカバレッジのギャップとして記録したうえで、手動調査を行ってください。
| 対象 | エントリーポイント | 場所 |
|---|---|---|
| リポジトリゲート(簡易または完全) | bash scripts/security-gate.sh | AgentOps リポジトリのルートのみ |
| 認可済みバイナリ向けの組み合わせ可能なスイート | python3 "<skill-dir>/scripts/security_suite.py" | このスキルにバンドル |
| オフラインのプロンプトサーフェス向けレッドチーム | python3 "<skill-dir>/scripts/prompt_redteam.py" | このスキルにバンドル |
- ゲートスクリプトがない場合(その他のリポジトリ):依存関係監査、シークレットスキャン、静的解析ツールなど、プロジェクトですでに使用されているスキャナーを実行します。存在しないものはそれぞれカバレッジのギャップとして記録し、手動調査を行ってください。
- レッドチームパック: バンドルされた攻撃パックは、AgentOps の制御サーフェスを対象としています。別のリポジトリでは、そのケースは「no files matched target globs」で失敗します。これはパックとの不一致であり、検出結果ではありません。PASS は、制御が文書化されていることを示すものであり、エージェントがそれに抵抗できることを示すものではありません。
- ゲート、バイナリ、ポリシー、ベースライン、またはレッドチームの作業に入る前に、スイート実行手順書を読んでください。そこには、コマンド、ゲートの終了コード、アーティファクトの仕様、サンプリング方式であり隔離されていない動的実行の制限が記載されています。
トリアージ
- 最新のアーティファクトを開き、スキャナー、重大度、ファイル、カバレッジのギャップを特定します。
- 最も範囲を絞った安全なコマンドで検出結果を再現します。再現できない検出結果は、疑いありのまま扱います。
- 具体的な検出結果に優先順位を付け、カバレッジのギャップを保持します。
- 停止します。修正、リスク受容、および後続のスキャンは、それぞれ新たな呼び出し元の判断となります。通過させるためだけに、重大度を下げたり、検出を抑制したり、ベースラインを更新したりしないでください。
出力仕様
- アーティファクトディレクトリ: スイートとレッドチームの実行結果は、明示的に指定した
--out-dirの下に書き込まれます。リポジトリゲートのディレクトリは実行手順書に記載されています。 - ファイル名の規則:
security-gate-summary.json(ゲート)、suite-summary.json(スイート)、redteam/redteam-results.json(レッドチーム)。 - シリアライズ/スキーマ形式: JSON。検証コマンド: ゲートサマリーのフィールド仕様と
jqチェックは実行手順書に記載されています。これに合格しないサマリーでは、結果は不完全です。
後続への引き継ぎ: 上記のレビュー報告書。スクリプトによるスキャンの場合は、アーティファクトのパス、コマンドと終了コード、モード、ゲートのステータスも含めます。報告書は証拠を示した時点で終了します。担当者、次のアクション、承認、リリース、出荷、再試行に関する判断、および新たに露出したシークレットや未マスキングの機微なペイロードは含めません。