mcpField
V
verify-security

verify-security

github.com/aurite-ai安全4445 次安装2 周前更新
代码仓库

关于 verify-security

这项技能在本地检查源代码和配置中的安全反模式与潜在漏洞,涵盖硬编码密钥、依赖版本、输入处理、错误信息暴露和敏感数据日志。

主要功能

  1. 01扫描硬编码密钥
  2. 02检查依赖版本固定情况
  3. 03审查外部输入处理
  4. 04标记错误详情泄露
  5. 05检查安全相关默认配置
  6. 06查找日志中的敏感数据

适用场景

  1. 01审计仓库中的硬编码凭据
  2. 02检查依赖声明
  3. 03核查输入处理和错误响应

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/aurite-ai/agent-verifier --skill verify-security

安装后在 Claude Code 中输入/verify-security确认已加载。

详细介绍

安全验证

目的

验证代码中是否存在安全反模式和漏洞。所有分析均在本地进行,代码绝不会离开你的设备。

适用场景

当用户要求以下操作时,触发此技能:

  • “验证 Agent 安全性”
  • “验证安全性”
  • “检查是否存在密钥”
  • “扫描漏洞”
  • “安全审计”

**注意:**如需全面验证模式、质量和特定语言检查,请告知用户说 “验证 Agent”。

流程

步骤 1:发现文件

定位要分析的文件:

配置文件:

  • package.json、pyproject.toml、Cargo.toml - 依赖项
  • .env.example - 环境模板(标记看起来像真实密钥的值)
  • .gitignore - 确认 .env 和 .env.local 已被忽略(如果没有,将其标记为问题)
  • config.py、settings.py、config.ts - 配置

源文件:

  • *.py、*.ts、*.js、*.go、*.rs - 源代码
  • 优先检查名称中包含以下内容的文件:auth、api、client、secret、config

排除:

  • node_modules/、.venv/、venv/、__pycache__/
  • *.test.*、*.spec.*、*_test.go
  • .env、.env.local、.env.*.local - 切勿打开这些文件。其中保存着用户的真实密钥。只检查它们是否被 git 忽略。
步骤 2:运行安全检查
检查级别
  • [PATTERN] — 机械式检查。严格按说明执行。
  • [HEURISTIC] — 需要判断。清楚标记检查结果。

每项检查结果都标记为 [P](模式)或 [H](启发式)。


2.1 [PATTERN] 硬编码密钥

扫描与以下模式匹配的赋值(不区分大小写):

变量模式不通过条件
API_KEY被赋值为字符串字面量
SECRET被赋值为字符串字面量
PASSWORD被赋值为字符串字面量
TOKEN被赋值为字符串字面量
PRIVATE_KEY被赋值为字符串字面量
AWS_ACCESS_KEY_ID被赋值为字符串字面量
AWS_SECRET_ACCESS_KEY被赋值为字符串字面量

失败示例:

# ❌ Issue
API_KEY = "sk-abc123..."
password = "hunter2"
OPENAI_API_KEY = "sk-proj-..."

# ✅ Pass (value loaded at runtime from env or a secrets manager, never a literal)
api_key = settings.api_key
password = secret_store.get("db-password")

还要标记:

  • 与已知 API 密钥模式匹配的字符串字面量:
    • sk-...(OpenAI)
    • sk-ant-...(Anthropic)
    • AKIA...(AWS)
    • ghp_...(GitHub)
    • xoxb-...(Slack)

严重性:❌ 问题


2.2 [PATTERN] 依赖项版本固定

Python(requirements.txt):

模式严重性
package>=1.0❌ 问题
package>1.0❌ 问题
package(未指定版本)❌ 问题
package==1.0.0✅ 通过
package~=1.0✅ 通过

Python(pyproject.toml):

检查 [project.dependencies] 和 [tool.poetry.dependencies]:

  • 未固定版本或使用 >= → ❌ 问题
  • 使用 ==、^ 或 ~ 固定版本 → ✅ 通过

JavaScript/TypeScript(package.json):

模式严重性
"package": "*"❌ 问题
"package": "latest"❌ 问题
"package": ">=1.0.0"⚠️ 警告
"package": "^1.0.0"✅ 通过
"package": "~1.0.0"✅ 通过
"package": "1.0.0"✅ 通过

2.3 [HEURISTIC] 输入验证

检查对外部数据的处理:

查找:

  • HTTP 请求处理器(@app.route、router.get 等)
  • 用户输入处理(request.body、req.params、input())
  • 文件上传
  • 包含用户输入的数据库查询

以下情况需标记:

  • 未经净化便将用户输入直接传递给数据库查询
  • 根据用户输入构造文件路径,但未进行验证
  • 解析外部数据中的 JSON 时未进行架构验证

严重性:⚠️ 警告

需标记的示例模式:

# ⚠️ Warning - SQL without parameterization
query = f"SELECT * FROM users WHERE id = {user_id}"

# ⚠️ Warning - Path traversal risk
file_path = os.path.join(base_dir, user_filename)

# ✅ Pass - Parameterized query
cursor.execute("SELECT * FROM users WHERE id = ?", (user_id,))

2.4 [HEURISTIC] 错误消息泄露

检查错误处理是否泄露信息:

以下情况需标记:

  • 在 HTTP 响应中返回堆栈跟踪
  • 向用户暴露数据库错误消息
  • 错误消息中包含内部路径或系统信息
  • 在生产代码中启用了调试模式

查找:

# ⚠️ Warning
except Exception as e:
    return {"error": str(e)}  # Exposes internal details

# ⚠️ Warning
app = Flask(__name__)
app.debug = True  # Debug in production

# ✅ Pass
except Exception as e:
    logger.error(f"Error: {e}")
    return {"error": "An error occurred"}

严重性:⚠️ 警告


2.5 [HEURISTIC] 安全默认值

检查配置中是否存在不安全的默认值:

设置不安全安全
CORS*(允许所有来源)指定来源
SSL 验证verify=Falseverify=True 或省略
调试模式debug=Truedebug=False
Cookie 安全secure=Falsesecure=True
CSRF已禁用已启用

示例:

# ⚠️ Warning
requests.get(url, verify=False)
app.config["SESSION_COOKIE_SECURE"] = False
CORS(app, origins="*")

# ✅ Pass
requests.get(url)  # verify=True is default
app.config["SESSION_COOKIE_SECURE"] = True
CORS(app, origins=ALLOWED_ORIGINS)  # explicit allowlist

严重程度:⚠️ 警告


2.6 [HEURISTIC] 敏感数据日志记录

检查日志语句是否记录了敏感数据:

若日志记录包含以下内容,则标记:

  • 密码或令牌
  • API 密钥
  • 个人身份信息(PII)
  • 信用卡号
  • 会话令牌

查找:

# ⚠️ Warning
logger.info(f"User login: {username} with password {password}")
print(f"API response: {response.json()}")  # May contain tokens

# ✅ Pass
logger.info(f"User login: {username}")
logger.debug(f"Request to {url}")  # No sensitive data

严重程度:⚠️ 警告


第 3 步:生成报告
# Security Verification Report

**Project:** [name or path]
**Date:** [current date]
**Files analyzed:** [count]

## Summary

✅ X checks passed | ⚠️ Y warnings | ❌ Z issues

## Secrets

- [x] No hardcoded secrets found
- [ ] ❌ Hardcoded secret at `[file:line]`

## Dependencies

- [x] All dependencies pinned
- [ ] ❌ Unpinned dependencies in `[file]`

## Input Validation

- [x] External input properly validated
- [ ] ⚠️ Potential injection at `[file:line]`

## Error Handling

- [x] Errors properly sanitized
- [ ] ⚠️ Information leakage at `[file:line]`

## Findings

> `[P]` = pattern-matched · `[H]` = heuristic

### ✅ Passing
- `[P]` No hardcoded API keys or secrets
- `[P]` Dependencies properly pinned

### ⚠️ Warnings
- `[H]` [Check]: [description]
  - **Location:** [file:line]
  - **Risk:** [what could go wrong]
  - **Suggestion:** [how to fix]

### ❌ Issues
- `[P]` [Check]: [description]
  - **Location:** [file:line]
  - **Rule:** [which rule violated]
  - **Fix:** [specific remediation]

## Recommendations

1. [Priority recommendation]
2. [Additional improvements]

如需全面验证(包括模式、质量和特定语言的检查),请说“verify agent”。

评论

支持 Markdown