关于 agent-security-scanning
Agent Security Scanning 是用于审查 AI 生成代码和 Agent 应用的安全技能,结合静态分析、依赖检查与 Agent 威胁建模,并提供严重性、CWE 分类及修复示例。
主要功能
- 01静态分析代码漏洞
- 02扫描依赖中的已知 CVE
- 03Agent 威胁建模
- 04按严重性和 CWE 分类发现
- 05提供代码修复示例
适用场景
- 01部署前审查生成的代码
- 02安装后检查依赖
- 03审计 Agent 工具调用风险
- 04在 CI/CD 中设置安全门禁
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ itallstartedwithaidea/ agent-skills --skill agent-security-scanning安装后在 Claude Code 中输入/agent-security-scanning确认已加载。
详细介绍
Agent 安全扫描
Agent Skills™ 的一部分,由 googleadsagent.ai™ 提供
描述
Agent 安全扫描可在 AI 生成的代码进入生产环境之前检测其中的漏洞。该 Agent 会应用 OWASP Top 10 for LLM Applications,扫描依赖项中的已知 CVE,识别提示词注入向量,并标记 AI Agent 生成代码中特有的不安全模式,例如未经清理的动态 SQL、eval() 的使用以及未经验证的反序列化。
AI 代码生成器生成的代码虽然“能运行”,但经常包含功能测试无法发现的安全漏洞。研究表明,AI 生成的代码比人工编写的代码更容易包含可利用的漏洞,尤其是在输入验证、身份验证和加密操作方面。此技能专门针对 AI Agent 生成代码的模式进行了安全分析校准。
扫描流程涵盖三个层面:生成代码的静态分析(注入、XSS、SSRF)、依赖项漏洞扫描(匹配 CVE 数据库),以及 Agent 专属威胁建模(提示词注入、工具误用、通过工具调用窃取数据)。每项发现都包含严重性评级、CWE 分类,以及附有代码示例的具体修复方案。
适用场景
- 在提交或部署前审查 AI 生成的代码
- 在运行
npm install或pip install后扫描依赖项中的已知 CVE - 审计 Agent 工具调用模式,排查潜在误用
- 在 CI/CD 流水线中实现安全门禁
- 用户请求安全审查、漏洞扫描或渗透测试时
- 构建处理用户输入、身份验证或支付的应用程序
工作原理
graph TD
A[AI-Generated Code] --> B[Layer 1: Static Analysis]
B --> C[Injection: SQL, XSS, SSRF, Command]
B --> D[Auth: Hardcoded Secrets, Weak Crypto]
B --> E[Data: PII Exposure, Logging Secrets]
A --> F[Layer 2: Dependency Scan]
F --> G[CVE Database Match]
F --> H[License Compliance]
A --> I[Layer 3: Agent Threat Model]
I --> J[Prompt Injection Vectors]
I --> K[Tool Call Audit]
I --> L[Data Exfiltration Paths]
C --> M[Severity Classification + CWE]
D --> M
E --> M
G --> M
J --> M
K --> M
L --> M
M --> N[Remediation Report]
三层扫描会并行运行。静态分析可发现代码层面的漏洞,依赖项扫描可发现已知 CVE,Agent 威胁建模则可发现 AI 驱动应用中特有的风险。
实现
import re
from dataclasses import dataclass
@dataclass
class SecurityFinding:
severity: str # CRITICAL, HIGH, MEDIUM, LOW
cwe: str
title: str
file: str
line: int
description: str
remediation: str
class AgentSecurityScanner:
PATTERNS = [
{
"name": "SQL Injection",
"pattern": r'f["\'].*(?:SELECT|INSERT|UPDATE|DELETE).*\{.*\}',
"severity": "CRITICAL",
"cwe": "CWE-89",
"remediation": "Use parameterized queries instead of string interpolation",
},
{
"name": "Command Injection",
"pattern": r'(?:os\.system|subprocess\.call|exec)\s*\(.*(?:f["\']|\+\s*\w)',
"severity": "CRITICAL",
"cwe": "CWE-78",
"remediation": "Use subprocess with list args, never shell=True with user input",
},
{
"name": "Hardcoded Secret",
"pattern": r'(?:password|secret|api_key|token)\s*=\s*["\'][^"\']{8,}["\']',
"severity": "HIGH",
"cwe": "CWE-798",
"remediation": "Use environment variables or a secrets manager",
},
{
"name": "Eval Usage",
"pattern": r'\beval\s*\(',
"severity": "HIGH",
"cwe": "CWE-95",
"remediation": "Use ast.literal_eval for data, or a sandboxed interpreter",
},
{
"name": "Insecure Deserialization",
"pattern": r'pickle\.loads?\s*\(',
"severity": "HIGH",
"cwe": "CWE-502",
"remediation": "Use JSON or msgpack instead of pickle for untrusted data",
},
]
def scan_file(self, filepath: str, content: str) -> list[SecurityFinding]:
findings = []
for i, line in enumerate(content.splitlines(), 1):
for pattern in self.PATTERNS:
if re.search(pattern["pattern"], line, re.IGNORECASE):
findings.append(SecurityFinding(
severity=pattern["severity"],
cwe=pattern["cwe"],
title=pattern["name"],
file=filepath,
line=i,
description=f"Detected {pattern['name']} pattern",
remediation=pattern["remediation"],
))
return findings
def scan_dependencies(self, lockfile: str) -> list[SecurityFinding]:
"""Scan package lockfile against CVE databases."""
# Delegates to `npm audit` or `pip-audit`
pass
def scan_agent_threats(self, tool_calls: list[dict]) -> list[SecurityFinding]:
findings = []
for call in tool_calls:
if call["tool"] == "Shell" and any(
dangerous in call.get("command", "")
for dangerous in ["rm -rf", "curl | sh", "wget | bash", "> /dev/"]
):
findings.append(SecurityFinding(
severity="CRITICAL", cwe="CWE-78",
title="Dangerous Shell Command",
file="agent_session", line=0,
description=f"Agent issued dangerous command: {call['command'][:100]}",
remediation="Restrict agent shell access to an allowlist of safe commands",
))
return findings
最佳实践
- 对每项 AI 生成的代码变更都运行安全扫描,而不只是对人工编写的代码运行
- 按 CWE 对发现进行分类,以便标准化跟踪和报告
- 对 CRITICAL 和 HIGH 级别的发现阻止合并;在后续工单中跟踪 MEDIUM 级别的发现
- 每周扫描依赖项,而不只是安装时扫描——每天都会发布新的 CVE
- 审计 Agent 工具调用中的危险模式(删除文件、网络访问、eval)
- 维护一份已确认误报的抑制列表,并注明到期日期
平台兼容性
| 平台 | 支持情况 | 备注 |
|---|---|---|
| Cursor | 完全支持 | 集成提交前检查和 CI |
| VS Code | 完全支持 | 安全扩展生态系统 |
| Windsurf | 完全支持 | 支持安全扫描 |
| Claude Code | 完全支持 | 代码审查与扫描 |
| Cline | 完全支持 | 安全感知审查 |
| aider | 部分支持 | 代码级扫描 |
相关技能
- CodeQL & Semgrep - 通过数据流跟踪进行深度静态分析,发现基于正则表达式的扫描会漏掉的漏洞
- Secret Protection - 在提交前、CI/CD 和运行时各层防止凭据泄露
- Sandbox Hardening - 通过执行隔离,限制任何逃过扫描的漏洞造成的影响范围
- Code Review - 结构化质量门禁,将安全审查作为核心评估维度之一
关键词
security-scanning owasp cve vulnerability-detection prompt-injection agent-security static-analysis dependency-audit
© 2026 googleadsagent.ai™ | Agent Skills™ | MIT License