名称: gemini-cli-security 描述: 使用Gemini CLI安全扩展模式的AI驱动代码漏洞分析和依赖扫描。检测硬编码密钥、注入攻击、弱加密、认证缺陷和LLM提示注入。同时扫描依赖项以对抗OSV.dev漏洞数据库。 版本: 1.0.0 模型: sonnet 调用方式: 两者 用户可调用: 是 工具: [Read, Write, Bash, WebFetch, Glob, Grep] 参数: ‘[target-path] [–scan-deps] [–json] [–scope <natural-language-scope>]’ 最佳实践:
- 在拉取请求中分析代码更改以早期捕获漏洞
- 始终通过OSV.dev集成检查依赖项的CVE
- 为自动化管道生成结构化JSON输出
- 标记LLM特定风险(提示注入、不安全输出处理)
- 在评估覆盖范围时报告精度和召回率基准 错误处理: 优雅 流支持: 是 已验证: 否 最后验证时间: 2026-02-19T05:29:09.098Z
Gemini CLI 安全技能
<!-- 代理: 工件集成者 | 任务: #2 | 会话: 2026-02-18 -->
<identity> AI驱动的安全分析技能,基于Gemini CLI安全扩展(github.com/gemini-cli-extensions/security)适配。提供跨代码和依赖的漏洞检测,在TypeScript/JavaScript CVE数据集上达到90%精度和93%召回率。 </identity>
<capabilities>
- 代码漏洞分析(/security:analyze模式)
- OSV.dev依赖扫描(/security:scan-deps模式)
- 硬编码凭证和密钥检测
- 注入攻击检测(XSS、SQL、命令、SSRF、模板)
- 弱加密和不安全反序列化检测
- 认证和会话管理缺陷检测
- LLM特定风险:提示注入、不安全输出处理
- JSON输出格式用于CI/CD管道集成
- GitHub Actions集成模式用于自动化PR分析 </capabilities>
概述
此技能将Gemini CLI安全扩展的分析方法适配到代理-工作室框架。原始扩展使用两个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管道安全门的一部分
铁律
没有安全分析的认证/密钥/外部输入处理程序的代码不得部署到生产环境
所有处理认证、硬编码值、外部输入或AI模型输出的代码路径必须在生产部署前进行分析。
漏洞覆盖
类别1:密钥管理
| 模式 | 检测方法 |
|---|---|
| 硬编码API密钥 | 基于密钥模式的Grep和熵分析 |
| 硬编码密码 | 凭证关键词检测 |
| 源代码中的私钥 | PEM块/base64密钥检测 |
| 加密密钥 | 对称密钥常量模式 |
类别2:注入攻击
| 攻击类型 | 示例 |
|---|---|
| SQL注入 | 查询中的字符串拼接 |
| XSS | HTML/JS输出中未转义的用户内容 |
| 命令注入 | 用户控制参数的Shell执行 |
| SSRF | 服务器请求中用户控制的URL |
| 模板注入 | 模板引擎中未消毒的用户输入 |
类别3:认证缺陷
| 缺陷 | 检测 |
|---|---|
| 会话绕过 | 缺少认证中间件 |
| 弱令牌 | 可预测令牌生成 |
| 不安全密码重置 | 无令牌或仅电子邮件重置 |
| 缺少MFA强制执行 | 无2FA检查的认证流程 |
类别4:数据处理
| 问题 | 检测 |
|---|---|
| 弱加密 | 使用MD5/SHA1处理密钥;DES/RC4使用 |
| 日志中的敏感数据 | 日志语句中的PII/凭证模式 |
| PII违规 | 未加密的PII存储或传输 |
| 不安全反序列化 | 不安全的pickle/eval/反序列化调用 |
类别5:LLM安全(新颖)
| 风险 | 检测 |
|---|---|
| 提示注入 | 未经消毒将用户内容注入LLM提示 |
| 不安全输出处理 | LLM输出未经验证用于exec/eval/shell |
| 不安全工具集成 | 工具调用中LLM提供参数未检查 |
使用
调用
// 来自代理
Skill({ skill: 'gemini-cli-security' });
// 通过Bash集成带参数
Skill({ skill: 'gemini-cli-security', args: 'src/ --scan-deps' });
工作流执行
# 分析目录中的代码
node .claude/skills/gemini-cli-security/scripts/main.cjs --target src/
# 扫描依赖的CVE
node .claude/skills/gemini-cli-security/scripts/main.cjs --scan-deps
# 用于CI集成的JSON输出
node .claude/skills/gemini-cli-security/scripts/main.cjs --target . --json
# 自然语言范围分析
node .claude/skills/gemini-cli-security/scripts/main.cjs --target src/auth/ --scope "专注于令牌处理和会话管理"
输出格式
默认输出(markdown报告):
## 安全分析报告
### 关键
- [AUTH-001] 在src/config.ts:42发现硬编码API密钥
模式: `const API_KEY = "sk-..."`
修复: 移动到环境变量
### 高
- [INJ-002] src/db/users.ts:87的SQL注入风险
模式: 查询构建器中的字符串拼接
修复: 使用参数化查询
### 依赖
- lodash@4.17.15 → CVE-2021-23337(高) - 原型污染
修复: 升级到lodash@4.17.21+
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批量查询端点
WebFetch({
url: 'https://api.osv.dev/v1/querybatch',
prompt: '提取这些包的漏洞ID、严重性和受影响版本',
});
支持的生态系统: npm, PyPI, RubyGems, Maven, Go, Cargo, NuGet, Packagist
GitHub Actions集成
原始扩展通过GitHub Actions支持PR分析。此技能包含等效的工作流模板:
# .github/workflows/security.yml
name: 安全分析
on: [pull_request]
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: 运行安全分析
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分析组件可由调用代理(security-architect)提供,而非嵌入式AI调用。
分配的代理
| 代理 | 角色 |
|---|---|
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
假设中断:如果不在内存中,则未发生。