Documentation Index
Fetch the complete documentation index at: https://docs.kodus.io/llms.txt
Use this file to discover all available pages before exploring further.
セキュリティに焦点を当てたパイプラインが必要な理由
一般的なコードレビューはスタイルやバグを検出します。しかし、セキュリティの脆弱性(SQLインジェクション、ハードコードされたシークレット、安全でない認証パターン)には、結果を重大なブロッカーとして扱う専用のルールが必要です。
このクックブックは、既存のレビューの上にセキュリティファーストのレイヤーを設定します。
ステップ1 — セキュリティ分析を有効にする
セキュリティ分析が有効になっていることを確認します:
reviewOptions:
security: true
これによりKodusの組み込みセキュリティチェックが使用できます。以下のルールは、その上にチームの固有のセキュリティポリシーを追加します。
ステップ2 — OWASPに焦点を当てたルールを作成する
SQLインジェクション防止
Name: 生のSQLクエリは禁止
Scope: File
Paths: **/*.ts, **/*.js, **/*.py
Severity: Critical
Instructions:
SQLクエリを構築するために文字列連結またはテンプレートリテラルを
使用している箇所にフラグを立てる。以下のパターンを探す:
- `query("SELECT ... " + variable)`
- `query(\`SELECT ... ${variable}\`)`
- `execute(f"SELECT ... {variable}")`
パラメータ化クエリまたはORMを使用する必要がある。
ハードコードされたシークレットの検出
Name: ハードコードされたシークレットまたは認証情報は禁止
Scope: File
Paths: **/*
Severity: Critical
Instructions:
fileDiffでAPIキー、パスワード、トークン、またはシークレットのような
文字列にフラグを立てる。検出するパターン:
- 文字列リテラルに割り当てられた *_KEY、*_SECRET、*_TOKEN、*_PASSWORD
という名前の変数
- "sk_live_"、"ghp_"、"AKIA"、"Bearer " に続く長い文字列
のパターンに一致する文字列
- パスワードが埋め込まれた接続文字列
シークレットは環境変数またはボールトから取得する必要がある。
認証バイパス
Name: 認証ミドルウェアをスキップしてはならない
Scope: Pull Request
Severity: Critical
Instructions:
pr_files_diffで認証ミドルウェアなしでユーザーデータを
処理するルートまたはコントローラーを確認する。以下を探す:
- @UseGuards、@Authenticated、または同等のデコレータが
ない新しいルート
- skipAuth: true のようなミドルウェアバイパスパターン
- ユーザー固有データにアクセスするパブリックエンドポイント
承認された認証パターンについては
@file:src/shared/auth/guards/ を参照する。
XSS防止
Name: サニタイズなしのdangerouslySetInnerHTMLは禁止
Scope: File
Paths: **/*.tsx, **/*.jsx
Severity: Critical
Instructions:
fileDiffでdangerouslySetInnerHTMLの使用にフラグを立てる。
使用する場合は、入力がDOMPurifyまたは同等のライブラリで
サニタイズされていることを確認する。サニタイズされていない
HTMLインジェクションは重大なXSS脆弱性である。
ステップ3 — セキュリティのMemoriesを教える
どこでも適用される永続的な規約を作成します:
@kody remember: すべてのユーザー入力は使用前に検証および
サニタイズする必要がある。クライアントサイドのデータは決して信頼しない。
@kody remember: 機密データを扱うすべてのAPIエンドポイントは
HTTPSのみを使用し、レート制限を含める必要がある。
@kody remember: エラーメッセージはスタックトレース、内部パス、
またはデータベースの詳細をクライアントに公開してはならない。
ステップ4 — ゼロトレランスを設定する
セキュリティルールでは、重大な結果をブロックする設定が必要です:
- PRワークフロー設定で 変更をリクエスト を有効にして、重大な問題が見つかったときにKodyが変更をリクエストするようにする
- セキュリティルールを 重大 重要度に設定して、重要度フィルターの上に常に表示されるようにする
maxSuggestions を低い値に設定しない — セキュリティの結果は抑制されるべきではない
ステップ5 — 依存関係監査ルールを追加する(オプション)
MCPプラグインを使用している場合は、依存関係を確認できます:
Name: 既知の脆弱性のある依存関係は禁止
Scope: Pull Request
Severity: Critical
Instructions:
pr_files_diffがpackage.json、requirements.txt、または
その他の依存関係ファイルを変更した場合、@MCPを使用して
追加または更新されたパッケージの既知の脆弱性を確認する。
既知の重大なCVEを持つ依存関係にフラグを立てる。
チェックリスト
ルールの設定の詳細については、Kodyルール を参照してください。