mcpField
R
rails-security-review

rails-security-review

github.com/midudevセキュリティ7.0k57 回インストール1 週間前に更新
リポジトリ

rails-security-review について

Rails コードのセキュリティレビューや強化を行う開発者向けのスキルです。悪用可能な問題を優先し、認証・認可の指摘をレポートの先頭に置くほか、入力、出力、クエリ、シークレットのリスクを確認します。

主な機能

  1. 01認証・認可を先に記載するレポート順
  2. 02パラメーターとクエリの安全性確認
  3. 03リダイレクトと出力エンコードのレビュー
  4. 04ファイル、ネットワーク、シークレットの確認
  5. 05深刻度、攻撃経路、対策の形式

活用シーン

  1. 01Rails コードのセキュリティ問題のレビュー
  2. 02認可とパラメーター処理の強化
  3. 03具体的な攻撃経路を含む指摘の作成

インストール

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

$npx skills add https://github.com/midudev/autoskills --skill rails-security-review

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

同梱ファイルPITFALLS.md

詳細

Rails のセキュリティレビュー

Rails コードをセキュリティの観点からレビューまたは強化する場合に、このスキルを使用します。

基本原則: スタイルよりも悪用可能な問題を優先します。信頼できない入力は悪用される可能性があるものとして扱います。

HARD-GATE:認可に関する指摘をレポートの先頭に記載する

BEFORE returning your security review, verify:
  1. The FIRST finding section in your output is "Authentication & Authorization"
  2. SQL injection, XSS, or other findings come AFTER auth/authz — even if
     they feel more severe or were discovered first
  3. If no auth/authz issue exists, the report still opens with an explicit
     "Authentication & Authorization: no issues found" line BEFORE any other
     finding category

クイックリファレンス

領域主な確認事項
認証すべての機密性の高い操作に対する権限
パラメーターpermit! を使わず、安全な属性のみを許可リストに登録する
クエリパラメーター化する — SQL に文字列補間を使わない
リダイレクト相対パスまたは許可リストに制限する
出力ユーザーコンテンツに html_safe/raw を使わない
シークレット暗号化された認証情報を使用し、コードやログには決して含めない
ファイルファイル名、コンテンツタイプ、保存先を検証する

レビューの順序

  1. 認証と認可の境界を確認します。
  2. パラメーターの処理と機密属性の割り当てを確認します。
  3. リダイレクト、レンダリング、出力エンコーディングを確認します。
  4. ファイル処理、ネットワーク呼び出し、バックグラウンドジョブの入力を確認します。
  5. シークレット、ログ記録、運用上の露出を確認します。
  6. 各指摘を検証します: 報告する前に、具体的な攻撃シナリオで悪用可能であることを確認します。誤検知(例:ユーザー入力ではなく、開発者が定義した定数に対する html_safe)は除外します。

深刻度

高
  • 認可チェックが欠けている、または回避可能
  • SQL、シェル、YAML、定数化のインジェクション経路
  • 安全でないリダイレクト、または SSRF を引き起こす可能性のある外部リクエスト
  • ファイル名、コンテンツタイプ、保存先を無条件に信頼するファイルアップロード処理
  • コード、ログ、安全でない設定に保存されたシークレットやトークン
中
  • 弱いパラメーターのフィルタリングによる、スコープ制限のない一括代入
  • 明確なサニタイズを行わずにレンダリングされる、ユーザー制御の HTML
  • 平文でログに記録される機密データ
  • ガードレールなしでコールバックやバックグラウンドジョブに隠された、セキュリティ上重要な動作
  • フレームワークのプリミティブを使う方が安全な、脆弱な独自認証ロジック

レビューチェックリスト

  • すべての機密性の高い操作で権限が適用されていますか?
  • 信頼できない入力は、データベース、ファイルシステム、ネットワークで使用する前に検証されていますか?
  • リダイレクトと URL は制限されていますか?
  • シークレットは安全に保存、記録されていますか?
  • セキュリティ上の前提は明示され、テスト可能ですか?

例

深刻度:高(スコープ制限のないリダイレクト):

# Bad: user-controlled redirect — open redirect / phishing risk
redirect_to params[:return_to]

# Good: relative path only
redirect_to root_path
# Good: allowlist
SAFE_PATHS = %w[/dashboard /settings].freeze
redirect_to(SAFE_PATHS.include?(params[:return_to]) ? params[:return_to] : root_path)

深刻度:中(一括代入):

# Bad: privilege escalation risk
params.require(:user).permit!

# Good: explicit whitelist — never include role, admin, or privilege fields
params.require(:user).permit(:name, :email)

注意点

全リストは PITFALLS.md を参照してください。重大なアンチパターン:あらゆるパラメーターセットへの permit! の使用、ユーザーコンテンツへの html_safe の使用、SQL の文字列補間、コミット済みファイルへのシークレットの記載。

出力スタイル

HARD-GATE に従ったセクション順にします。内容がない場合もすべての見出しを記載し、「問題は見つかりませんでした。」と書きます。

## Authentication & Authorization
## Parameter Handling & Mass Assignment
## Query Safety (SQL / NoSQL / shell injection)
## Output Encoding & Redirects
## Secrets, Logging & Operational Exposure

各指摘には次の内容を含めます:

  • 深刻度: 高 または 中(「重大」ではありません)
  • 攻撃経路: 入力 → 到達先 → 影響
  • 影響を受けるファイル: パス + 行番号。例:app/controllers/documents_controller.rb:42
  • 緩和策: 妥当な範囲で最小限の修正

連携

スキル連携するタイミング
rails-code-reviewセキュリティ以外の懸念も含む、コード全体のレビューを行う場合
rails-architecture-reviewセキュリティ上の問題がアーキテクチャの問題に起因する場合
rails-migration-safetyマイグレーションのセキュリティ(データ露出、制約)をレビューする場合

コメント