security-audit について
security-auditは、AIエージェント向けにWebアプリ、API、クラウドインフラ、バックエンドを検査するセキュリティ監査スキルです。自動スキャンと手動レビューを組み合わせ、OWASP、CWE、コンプライアンス基準に対応付けた優先度付きの指摘と修正案を作成します。
主な機能
- 01認証・認可・入力検証の確認
- 02自動スキャンと手動コードレビュー
- 03重要度・CWE・OWASPによる分類
- 04優先順位付きレポートと修正案の作成
活用シーン
- 01Webアプリのセキュリティ上の弱点を確認
- 02クラウドインフラの設定を監査
- 03SOC 2やPCI-DSSとのギャップを評価
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ seb1n/ awesome-ai-agent-skills --skill security-auditインストール後、Claude Code で/security-auditを入力して読み込まれたか確認します。
詳細
セキュリティ監査
このスキルにより、エージェントは Web アプリケーション、API、クラウドインフラ、バックエンドサービスを対象に、徹底的なセキュリティ監査を実施できます。エージェントは、認証メカニズム、認可制御、入力検証、暗号化の実践状況、ログ設定、デプロイ設定を体系的に調査します。調査結果は、OWASP Top 10、CWE 識別子、SOC 2 や PCI-DSS などのコンプライアンス基準を含む業界フレームワークに対応付けられます。
ワークフロー
-
システム情報を収集する — テクノロジースタック、アーキテクチャ図、ネットワークトポロジ、デプロイモデル、サードパーティとの連携など、対象環境の詳細を収集します。設定ファイル、環境変数、Infrastructure as Code テンプレートを確認し、攻撃対象領域の全体像を把握します。
-
監査範囲とコンプライアンス目標を定義する — 対象となるコンポーネント、環境、データフローを特定して、監査の範囲を定めます。監査の目的を、SOC 2 Type II、PCI-DSS、HIPAA、社内セキュリティポリシーなど、関連するコンプライアンスフレームワークに対応付けます。体系的に網羅するため、OWASP Top 10 と CWE/SANS Top 25 に基づくチェックリストを作成します。
-
自動脆弱性スキャンを実施する — 対象に自動スキャナーを実行して、既知の脆弱性を特定します。Web アプリケーションには OWASP ZAP、コンテナイメージには Trivy または Grype、クラウドインフラには ScoutSuite または Prowler などのツールを使用します。手動レビューに備えて、スキャン結果を集約します。
-
手動でセキュリティレビューを実施する — 認証フロー、セッション管理、ロールベースのアクセス制御、入力サニタイズの処理、暗号化の実装、エラー処理、ログの運用状況を手動で調査します。自動ツールでは見落とされることが多い、ハードコードされたシークレット、安全でないデシリアライゼーション、ビジネスロジックの欠陥がないか、ソースコードを確認します。
-
調査結果を分析し、分類する — CVSS スコアリングを使用して、各調査結果の深刻度(Critical、High、Medium、Low、Informational)を評価します。CWE 識別子を割り当て、関連する OWASP Top 10 のカテゴリに対応付けます。悪用可能性、影響範囲、ビジネスへの影響を評価し、優先順位を付けたリスクランクを作成します。
-
修正計画を含む監査レポートを作成する — エグゼクティブサマリー、証拠と再現手順を含む詳細な調査結果、リスク評価、推定工数を添えた具体的な修正推奨事項を含む、構成化されたレポートを作成します。対象のフレームワークの各統制に対する合格/不合格の状況を示す、コンプライアンスギャップ分析も含めます。
対応テクノロジー
- Web フレームワーク:Express.js、Django、Flask、Spring Boot、Rails、ASP.NET
- クラウドプラットフォーム:AWS(IAM、S3、EC2、RDS、Lambda)、GCP、Azure
- コンテナとオーケストレーション:Docker、Kubernetes、ECS
- スキャンツール:OWASP ZAP、Prowler、ScoutSuite、Trivy、Grype、Checkov
- コンプライアンスフレームワーク:OWASP Top 10、CWE/SANS Top 25、SOC 2、PCI-DSS、HIPAA、NIST 800-53
使用方法
アプリケーションのソースコード、インフラ設定、または対象 URL と、希望するコンプライアンス範囲をエージェントが利用できるようにしてください。エージェントは監査ワークフロー全体を実行し、優先順位を付けた調査結果レポートを作成します。
プロンプトの例:
Perform a security audit of the Node.js Express application in /app. Focus on OWASP Top 10 coverage and SOC 2 compliance. Include CWE IDs and remediation steps for every finding.
例
例 1:Node.js Express アプリケーションの監査
対象:Express.js、Sequelize ORM、JWT 認証を使用して構築された E コマース API。
検出結果レポート(抜粋):
| # | 重大度 | タイトル | CWE | OWASP カテゴリ |
|---|---|---|---|---|
| 1 | Critical | 商品検索エンドポイントにおける SQL インジェクション | CWE-89 | A03:2021 Injection |
| 2 | High | リポジトリにコミットされた .env に JWT シークレットが平文で保存されている | CWE-798 | A07:2021 Identification and Authentication Failures |
| 3 | High | /api/login にレート制限が設定されていない | CWE-307 | A07:2021 Identification and Authentication Failures |
| 4 | Medium | 詳細なエラーメッセージによって本番環境でスタックトレースが露出する | CWE-209 | A04:2021 Insecure Design |
| 5 | Medium | CORS ポリシーで認証情報を含むワイルドカードのオリジンが許可されている | CWE-942 | A05:2021 Security Misconfiguration |
| 6 | Low | HTTP セキュリティヘッダー(X-Content-Type-Options、CSP)が設定されていない | CWE-693 | A05:2021 Security Misconfiguration |
検出結果 #1 の修正方法:
// BEFORE — vulnerable to SQL injection
app.get('/api/products', async (req, res) => {
const results = await sequelize.query(
`SELECT * FROM products WHERE name LIKE '%${req.query.search}%'`
);
res.json(results);
});
// AFTER — parameterized query
app.get('/api/products', async (req, res) => {
const results = await sequelize.query(
'SELECT * FROM products WHERE name LIKE :search',
{ replacements: { search: `%${req.query.search}%` }, type: QueryTypes.SELECT }
);
res.json(results);
});
例 2:AWS インフラストラクチャの監査
対象:3 層 Web アプリケーションを実行する本番 AWS アカウント。
Prowler スキャンコマンド:
prowler aws --compliance soc2 pci_dss --output-formats json html --output-directory ./audit-report
検出結果レポート(抜粋):
| # | 重大度 | 検出内容 | AWS サービス | コンプライアンス管理策 |
|---|---|---|---|---|
| 1 | Critical | S3 バケット prod-user-uploads でパブリック読み取りアクセスが有効になっている | S3 | PCI-DSS 7.1, SOC 2 CC6.1 |
| 2 | High | IAM ユーザー deploy-bot にインラインの AdministratorAccess ポリシーが設定されている | IAM | SOC 2 CC6.3 |
| 3 | High | RDS インスタンス prod-db で保存時の暗号化が無効になっている | RDS | PCI-DSS 3.4, SOC 2 CC6.1 |
| 4 | Medium | すべてのリージョンで CloudTrail ログが有効になっていない | CloudTrail | SOC 2 CC7.2 |
| 5 | Medium | セキュリティグループ sg-0abc123 で、0.0.0.0/0 からの SSH(ポート 22)が許可されている | EC2 | PCI-DSS 1.3 |
検出結果 #2 の修正方法:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["ecr:GetAuthorizationToken", "ecs:UpdateService", "ecs:DescribeServices"],
"Resource": "arn:aws:ecs:us-east-1:123456789012:service/prod-cluster/web-service"
}
]
}
ベストプラクティス
- 定期的なスケジュールで監査する — 年に一度だけではなく、少なくとも四半期ごと、および大規模なリリースやインフラストラクチャの変更のたびに監査を実施してください。
- 自動テストと手動テストを組み合わせる — 自動スキャナーは既知の脆弱性パターンを検出できますが、ビジネスロジックの欠陥、認可の回避、連鎖的な攻撃シナリオを見つけるには手動レビューが不可欠です。
- CWE と CVSS を一貫して使用する — すべての検出結果に CWE 識別子と CVSS スコアを割り当て、関係者が監査間で重大度を比較し、修正の傾向を追跡できるようにしてください。
- 再テストで修正を検証する — 修正をデプロイした後、該当する監査チェックを再実行し、脆弱性が解消され、リグレッションが発生していないことを確認してください。
- 監査証跡を維持する — コンプライアンスレビューやインシデント調査に備えて、すべての監査レポート、証拠、修正記録を一元化されたリポジトリに保管してください。
- サードパーティの連携も監査範囲に含める — 決済ゲートウェイ、OAuth プロバイダー、SaaS API は、ファーストパーティのコードだけを監査していると見落としやすいリスクをもたらします。
安全上の境界
- ユーザーが所有するシステム、または評価の明示的な許可を得たシステムのみを対象とし、テストの前に承認済みの範囲を記録してください。
- 受動的な調査または読み取り専用の検査から始めてください。アクティブスキャン、エクスプロイト、負荷の生成、またはサービスを妨げる修正を行う前に、明示的な承認を得てください。
- シークレットを決して露出させず、無関係なデータを抽出せず、本番環境の制御を弱めず、承認済みの対象範囲を超えないでください。
- 証拠を保全し、影響を最小限に抑え、不安定な状態が発生したら停止してください。また、重要な変更ごとにロールバックまたは封じ込めの手順を提示してください。
エッジケース
- セキュリティ態勢にばらつきのあるマイクロサービス — あるサービスでは認証を必須にしていても、別の内部サービスではすべてのトラフィックを信頼している場合があります。サービス間通信を監査し、プライベートネットワーク内でもゼロトラストの原則が適用されていることを確認してください。
- ソースコードにアクセスできないレガシーシステム — ソースコードを入手できない場合は、ブラックボックステスト、トラフィック分析、設定のレビューに頼ってください。監査レポートには、カバレッジが限定されていることを明記してください。
- サーバーレスおよびイベント駆動型アーキテクチャ — Lambda 関数、Step Functions、イベントトリガーでは、実行コンテキストが一時的です。IAM 実行ロールとイベントソースの権限を監査し、機密データが平文で CloudWatch に記録されないようにしてください。
- マルチテナントアプリケーション — データ層、API 層、インフラ層でテナント分離が徹底されていることを確認してください。テナントアカウント間で水平権限昇格が可能かテストしてください。
- WAF または CDN の背後にあるアプリケーション — 自動スキャナーでは、WAF によってフィルタリングされた範囲しかテストできない場合があります。可能であれば、オリジンも直接テストし、修正するのではなく WAF が隠している脆弱性を特定してください。