mcpField
S
shared-security-auth-security

shared-security-auth-security

github.com/agents-incセキュリティ2675 回インストール2 日前に更新
リポジトリ

shared-security-auth-security について

Security Patterns は、アプリケーションコードとワークフローのセキュリティ対策を案内するエージェントスキルです。シークレット、依存関係の脆弱性、XSS、CSRF、認証トークン、アクセス制御を扱います。

主な機能

  1. 01シークレットの保管とローテーション
  2. 02依存関係のスキャンと修正期限
  3. 03サニタイズと CSP による XSS 対策
  4. 04CSRF 対策パターン
  5. 05認証トークンの安全な保管
  6. 06CODEOWNERS とアクセス制御の指針

活用シーン

  1. 01認証情報のリポジトリ混入防止
  2. 02依存関係の脆弱性対応の確認
  3. 03HTML 描画の XSS 対策
  4. 04認証と機密ファイルレビューの保護

インストール

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

$npx skills add https://github.com/agents-inc/skills --skill shared-security-auth-security

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

metadata.yaml
reference.md
examples/
access-control.md
core.md
dependency-security.md
xss-prevention.md

詳細

セキュリティパターン

クイックガイド: シークレットの管理には、.env.local(Git の追跡対象外)と CI のシークレットを使用します。漏えいやチームの変更があった場合はローテーションします。依存関係のセキュリティ対策には、自動スキャン(Dependabot)を有効にし、重大な脆弱性には24時間以内にパッチを適用します。XSS の防止には、最新のフレームワークでは出力がデフォルトで自動エスケープされます。DOMPurify でサニタイズしない限り、生の HTML を注入してこの機能を回避してはいけません。CSP ヘッダーを設定します。CODEOWNERS では、auth/、.env.example、workflows への変更にセキュリティチームのレビューを必須にします。

詳細なリソース:

  • コード例については、examples/core.md(必須パターン)を参照してください
  • 判断フレームワークとアンチパターンについては、reference.mdを参照してください

追加の例:


<critical_requirements>

重要:このスキルを使用する前に

すべてのコードで、CLAUDE.md に記載されたプロジェクトの規約に従ってください(kebab-case、名前付きエクスポート、インポート順序、import type、名前付き定数)

(リポジトリにシークレットをコミットしてはいけません。.env.local と CI のシークレットのみを使用してください)

(生の HTML をレンダリングする前に、すべてのユーザー入力をサニタイズする必要があります。HTML を注入する前に DOMPurify を使用してください)

(重大/高の脆弱性には24時間以内にパッチを適用する必要があります。自動スキャンには Dependabot を使用してください)

(認証トークンには HttpOnly Cookie を使用する必要があります。localStorage や sessionStorage は絶対に使用しないでください)

(セキュリティ上重要なファイルには CODEOWNERS を設定し、セキュリティチームの承認を必須にする必要があります)

</critical_requirements>


自動検出: セキュリティ、シークレット管理、XSS 対策、CSRF 対策、Dependabot、脆弱性スキャン、認証、DOMPurify、CSP ヘッダー、CODEOWNERS、HttpOnly Cookie

使用する場面:

  • シークレットを安全に管理する場合(コミットせず、.env.local と CI のシークレットを使用)
  • 脆弱性の自動スキャン用に Dependabot を設定する場合
  • XSS 攻撃を防止する場合(フレームワークによる自動エスケープ、DOMPurify、CSP ヘッダー)
  • セキュリティ上重要なコードに CODEOWNERS を設定する場合
  • 安全な認証とトークン保存を実装する場合

使用しない場面:

  • 一般的なコード品質レビューの場合(セキュリティ上の懸念ではないため)
  • パフォーマンス最適化の場合(別の領域のため)
  • CI/CD パイプラインのセットアップの場合(ここで扱うセキュリティパターンはコード向けであり、インフラストラクチャ向けではないため)
  • セキュリティレビューによって重大な緊急修正が遅れる場合(後続対応として記録してください)

対象となる主なパターン:

  • シークレットをコミットしない(.gitignore、CI のシークレット、四半期ごとのローテーション方針)
  • Dependabot による依存関係の自動スキャン(重大な脆弱性には24時間以内に対応)
  • XSS 対策(フレームワークによる自動エスケープ、HTML 用の DOMPurify、CSP ヘッダー)
  • トークンと SameSite Cookie による CSRF 対策
  • セキュリティ上重要な領域(.env.example、認証コード、ワークフロー)への CODEOWNERS の設定
  • 安全なトークン保存(HttpOnly Cookie、メモリ内のアクセストークン)

## セキュリティの理念

セキュリティは機能ではなく、基盤です。コードのすべての行を、セキュリティを念頭に置いて記述する必要があります。多層防御とは複数の保護レイヤーを設けることであり、1つが機能しなくても、ほかのレイヤーが攻撃を防ぎます。

セキュリティパターンを使用する場面:

  • 常に使用します。セキュリティは任意ではありません
  • ユーザー入力を処理するとき(サニタイズと検証を行います)
  • シークレットを管理するとき(環境変数、ローテーションを使用します)
  • 認証トークンを保存するとき(HttpOnly Cookieを使用します)
  • CI/CDを設定するとき(脆弱性スキャン、CODEOWNERSを使用します)

妥協してはいけないこと:

  • 本番環境でHTTPSを決して省略しません
  • クライアント側の検証だけを決して信頼しません
  • リポジトリにシークレットを決してコミットしません
  • 機密性の高いトークンにlocalStorageを決して使用しません
  • 重要なコードのセキュリティレビューを決して回避しません

基本原則:

  • 最小権限:必要最小限のアクセス権を付与します
  • 多層防御:複数のセキュリティレイヤーを設けます
  • 安全側に失敗する:許可ではなく拒否をデフォルトにします
  • ユーザー入力を信頼しない:必ず検証してサニタイズします
  • 侵害を前提とする:攻撃が発生した場合(発生するかどうかではなく)に備えます

基本パターン

パターン 1:シークレット管理

シークレットをリポジトリに決してコミットしないでください。開発では.env.local(gitignore対象)の環境変数を使用し、本番環境ではCI/CDのシークレットマネージャーを使用します。シークレットは四半期ごと、またはチームメンバーの離脱時にローテーションします。

シークレットとは

シークレットには、APIキー、トークン、パスワード、データベース認証情報、秘密鍵、証明書、OAuthクライアントシークレット、暗号化キー、JWTシークレットが含まれます。

シークレットの保存場所

開発:

  • .env.local(gitignore対象)
  • 開発者ごとのローカル上書き設定
  • リポジトリに決してコミットしません

CI/CD:

  • GitHub Secrets
  • Vercel Environment Variables
  • GitLab CI/CD Variables
  • その他のプラットフォームのシークレットマネージャー

本番環境:

  • 環境変数(プラットフォームから注入)
  • シークレット管理サービス(AWS Secrets Manager、HashiCorp Vault)
  • コード内にハードコードしません
ローテーションポリシー

注記: NIST SP 800-63-4(2025)は、ユーザーにパスワードの定期的な変更を義務付けることを推奨していません。代わりに、イベントに応じたローテーション(侵害、チームメンバーの離脱、セキュリティインシデントの発生時)を使用してください。サービスアカウントと特権アクセスについては、引き続き定期的なローテーションを推奨します。

シークレットの種類ローテーション頻度
サービスアカウントの認証情報90日(四半期ごと)
APIキー365日(年1回)、または侵害時
ユーザーパスワード侵害時のみ(NIST 2025のガイダンス)
特権アカウントのパスワード90日(四半期ごと)
証明書有効期限の30日前に警告
すべてのシークレットチームメンバーの離脱時に直ちに

コード例については、examples/core.mdを参照してください。


パターン 2:依存関係のセキュリティ

Dependabotによる自動脆弱性スキャンを有効にし、依存関係のセキュリティ問題を検出します。重大な脆弱性には24時間以内、高リスクの脆弱性には1週間以内、中リスクの脆弱性には1か月以内にパッチを適用します。

更新ポリシー

セキュリティ更新:

  • 重大な脆弱性 - 直ちに(24時間以内)
  • 高リスクの脆弱性 - 1週間以内
  • 中リスクの脆弱性 - 1か月以内
  • 低リスクの脆弱性 - 次回の定期更新サイクル

定期更新:

  • パッチ更新(1.2.3 -> 1.2.4) - テストに合格した場合、自動マージします
  • マイナー更新(1.2.0 -> 1.3.0) - 変更を確認し、テストしてからマージします
  • メジャー更新(1.0.0 -> 2.0.0) - 移行を計画し、十分にテストします

Dependabotの設定とCIのセキュリティチェック用スクリプトについては、examples/dependency-security.mdを参照してください。


パターン 3:XSS の防止

最新の UI フレームワークは、デフォルトでユーザー入力を自動エスケープします。DOMPurify でサニタイズしない限り、生の HTML を挿入してこの保護を回避してはいけません。不正なスクリプトをブロックするように、Content Security Policy(CSP)ヘッダーを設定してください。

フレームワークによる自動エスケープ

ほとんどのフレームワークでは、テキストコンテンツが自動的にエスケープされます。明示的な HTML 挿入 API(例:dangerouslySetInnerHTML、v-html、{@html})のみがこの保護を回避します。

DOMPurify によるサニタイズ

HTML のレンダリングが必要な場合は、許可するタグと属性のホワイトリストを指定して DOMPurify を使用してください。

Content Security Policy

XSS が発生した場合でも不正なスクリプトの実行を防ぐため、CSP ヘッダーを設定してください。

DOMPurify と CSP のコード例については、examples/xss-prevention.md を参照してください。


OWASP Top 10:2025 の対象範囲

このスキルは、以下の OWASP Top 10:2025 のカテゴリに対応しています。

OWASP カテゴリ対応内容
A01: アクセス制御の不備CODEOWNERS、ブランチ保護、レート制限
A02: セキュリティ設定のミスCSP ヘッダー、セキュリティヘッダー、Dependabot
A03: ソフトウェアサプライチェーンの障害Dependabot、CI セキュリティ監査、依存関係のレビュー
A04: 暗号化の失敗HttpOnly/Secure Cookie、HTTPS の強制
A05: インジェクションDOMPurify、フレームワークによる自動エスケープ、CSP
A07: 認証の失敗HttpOnly Cookie、セッション管理
A10: 例外的な状況の不適切な処理フェイルセキュアの原則、エラー処理

多層防御のレイヤー:

  • シークレット:.env.local(開発) -> CI シークレット -> 環境変数(本番環境)
  • XSS:フレームワークによる自動エスケープ -> DOMPurify によるサニタイズ -> CSP ヘッダー
  • CSRF:トークン -> SameSite Cookie -> サーバー側での検証
  • 依存関係:自動スキャン -> CI セキュリティ監査 -> 手動レビュー

<red_flags>

危険信号

優先度の高い問題:

  • シークレットをリポジトリにコミットしている(.env ファイル、コード内の API キー)
  • サニタイズされていないユーザー入力で生の HTML を挿入している(XSS 攻撃を可能にします)
  • 認証トークンを localStorage/sessionStorage に保存している(XSS からアクセスできます)
  • 状態を変更する操作に CSRF 対策がない(偽造リクエストを許してしまいます)
  • 重大または高深刻度の脆弱性にパッチが適用されていない(悪用可能な状態が続いています)

優先度が中程度の問題:

  • Dependabot の設定がない(脆弱性の検出が手動のみです)
  • セキュリティ上重要なファイルに CODEOWNERS がない(自動レビューがありません)
  • CSP ヘッダーが設定されていない(スクリプト実行の制御がありません)
  • チームではなく個人を CODEOWNERS に指定している(単一障害点になります)
  • クライアント側の検証のみを信頼している(簡単に回避できます)
  • 内部エラーの詳細をユーザーに公開している(情報漏えいにつながります)

注意点とエッジケース:

  • .env.local は一部のフレームワークではデフォルトで gitignore されていますが、すべてではありません。.gitignore を確認してください
  • DOMPurify のデフォルト設定では <style> タグと <form> タグが許可されます。明示的なホワイトリストを使用してください
  • SameSite=Strict は正当なクロスサイトリクエストをブロックします。一般的なセッション Cookie には Lax を使用してください
  • CSP の nonce はリクエストごとに一意である必要があります。サーバー側で新しい nonce を生成してください
  • X-XSS-Protection ヘッダーは非推奨です。「0」に設定するか省略し、代わりに CSP を使用してください

よくある間違い、コード例付きのアンチパターン、判断のためのフレームワークについては、reference.md を参照してください。

</red_flags>


<critical_reminders>

重要な注意事項

すべてのコードは、CLAUDE.md のプロジェクト規約に従う必要があります。

(リポジトリにシークレットを絶対にコミットしないでください。必ず .env.local と CI のシークレットのみを使用してください)

(生の HTML をレンダリングする前に、ユーザー入力をすべてサニタイズする必要があります。HTML を挿入する前に必ず DOMPurify を使用してください)

(重大度が Critical または High の脆弱性は、必ず 24 時間以内に修正してください。自動スキャンには Dependabot を使用してください)

(認証トークンには必ず HttpOnly Cookie を使用してください。localStorage または sessionStorage は絶対に使用しないでください)

(セキュリティ上重要なファイルには必ず CODEOWNERS を設定し、セキュリティチームの承認を必須にしてください)

これらのルールに従わないと、XSS 攻撃、トークンの窃取、CSRF 攻撃、データ漏えいにつながるセキュリティ脆弱性が発生します。

</critical_reminders>

コメント