关于 gemini-cli-security
面向 Claude Code 的代码与依赖安全审查 Skill,改编自 Gemini CLI Security Extension。它检测常见漏洞及 LLM 特有风险,并可生成适用于 CI 流水线的结果。
主要功能
- 01代码漏洞分析
- 02OSV.dev 依赖扫描
- 03密钥与注入攻击检测
- 04身份验证和数据处理检查
- 05LLM 安全风险检测
- 06Markdown 和 JSON 报告
适用场景
- 01合并拉取请求前审查代码
- 02审计依赖中的已知 CVE
- 03检查 LLM 应用的提示词注入风险
- 04在 CI/CD 流水线中加入安全检查
MCP 相关
源扩展采用两种 MCP 服务模式;此 Skill 改用 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.mdhooks/post-execute.cjspre-execute.cjsreferences/research-requirements.mdrules/gemini-cli-security.mdschemas/input.schema.jsonoutput.schema.jsonscripts/main.cjstemplates/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 特定风险:提示词注入、不安全的输出处理 - JSON 输出格式,便于集成到 CI/CD 管道 - 用于自动化 PR 分析的 GitHub Actions 集成模式概览
此技能将 Gemini CLI Security Extension 的分析方法改编为适用于 agent-studio 框架的形式。原扩展使用两种 MCP 服务模式——安全分析服务和 OSV-Scanner 集成——提供双重覆盖。此技能使用 Claude Code 原生工具(通过 WebFetch 调用 OSV.dev API,使用 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 密钥 | 搜索密钥模式 + 熵分析 |
| 硬编码密码 | 凭据关键词检测 |
| 源代码中的私钥 | PEM 块 / base64 密钥检测 |
| 加密密钥 | 对称密钥常量模式 |
类别 2:注入攻击
| 攻击类型 | 示例 |
|---|---|
| SQL 注入 | 查询中使用字符串拼接 |
| XSS | HTML/JS 输出中未经转义的用户内容 |
| 命令注入 | 使用用户可控参数执行 Shell 命令 |
| SSRF | 服务器请求中使用用户可控 URL |
| 模板注入 | 模板引擎中未经清理的用户输入 |
类别 3:身份验证缺陷
| 缺陷 | 检测方法 |
|---|---|
| 绕过会话验证 | 缺少身份验证中间件 |
| 弱令牌 | 可预测的令牌生成 |
| 不安全的密码重置 | 无令牌或仅通过电子邮件重置 |
| 未强制执行 MFA | 身份验证流程中未检查 2FA |
类别 4:数据处理
| 问题 | 检测方法 |
|---|---|
| 弱加密 | 使用 MD5/SHA1 处理密钥;使用 DES/RC4 |
| 日志中的敏感数据 | 日志语句中出现 PII/凭据模式 |
| PII 违规 | 未加密存储或传输 PII |
| 不安全的反序列化 | 调用不安全的 pickle/eval/deserialize |
类别 5:大模型安全(新颖)
| 风险 | 检测 |
|---|---|
| 提示词注入 | 未经清理的用户内容被注入大模型提示词 |
| 不安全的输出处理 | 大模型输出未经验证便用于 exec/eval/shell |
| 不安全的工具集成 | 使用未经检查的大模型提供的参数调用工具 |
用法
调用
// 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 服务: 原始扩展使用两个 MCP 服务(安全分析服务 + OSV-Scanner 二进制文件)。此技能改用原生 Claude Code 工具:
- WebFetch 替代 OSV-Scanner,用于查询依赖项 CVE(OSV.dev 提供公开的 REST API)
- Grep/Bash 替代安全分析服务,用于基于模式的检测
- 这种方法无需安装二进制文件或重启会话即可立即使用
与源版本的差异:原始版本使用 Gemini AI 分析代码;此技能采用扩展基准测试文档中说明的基于模式的检测方法。AI 分析组件可由发起调用的 Agent(security-architect)提供,无需嵌入 AI 调用。
指定的 Agent
| Agent | 角色 |
|---|---|
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
假定任务可能中断:如果没有记录在记忆中,就代表它没有发生。