mcpField
G
gemini-cli-security

gemini-cli-security

github.com/oimiragieoセキュリティ4448 回インストール17 週間前に更新
リポジトリ

gemini-cli-security について

Gemini CLI Security Extensionを基にした、コードと依存関係を検査するClaude Code向けスキルです。一般的な脆弱性に加え、LLM固有のリスクも検出し、CI向けの形式で結果を出力できます。

主な機能

  1. 01コード脆弱性の分析
  2. 02OSV.devによる依存関係スキャン
  3. 03シークレットとインジェクションの検出
  4. 04認証とデータ処理の検査
  5. 05LLM安全性リスクの検出
  6. 06Markdown・JSONレポート

活用シーン

  1. 01プルリクエストのマージ前にコードを確認
  2. 02既知のCVEについて依存関係を監査
  3. 03LLMアプリのプロンプトインジェクションリスクを確認
  4. 04CI/CDパイプラインにセキュリティ検査を追加

MCP 対応

元の拡張機能は2種類のMCPサーバーパターンを使いますが、このスキルはWebFetch、Grep、BashなどのClaude Codeネイティブツールで置き換えています。

インストール

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

$npx skills add https://github.com/oimiragieo/agent-studio --skill gemini-cli-security

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

commands/
gemini-cli-security.md
hooks/
post-execute.cjs
pre-execute.cjs
references/
research-requirements.md
rules/
gemini-cli-security.md
schemas/
input.schema.json
output.schema.json
scripts/
main.cjs
templates/
implementation-template.md

詳細

Gemini CLI セキュリティスキル

Gemini CLI Security Extension(github.com/gemini-cli-extensions/security)を基にした、AI を活用したセキュリティ分析スキルです。TypeScript/JavaScript の CVE データセットにおいて、適合率 90%、再現率 93%で、コードと依存関係の脆弱性を検出します。 - コードの脆弱性分析(/security:analyze パターン) - OSV.dev による依存関係のスキャン(/security:scan-deps パターン) - ハードコードされた認証情報とシークレットの検出 - インジェクション攻撃の検出(XSS、SQL、コマンド、SSRF、テンプレート) - 弱い暗号化と安全でないデシリアライズの検出 - 認証およびセッション管理の不備の検出 - LLM 固有のリスク:プロンプトインジェクション、安全でない出力処理 - CI/CD パイプライン統合向けの JSON 出力形式 - PR を自動分析するための GitHub Actions 統合パターン

概要

このスキルは、Gemini CLI Security Extension の分析手法を agent-studio フレームワーク向けに応用したものです。元の拡張機能は、セキュリティ分析サーバーと OSV-Scanner 統合という 2 つの MCP サーバーパターンを使用して、2 つのベクトルをカバーします。このスキルでは、Claude Code のネイティブツール(OSV.dev API 用の WebFetch、静的分析パターン用の Grep/Bash)を使って、同等の分析を実行します。

ソースリポジトリ:https://github.com/gemini-cli-extensions/security ライセンス:Apache 2.0 性能:適合率 90%、再現率 93%(OpenSSF CVE ベンチマーク、TypeScript/JavaScript)

使用するタイミング

  • プルリクエストをマージする前に、持ち込まれた脆弱性を検出する場合
  • 新しいコード変更のセキュリティレビューを行う場合
  • 既知の CVE データベースに照らして依存関係を監査する場合
  • プロンプトインジェクション防御のレビューが必要な、LLM 統合アプリケーションの場合
  • CI/CD パイプラインのセキュリティゲートの一部として使用する場合

絶対原則

NO PRODUCTION CODE WITHOUT SECURITY ANALYSIS FOR AUTH/SECRETS/EXTERNAL-INPUT HANDLERS

認証、ハードコードされた値、外部入力、または AI モデルの出力を扱うすべてのコードパスは、本番環境へのデプロイ前に必ず分析する必要があります。

脆弱性の対象範囲

カテゴリ 1:シークレット管理
パターン検出方法
ハードコードされた API キーGrep によるキーのパターン検索+エントロピー分析
ハードコードされたパスワード認証情報キーワードの検出
ソース内の秘密鍵PEM ブロック/base64 キーの検出
暗号化キー対称鍵の定数パターン
カテゴリ 2:インジェクション攻撃
攻撃の種類例
SQL インジェクションクエリ内での文字列連結
XSSHTML/JS 出力に含まれる、エスケープされていないユーザーコンテンツ
コマンドインジェクションユーザーが制御する引数を用いたシェル実行
SSRFサーバーリクエストでの、ユーザーが制御する URL
テンプレートインジェクションテンプレートエンジンへの未サニタイズのユーザー入力
カテゴリ 3:認証の不備
不備検出方法
セッションの回避認証ミドルウェアの欠如
弱いトークン予測可能なトークン生成
安全でないパスワードリセットトークンを使用しない、またはメールのみでのリセット
MFA 強制の欠如2FA チェックのない認証フロー
カテゴリ 4:データの取り扱い
問題検出方法
弱い暗号化シークレットへの MD5/SHA1 の使用、DES/RC4 の使用
ログ内の機密データログ出力文に含まれる PII/認証情報のパターン
PII の不適切な取り扱い暗号化されていない PII の保存または送信
安全でないデシリアライズ安全でない pickle/eval/deserialize 呼び出し
カテゴリー 5:LLM の安全性(新規)
リスク検出
プロンプトインジェクションサニタイズされていないユーザーコンテンツが LLM のプロンプトに挿入される
安全でない出力処理検証されていない LLM の出力が exec/eval/shell で使用される
安全でないツール連携チェックされていない LLM 提供のパラメーターを使ったツール呼び出し

使用方法

呼び出し
// From an agent
Skill({ skill: 'gemini-cli-security' });

// With arguments via Bash integration
Skill({ skill: 'gemini-cli-security', args: 'src/ --scan-deps' });
ワークフローの実行
# Analyze code in a directory
node .claude/skills/gemini-cli-security/scripts/main.cjs --target src/

# Scan dependencies for CVEs
node .claude/skills/gemini-cli-security/scripts/main.cjs --scan-deps

# JSON output for CI integration
node .claude/skills/gemini-cli-security/scripts/main.cjs --target . --json

# Scoped analysis with natural language
node .claude/skills/gemini-cli-security/scripts/main.cjs --target src/auth/ --scope "focus on token handling and session management"
出力形式

デフォルト出力(Markdown レポート):

## Security Analysis Report

### CRITICAL

- [AUTH-001] Hardcoded API key found in src/config.ts:42
  Pattern: `const API_KEY = "sk-..."`
  Remediation: Move to environment variable

### HIGH

- [INJ-002] SQL injection risk in src/db/users.ts:87
  Pattern: String concatenation in query builder
  Remediation: Use parameterized queries

### Dependencies

- [email protected] → CVE-2021-23337 (HIGH) - Prototype pollution
  Fix: Upgrade to [email protected]+

JSON 出力(--json フラグ):

{
  "findings": [
    {
      "id": "AUTH-001",
      "severity": "CRITICAL",
      "category": "secrets",
      "file": "src/config.ts",
      "line": 42,
      "description": "Hardcoded API key",
      "remediation": "Move to environment variable"
    }
  ],
  "dependencies": [
    {
      "package": "lodash",
      "version": "4.17.15",
      "cve": "CVE-2021-23337",
      "severity": "HIGH",
      "fix": "4.17.21"
    }
  ],
  "summary": {
    "critical": 1,
    "high": 2,
    "medium": 3,
    "low": 0,
    "precision": 0.9,
    "recall": 0.93
  }
}

OSV.dev による依存関係スキャン

このスキルは OSV.dev API(認証不要)と連携して、依存関係をチェックします。

// OSV.dev batch query endpoint
WebFetch({
  url: 'https://api.osv.dev/v1/querybatch',
  prompt: 'Extract vulnerability IDs, severity, and affected versions for these packages',
});

対応エコシステム:npm、PyPI、RubyGems、Maven、Go、Cargo、NuGet、Packagist

GitHub Actions との連携

元の拡張機能は、GitHub Actions を介して PR 分析をサポートしています。このスキルには、同等のワークフローテンプレートが含まれています。

# .github/workflows/security.yml
name: Security Analysis
on: [pull_request]
jobs:
  security:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run security analysis
        run: node .claude/skills/gemini-cli-security/scripts/main.cjs --target . --json

実装に関する注意事項

MCP サーバーではなくネイティブツールを使用する理由: 元の拡張機能は 2 つの MCP サーバー(セキュリティ分析サーバーと OSV-Scanner バイナリ)を使用します。このスキルでは、代わりにネイティブの Claude Code ツールを使用します。

  • 依存関係の CVE 検索では、OSV.dev にパブリック REST API があるため、OSV-Scanner の代わりに WebFetch を使用します
  • パターンベースの検出では、セキュリティ分析サーバーの代わりに Grep/Bash を使用します
  • この方法なら、バイナリのインストールやセッションの再起動なしですぐに動作します

ソースからの相違点:元の拡張機能ではコード分析に Gemini AI を使用しますが、このスキルでは拡張機能のベンチマークに記載されているパターンベースの検出手法を使用します。AI 分析コンポーネントは、組み込みの AI 呼び出しではなく、呼び出し元のエージェント(security-architect)が提供できます。

割り当てられたエージェント

エージェント役割
security-architect主担当:包括的なセキュリティ監査
developer支援:コミット前のセキュリティチェック
code-reviewer支援:PR レビューのセキュリティ層

メモリープロトコル(必須)

開始前: .claude/context/memory/learnings.md を読みます

完了後:

  • 新しい脆弱性パターンを発見した場合 -> .claude/context/memory/learnings.md
  • スキャンに関する問題があった場合 -> .claude/context/memory/issues.md
  • 対象範囲に関する決定をした場合 -> .claude/context/memory/decisions.md

中断を想定してください。メモリーに記録されていないことは、起きていないことと同じです。

コメント