elixir-security-review について
Elixirコード向けのセキュリティレビュー技能です。重大度別の確認項目を示し、文脈に応じた判断と、指摘前のコード位置・根拠の検証を求めます。
主な機能
- 01コードインジェクションと安全でないtermの確認
- 02Atom枯渇リスクの確認
- 03シークレットと設定の確認
- 04ETSとプロセスデータの確認
- 05文脈に応じたレビュー手順
活用シーン
- 01マージ前のElixirコードレビュー
- 02外部入力の処理確認
- 03シークレットと実行時設定の監査
- 04ソースの文脈に基づく指摘の検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ existential-birds/ beagle --skill elixir-security-reviewインストール後、Claude Code で/elixir-security-reviewを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/atom-exhaustion.mdcode-injection.mdprocess-exposure.md詳細
Elixir セキュリティレビュー
クイックリファレンス
| 問題の種類 | 参照先 |
|---|---|
| Code.eval_string, binary_to_term | references/code-injection.md |
| String.to_atom の危険性 | references/atom-exhaustion.md |
| Config、環境変数 | references/secrets.md |
| ETS の可視性、プロセス辞書 | references/process-exposure.md |
レビューチェックリスト
重大(マージをブロック)
- ユーザー入力に対して
Code.eval_string/1を使用していない - 信頼できないデータに対して
:safeを指定せずに:erlang.binary_to_term/1を使用していない - 外部入力に対して
String.to_atom/1を使用していない - ソースコードにシークレットをハードコードしていない
重要
- ETS テーブルに適切なアクセス制御を設定している
- プロセス辞書に機密データが含まれていない
- ユーザー入力から動的にモジュールを作成していない
- ファイル操作でパストラバーサルを防止している
設定
- シークレットを環境変数から読み込んでいる
- シークレットを含む config/*.exs を Git にコミットしていない
- デプロイ用シークレットにランタイム設定を使用している
有効なパターン(報告しないでください)
- コンパイル時定数に対する String.to_atom - コンパイル時に作成されるアトムは安全です
- 開発/テスト環境での Code.eval_string - ツールに必要な場合があります
- ETS :public テーブル - 意図的に共有する場合は有効です
- :safe を指定した binary_to_term - 明示的に安全なオプションを使用しています
コンテキスト依存のルール
| 問題 | 次の場合にのみ報告 |
|---|---|
| String.to_atom | 入力が外部ソース(ユーザー、API、ファイル)から来ている |
| binary_to_term | データが信頼できないソースから来ている |
| ETS :public | 機密データが含まれている |
報告前の必須ゲート
報告する各指摘について、順番どおりに完了してください。合格条件を満たすまでは次に進まないでください。
- 位置の根拠 — 指摘に
[FILE:LINE](または行範囲)が含まれており、現在のファイル内容からコピーしたものであること。そのパスがこのリポジトリ内で解決できること。 - 対象範囲の確認 — 指摘対象のコードを含む関数またはモジュールの周辺全体を読み、差分の一部や要約だけに頼っていないこと。
- 外部データの根拠(指摘が「ユーザー/信頼できない入力」に依存する場合のみ) — 具体的な入力経路(例:
conn.params、Jason.decode!/1の結果、アップロードされたファイルパス、別ノードからのメッセージ)を一つ挙げられること。または、コンテキスト依存のルールに従い、その値がコンパイル時、テスト専用、または内部のものである場合は指摘を取り下げること。 - プロトコル — この項目について、review-verification-protocol の報告前の手順を満たしていること(満たしていない場合は指摘しないこと)。
指摘を提出する前に
各指摘には次の形式を使用してください:[FILE:LINE] ISSUE_TITLE。
必須ゲート 4 では review-verification-protocol が必要です。報告前のチェックリスト全体および問題の種類の検証にはこれを使用してください(このスキルの要約に記載された範囲を超えています)。
コメント
Markdown 対応