code-security について
コードの作成とレビュー向けのセキュリティガイドスキルです。15以上の言語、OWASP Top 10、インフラセキュリティ、28のルールカテゴリを扱い、言語とコードの用途に応じた確認を促します。
主な機能
- 0115以上の言語に対応
- 0228カテゴリのセキュリティルール
- 03言語とコードの用途に応じたルール選択
- 04脆弱なコードと安全なコードの例
活用シーン
- 01コード作成時の脆弱性確認
- 02コードレビューでの問題特定
- 03Terraform、Kubernetes、Docker設定の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ semgrep/ skills --skill code-securityインストール後、Claude Code で/code-securityを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdmetadata.jsonREADME.mdrules/_sections.md_template.mdauthentication-jwt.mdbest-practice.mdcode-injection.mdcommand-injection.mdcorrectness.mdcsrf.mddocker.mdgithub-actions.mdinsecure-crypto.mdinsecure-deserialization.mdinsecure-transport.mdkubernetes.mdmaintainability.mdmemory-safety.mdpath-traversal.mdperformance.mdprototype-pollution.mdrace-condition.mdregex-dos.mdsecrets.mdsql-injection.mdssrf.mdterraform-aws.mdterraform-azure.mdterraform-gcp.md詳細
コードセキュリティガイドライン
15 以上の言語で安全なコードを書くための包括的なセキュリティルールです。OWASP Top 10、インフラストラクチャのセキュリティ、コーディングのベストプラクティスを含む、28 のルールカテゴリーを網羅しています。
このスキルの使い方
プロアクティブモード — コードの作成やレビュー時に、使用されている言語やパターンに基づいて、関連する脆弱性を自動的に確認します。ユーザーからセキュリティについて質問されるのを待つ必要はありません。
リアクティブモード — ユーザーからセキュリティについて質問された場合は、以下のカテゴリーから該当するルールファイルを探し、詳細な脆弱なコード例と安全なコード例を確認します。
ワークフロー
- 言語とコードの処理内容を特定します(入力を処理するか?DB を照会するか?ファイルを読み込むか?)
- 以下の関連ルールを確認します — まずは影響度が Critical と High のものに重点を置きます
rules/から該当するルールファイルを読み、その言語の詳しいコード例を確認します- 安全なパターンを適用するか、レビューの場合は脆弱なパターンを指摘します
言語別の優先ルール
以下の言語でコードを書く場合は、まずこれらのルールを確認してください。
| 言語 | 優先して確認するルール |
|---|---|
| Python | SQL インジェクション、コマンドインジェクション、パストラバーサル、コードインジェクション、SSRF、安全でない暗号化 |
| JavaScript/TypeScript | XSS、プロトタイプ汚染、コードインジェクション、安全でない通信、CSRF |
| Java | SQL インジェクション、XXE、安全でないデシリアライゼーション、安全でない暗号化、SSRF |
| Go | SQL インジェクション、コマンドインジェクション、パストラバーサル、安全でない通信 |
| C/C++ | メモリー安全性、安全でない関数、コマンドインジェクション、パストラバーサル |
| Ruby | SQL インジェクション、コマンドインジェクション、コードインジェクション、安全でないデシリアライゼーション |
| PHP | SQL インジェクション、XSS、コマンドインジェクション、コードインジェクション、パストラバーサル |
| HCL/YAML | Terraform(AWS/Azure/GCP)、Kubernetes、Docker、GitHub Actions |
カテゴリー
重大な影響
- SQL インジェクション(
rules/sql-injection.md)- パラメーター化クエリを使用し、ユーザー入力を決して連結しないでください - コマンドインジェクション(
rules/command-injection.md)- ユーザー入力を含むシェルコマンドは避け、安全な API を使用してください - XSS(
rules/xss.md)- 出力をエスケープし、フレームワークの保護機能を使用してください - XXE(
rules/xxe.md)- XML パーサーの外部エンティティを無効にしてください - パストラバーサル(
rules/path-traversal.md)- ファイルパスを検証し、サニタイズしてください - 安全でないデシリアライゼーション(
rules/insecure-deserialization.md)- 信頼できないデータをデシリアライズしないでください - コードインジェクション(
rules/code-injection.md)- ユーザー入力に eval() を決して使用しないでください - ハードコードされたシークレット(
rules/secrets.md)- 環境変数またはシークレットマネージャーを使用してください - メモリー安全性(
rules/memory-safety.md)- バッファーオーバーフローや解放後使用(C/C++)を防いでください
高い影響
- 安全でない暗号化(
rules/insecure-crypto.md)- SHA-256 以上、AES-256 を使用し、MD5/SHA1/DES は避けてください - 安全でない通信(
rules/insecure-transport.md)- HTTPS を使用し、証明書を検証してください - SSRF(
rules/ssrf.md)- URL を検証し、許可リストを使用してください - JWT の問題(
rules/authentication-jwt.md)- 必ず署名を検証してください - CSRF(
rules/csrf.md)- 状態を変更するリクエストには CSRF トークンを使用してください - プロトタイプ汚染(
rules/prototype-pollution.md)- JavaScript のオブジェクトキーを検証してください
インフラストラクチャ
- Terraform AWS/Azure/GCP(
rules/terraform-aws.md、rules/terraform-azure.md、rules/terraform-gcp.md)- 暗号化、最小権限、パブリックアクセスの禁止 - Kubernetes(
rules/kubernetes.md)- 特権コンテナーを使用せず、root 以外のユーザーで実行してください - Docker(
rules/docker.md)- root で実行せず、イメージのバージョンを固定してください - GitHub Actions(
rules/github-actions.md)- スクリプトインジェクションを避け、アクションのバージョンを固定してください
影響度:中/低
- 正規表現 DoS(
rules/regex-dos.md)- 致命的なバックトラッキングを回避します - 競合状態(
rules/race-condition.md)- 適切に同期します - 正確性(
rules/correctness.md)- よくあるロジックのバグを回避します - ベストプラクティス(
rules/best-practice.md)- 一般的なセキュアコーディングのパターン
CWE/OWASP への参照を含む完全なインデックスは、rules/_sections.md を参照してください。
クイックリファレンス
| 脆弱性 | 主な予防策 |
|---|---|
| SQL インジェクション | パラメーター化クエリ |
| XSS | 出力のエンコード |
| コマンドインジェクション | シェルを避け、API を使用 |
| パストラバーサル | パスを検証 |
| SSRF | URL 許可リスト |
| シークレット | 環境変数 |
| 暗号化 | SHA-256、AES-256 |
コメント
Markdown 対応