| name | code-security-auditor |
| description | Comprehensive code security audit with AI-powered vulnerability detection. Covers OWASP Top 10, dependency scanning, secret detection, SAST, and provides actionable fix recommendations. Use when security review, penetration testing, or compliance audit is needed. |
Code Security Auditor
综合代码安全审计工具,结合 AI 推理能力与专业安全扫描工具,提供高可信度漏洞发现、可执行修复方案和持续学习优化。
🎯 核心能力
| 能力 | 说明 | 对标 Codex Security |
|---|
| OWASP Top 10 检测 | SQL 注入、XSS、CSRF、SSRF 等 | ✅ |
| 依赖漏洞扫描 | npm/pip/cargo/maven 依赖安全检查 | ✅ |
| 密钥泄露检测 | API Key、密码、Token 硬编码检测 | ✅ |
| SAST 静态分析 | 代码流分析、污点追踪 | ✅ |
| 配置安全审计 | CORS、CSP、SSL/TLS 配置检查 | ✅ |
| 修复方案生成 | 提供可执行的安全修复代码 | ✅ |
| 误报率优化 | AI 上下文理解降低误报 | ✅ |
🚀 快速开始
code-security-auditor audit <project_path>
code-security-auditor quick <project_path>
code-security-auditor scan --type sql-injection <project_path>
code-security-auditor scan --type xss <project_path>
code-security-auditor scan --type ssrf <project_path>
code-security-auditor fix <vulnerability_id>
code-security-auditor compare --baseline .security-baseline.json
📋 审计阶段(8 阶段深度审计)
Phase 1: 依赖安全扫描
扫描项目依赖中的已知漏洞。
pip-audit
safety check
pipx run pip-audit --format json
npm audit --json
npx audit-ci --config audit-ci.jsonc
cargo audit --json
mvn org.owasp:dependency-check-maven:check -Dformat=JSON
输出示例:
{
"phase": "dependency_scan",
"verdict": "WARN",
"findings": [
{
"id": "DEP-001",
"severity": "HIGH",
"package": "requests",
"version": "2.28.0",
"vulnerability": "CVE-2023-32681",
"description": "信息泄露风险",
"fix": "升级到 2.31.0+",
"cvss": 7.5
}
]
}
Phase 2: 密钥泄露检测
检测硬编码的敏感信息。
检测模式:
r'(api[_-]?key|apikey)\s*[:=]\s*["\'][a-zA-Z0-9]{20,}["\']'
r'(password|passwd|pwd)\s*[:=]\s*["\'].+["\']'
r'(token|secret|auth)\s*[:=]\s*["\'][a-zA-Z0-9_-]{20,}["\']'
r'-----BEGIN (RSA |EC )?PRIVATE KEY-----'
r'AKIA[0-9A-Z]{16}'
r'ghp_[a-zA-Z0-9]{36}'
工具集成:
trufflehog filesystem <path> --json
gitleaks detect --source <path> --report-format json
detect-secrets scan --all-files > .secrets.baseline
Phase 3: OWASP Top 10 漏洞扫描
3.1 SQL 注入检测
检测模式:
cursor.execute(f"SELECT * FROM users WHERE id = {user_id}")
cursor.execute("SELECT * FROM users WHERE id = " + user_id)
cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))
扫描规则:
- 字符串拼接 SQL 语句
- 未使用参数化查询
- 用户输入直接进入查询
- ORM 的 raw query 未转义
3.2 XSS(跨站脚本)检测
检测模式:
return f"<div>{user_input}</div>"
html = "<span>" + request.args.get('name') + "</span>"
from markupsafe import escape
return f"<div>{escape(user_input)}</div>"
扫描规则:
- 用户输入直接渲染到 HTML
- 未使用模板引擎的自动转义
- innerHTML 直接赋值
- dangerouslySetInnerHTML 使用
3.3 SSRF(服务器端请求伪造)检测
检测模式:
requests.get(user_url)
urllib.request.urlopen(user_input)
def safe_request(url: str) -> Response:
parsed = urlparse(url)
if not is_safe_url(parsed):
raise ValueError("Unsafe URL")
return requests.get(url)
扫描规则:
- requests/urllib 直接使用用户输入
- 未验证 URL 协议(http/https only)
- 未检查内网 IP(169.254.169.254 等)
- 未限制重定向
3.4 其他 OWASP Top 10
| 漏洞类型 | 检测重点 |
|---|
| A01 权限控制失效 | 未授权访问、IDOR、水平/垂直越权 |
| A02 加密失败 | 弱加密算法、硬编码密钥、明文存储 |
| A03 注入 | SQL、NoSQL、命令注入、LDAP 注入 |
| A04 不安全设计 | 缺少速率限制、无审计日志 |
| A05 配置错误 | 默认配置、详细错误信息、开放端口 |
| A06 脆弱组件 | 过期依赖、已知漏洞 |
| A07 认证失败 | 弱密码、无 MFA、会话固定 |
| A08 数据完整性 | 无签名验证、反序列化漏洞 |
| A09 日志失败 | 敏感信息入日志、无审计追踪 |
| A10 SSRF | 见上方详细检测 |
Phase 4: 代码流分析(污点追踪)
追踪用户输入从源头到敏感操作的路径。
user_input = request.args.get('id')
data = process(user_input)
query = build_query(data)
cursor.execute(query)
AI 增强分析:
- 跨函数污点追踪
- 识别净化函数(sanitizer)
- 上下文敏感分析
- 降低误报率
Phase 5: 配置安全审计
5.1 Web 服务器配置
cors:
allowed_origins: ["*"]
allowed_methods: ["GET", "POST"]
credentials: true
content_security_policy:
default_src: ["'self'"]
script_src: ["'self'", "'unsafe-inline'"]
5.2 SSL/TLS 配置
ssl:
min_version: "TLSv1.2"
ciphers:
- ECDHE-RSA-AES256-GCM-SHA384
- ECDHE-RSA-AES128-GCM-SHA256
hsts: true
5.3 文件权限
chmod 600 .env
chmod 644 config.yaml
chmod 755 scripts/
chmod 777 anything
Phase 6: 认证与会话安全
检查项:
| 检查点 | 要求 |
|---|
| 密码存储 | bcrypt/argon2,禁止明文/MD5/SHA1 |
| 会话管理 | HttpOnly + Secure + SameSite |
| Token 安全 | JWT 签名验证、合理过期时间 |
| MFA 支持 | 关键操作要求多因素认证 |
| 速率限制 | 登录/注册接口防暴力破解 |
| 账户锁定 | 多次失败后临时锁定 |
Phase 7: 安全日志与监控
检查项:
logger.info(f"User {user_id} logged in from {ip}")
logger.info(f"Login attempt: user={username}, password={password}")
要求:
- 敏感信息不入日志
- 安全事件完整记录
- 日志完整性保护
- 告警阈值配置
Phase 8: AI 驱动漏洞验证
使用 AI 模型验证潜在漏洞的真实性,降低误报。
def ai_verify_vulnerability(finding: Finding) -> VerificationResult:
context = extract_context(finding.location)
has_sanitizer = check_sanitizer(context)
has_validation = check_input_validation(context)
exploit_path = generate_exploit_path(finding)
if has_sanitizer and not exploit_path:
return VerificationResult.FALSE_POSITIVE
return VerificationResult.CONFIRMED
效果(对标 Codex Security):
- 误报率 ↓ 50%
- 噪声 ↓ 84%
- 真实漏洞检出率 ↑
📊 风险评级系统
CVSS 3.1 评分
| 等级 | 分数范围 | 颜色 |
|---|
| 严重 (Critical) | 9.0 - 10.0 | 🔴 |
| 高危 (High) | 7.0 - 8.9 | 🟠 |
| 中危 (Medium) | 4.0 - 6.9 | 🟡 |
| 低危 (Low) | 0.1 - 3.9 | 🟢 |
| 无风险 (None) | 0.0 | ⚪ |
综合 verdict
def calculate_verdict(findings: List[Finding]) -> str:
critical_count = sum(1 for f in findings if f.severity == "CRITICAL")
high_count = sum(1 for f in findings if f.severity == "HIGH")
if critical_count > 0:
return "FAIL - CRITICAL VULNERABILITIES FOUND"
elif high_count > 0:
return "FAIL - HIGH SEVERITY VULNERABILITIES FOUND"
elif any(f.severity == "MEDIUM" for f in findings):
return "WARN - MEDIUM SEVERITY ISSUES FOUND"
elif findings:
return "PASS WITH INFO - LOW SEVERITY ISSUES FOUND"
else:
return "PASS - NO SECURITY ISSUES FOUND"
🔧 修复方案生成
自动修复示例
SQL 注入修复
修复前:
def get_user(user_id: str):
query = f"SELECT * FROM users WHERE id = '{user_id}'"
return cursor.execute(query)
修复后:
def get_user(user_id: str):
query = "SELECT * FROM users WHERE id = %s"
return cursor.execute(query, (user_id,))
XSS 修复
修复前:
@app.route('/greet')
def greet():
name = request.args.get('name')
return f"<h1>Hello, {name}!</h1>"
修复后:
from markupsafe import escape
@app.route('/greet')
def greet():
name = request.args.get('name')
return f"<h1>Hello, {escape(name)}!</h1>"
SSRF 修复
修复前:
def fetch_url(url: str):
return requests.get(url)
修复后:
import socket
from urllib.parse import urlparse
import ipaddress
def is_safe_url(url: str) -> bool:
parsed = urlparse(url)
if parsed.scheme not in ['http', 'https']:
return False
try:
ip = socket.gethostbyname(parsed.hostname)
ip_obj = ipaddress.ip_address(ip)
if ip_obj.is_private or ip_obj.is_loopback or ip_obj.is_link_local:
return False
if str(ip_obj) == '169.254.169.254':
return False
return True
except:
return False
def fetch_url(url: str):
if not is_safe_url(url):
raise ValueError("Unsafe URL detected")
return requests.get(url, allow_redirects=False)
📁 配置文件 (.security-audit.yaml)
scope:
include:
- "src/**/*"
- "app/**/*"
exclude:
- "**/test/**"
- "**/vendor/**"
- "**/node_modules/**"
- "**/*.min.js"
thresholds:
critical: 0
high: 0
medium: 10
low: 50
rules:
sql_injection:
enabled: true
severity: CRITICAL
xss:
enabled: true
severity: HIGH
ssrf:
enabled: true
severity: CRITICAL
hardcoded_secrets:
enabled: true
severity: CRITICAL
dependency_vulnerabilities:
enabled: true
min_severity: HIGH
fix_suggestions:
enabled: true
auto_fix: false
review_required: true
reporting:
formats:
- markdown
- json
- sarif
include_code_snippets: true
include_fix_examples: true
📤 报告输出
终端摘要
🔒 Code Security Audit Report
═══════════════════════════════════════════════════
Project: my-app @ abc1234
Date: 2026-03-07 14:30:00
Duration: 45.2s
Verdict: ❌ FAIL - HIGH SEVERITY VULNERABILITIES FOUND
Summary:
┌─────────────┬───────┬──────────┐
│ Severity │ Count │ Status │
├─────────────┼───────┼──────────┤
│ 🔴 Critical │ 2 │ FAIL │
│ 🟠 High │ 5 │ FAIL │
│ 🟡 Medium │ 12 │ WARN │
│ 🟢 Low │ 23 │ INFO │
└─────────────┴───────┴──────────┘
Top Issues:
1. [CRITICAL] SQL Injection in user_controller.py:45
→ Use parameterized queries
2. [CRITICAL] Hardcoded AWS Key in config.py:12
→ Move to environment variables
3. [HIGH] XSS in template.html:78
→ Escape user input
4. [HIGH] SSRF in webhook_handler.py:34
→ Validate URL before request
5. [HIGH] Outdated dependency: requests@2.28.0
→ Upgrade to 2.31.0+
Next Steps:
• Run: code-security-auditor fix --all
• Review: .security-audit/report.md
• Compare: code-security-auditor compare --baseline
JSON 报告(机器可读)
{
"meta": {
"timestamp": "2026-03-07T14:30:00Z",
"commit": "abc1234",
"tool_version": "1.0.0"
},
"verdict": "FAIL",
"summary": {
"critical": 2,
"high": 5,
"medium": 12,
"low": 23,
"total": 42
},
"findings": [
{
"id": "SQL-INJ-001",
"type": "sql_injection",
"severity": "CRITICAL",
"cvss": 9.8,
"location": {
"file": "src/controllers/user_controller.py",
"line": 45,
"column": 12
},
"description": "用户输入直接进入 SQL 查询",
"evidence": "cursor.execute(f\"SELECT * FROM users WHERE id = '{user_id}'\")",
"remediation": {
"description": "使用参数化查询",
"code": "cursor.execute(\"SELECT * FROM users WHERE id = %s\", (user_id,))"
},
"references": [
"https://owasp.org/www-community/attacks/SQL_Injection",
"https://cwe.mitre.org/data/definitions/89.html"
]
}
]
}
SARIF 格式(IDE 集成)
{
"$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json",
"version": "2.1.0",
"runs": [
{
"tool": {
"driver": {
"name": "Code Security Auditor",
"version": "1.0.0"
}
},
"results": [
{
"ruleId": "SQL-INJ",
"level": "error",
"message": {
"text": "SQL Injection vulnerability detected"
},
"locations": [
{
"physicalLocation": {
"artifactLocation": {
"uri": "src/controllers/user_controller.py"
},
"region": {
"startLine": 45,
"startColumn": 12
}
}
}
]
}
]
}
]
}
🔄 CI/CD 集成
GitHub Actions
name: Security Audit
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
security-audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Security Audit
run: |
code-security-auditor audit . \
--format sarif \
--output security-results.sarif \
--fail-on high
- name: Upload to GitHub Security
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: security-results.sarif
- name: Check Baseline
run: |
code-security-auditor compare \
--baseline .security-baseline.json \
--current security-results.json
GitLab CI
security-audit:
stage: test
image: python:3.11
script:
- pip install code-security-auditor
- code-security-auditor audit . --fail-on high
artifacts:
reports:
sast: security-results.sarif
📚 参考资源
OWASP Top 10 2021
CWE 通用弱点
安全编码规范
漏洞数据库
🎯 与 OpenAI Codex Security 对比
| 能力 | Codex Security | Code Security Auditor |
|---|
| OWASP Top 10 | ✅ | ✅ |
| 依赖扫描 | ✅ | ✅ |
| 密钥检测 | ✅ | ✅ (truffleHog/gitleaks) |
| SAST | ✅ AI 驱动 | ✅ AI + 规则混合 |
| 误报优化 | ✅ ↓50% | ✅ AI 验证阶段 |
| 修复建议 | ✅ 可执行代码 | ✅ 可执行代码 |
| 本地运行 | ❌ 需上传 OpenAI | ✅ 完全本地 |
| 数据隐私 | ⚠️ 代码出境 | ✅ 代码不出境 |
| 费用 | 付费(首月免费) | ✅ 开源免费 |
| 可扩展 | ❌ 封闭 | ✅ 自定义规则 |
⚠️ 风险声明
- 本工具不保证发现所有漏洞 — 安全审计应结合人工审查
- 自动修复需谨慎 — 建议 review 后再应用
- 生产环境前必须人工确认 — 自动化工具不能替代安全专家
- 定期更新规则库 — 新漏洞不断出现,保持工具更新
📝 使用示例
code-security-auditor quick ./src
code-security-auditor audit . --output report.md
code-security-auditor audit . --changed-only
code-security-auditor fix --all --review
code-security-auditor compare --baseline last-release.json
code-security-auditor audit . --format sarif --output results.sarif
持续学习优化:每次审计结果可反馈到 AI 模型,持续降低误报率、提高检出率。