security-review-process について
security-review-processは、コード変更時のセキュリティリスクを監査し、対策を検証するコーディングスキルです。入力処理、インジェクション、シークレットとログ、依存関係の脆弱性を扱います。
主な機能
- 01信頼できない入力を監査し許可リスト化
- 02SQLとシェルのインジェクションを確認
- 03コードやログへのシークレット混入を防止
- 04bundle-auditで依存関係をスキャン
- 05問題を提示して対策を検証
活用シーン
- 01APIやWebhookの入力処理をレビュー
- 02データベースやコマンド実行経路を確認
- 03ログや設定からのシークレット漏えいを点検
- 04変更確定前に依存関係の脆弱性を評価
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ igmarin/ ruby-core-skills --skill security-review-processインストール後、Claude Code で/security-review-processを入力して読み込まれたか確認します。
詳細
セキュリティレビューのプロセス
この手順の前に、実行契約を適用してください。
セキュリティゲートとクイックリファレンス
| 領域 | ゲート |
|---|---|
| 入力検証 | 信頼できないペイロードは、処理の前に許可リストフィルターを通過する必要があります |
| シークレット | シークレットをコミットまたはログに記録してはなりません |
| インジェクション | SQL への直接的な補間(#{id})は禁止されています |
| 依存関係 | 変更を確定する前に bundle-audit を実行してください |
プロセスの手順
ステップ 1:入力検証の監査
- すべてのエントリーポイント(コントローラー、API エンドポイント、Webhook、コンソールランナー)を特定します。
- すべてのパラメーターが明示的に許可リストに含まれ、必要に応じて型変換されていることを確認します。
- JSON ペイロード内の指示のようなキー(例:
prompt、instructions)が破棄または無害化されることを確認します。
ステップ 2:インジェクションの確認
- すべてのデータベース操作を監査します:
- 文字列補間(
#{})によって生の SQL 文字列が構築されていないことを確認します。 - データベースクライアントのクエリパラメーター化機能が使用されていることを確認します。
- 文字列補間(
- ファイルおよびコマンドの実行を監査します:
- バッククォート、
system()、またはexec()による動的なシェルコマンドは避けてください。必要な場合は、引数を個別の配列要素として渡します。
- バッククォート、
ステップ 3:シークレットとログの確認
- 設定は環境変数(
ENV['SECRET'])または安全な設定ボールトから読み込み、生のリテラル値は使用しないでください。 - 機密データ(パスワード、トークン、個人識別情報)がログ出力からフィルタリングまたはマスキングされていることを確認します。
ステップ 4:依存関係と CVE の確認
- プロジェクトの依存関係をスキャンします:
bundle exec bundle-audit check --update - 脆弱性が報告された場合は、安全なバージョンへのアップグレードを計画します。
チェックポイントのパターン
ユーザーと認識を合わせます:
- セキュリティ脆弱性の評価: 懸念事項を脅威ベクトル(例:SQL インジェクション、シークレットの漏えい)ごとに分類して提示します。
- 緩和策の検証: 修正後、パラメーター化クエリまたはフィルターによってエクスプロイトのベクトルがどのように阻止されるかを示します。
コードによる防御の例
1. SQL インジェクションの防止
脆弱な例:
db.execute("SELECT * FROM users WHERE name = '#{params[:name]}'")
安全な例:
db.execute("SELECT * FROM users WHERE name = ?", params[:name])
2. シェルインジェクションの防止
脆弱な例:
system("rm -rf #{params[:path]}")
安全な例:
system("rm", "-rf", params[:path])
統合
| コンテキスト | 次のスキル |
|---|---|
| 標準的なコードレビュー | review-process |
| 一般的な TDD のサイクル | tdd-process |
コメント
Markdown 対応