基于 Anthropic Claude API 的自动化代码安全审计工具
基于 Anthropic Claude API 的自动化代码安全审计工具Claude Code Security Scanner基于 Anthropic Claude API 的自动化代码安全审计工具。支持批量扫描项目文件智能过滤误报生成结构化的安全报告。功能特性批量并发扫描– 可配置最大并发数高效处理大量文件断点续扫– 自动保存进度中断后可恢复扫描智能大文件处理– 支持提取关键代码段、截断或跳过超大文件误报过滤– 内置硬排除规则如 DOS、速率限制、非 C/C 内存安全等问题可选 AI 二次过滤增量报告– 每处理 N 个文件即生成临时报告便于实时监控多格式输出– 生成 JSON 和 HTML 格式的最终报告可定制扫描范围– 自定义排除目录、额外文件扩展名快速开始安装依赖bashpip install anthropic tqdm基本使用//base command python scan_project.py --path /path/to/project --api-key YOUR_API_KEY //test command python scan_project.py --path ../to_test_simple_system --api-key YOUR_API_KEY --base-url https://api.kwwai.top --model claude-opus-4-6 --resume --report-interval 5 --large-file-strategy extract命令行参数参数类型默认值描述--pathstr.项目根目录路径--excludestr[]无额外排除的目录名空格分隔--extensionsstr[]无额外扫描的文件扩展名如.kt--max-concurrentint5最大并发 API 请求数--output-jsonstrsecurity_report.json最终 JSON 报告输出路径--output-htmlstrsecurity_report.html最终 HTML 报告输出路径--api-keystr环境变量ANTHROPIC_API_KEYAnthropic API 密钥--base-urlstr无自定义 API 端点用于代理或兼容服务--modelstrclaude-3-opus-20240229Claude 模型名称--resumeflagFalse启用断点续扫基于.scan_progress.json--report-intervalint5每处理 N 个文件更新一次临时报告--large-file-strategyextract/skip/truncateextract大文件1MB处理策略提取关键段、跳过、截断项目结构textclaudecode/ ├── scan_project.py # 主入口脚本 ├── file_scanner.py # 文件扫描与过滤扩展名、排除目录、大小限制 ├── api_client.py # Claude API 封装支持大文件提取和重试 ├── batch_processor.py # 并发批处理器进度回调与断点续扫 ├── report_generator.py # JSON/HTML 报告生成聚合发现项 ├── findings_filter.py # 硬排除规则内存安全、DOS、开放重定向等 ├── prompts.py # PR 安全审计提示词模板用于单独 PR 场景 └── constants.py # 常量配置超时、令牌限制、退出码等工作流程扫描文件–FileScanner遍历项目根据扩展名、排除目录、文件大小和排除模式筛选待审文件。加载进度– 若启用--resume从.scan_progress.json读取已扫描文件跳过已完成项。并发分析–BatchProcessor使用ThreadPoolExecutor并发调用SecurityReviewClient.analyze_file()每个文件大文件按策略处理提取关键函数/SQL/路由或截断/跳过调用 Claude API 获取 JSON 格式的漏洞列表增量报告– 每完成一个文件将结果追加到临时 JSONL 文件每report-interval个文件生成一次临时 HTML/JSON 快照。硬过滤–ReportGenerator在聚合结果时调用FindingsFilter自动排除以下误报Markdown 文件中的发现通用 DOS/资源耗尽问题速率限制建议非 C/C 文件中的内存安全警告HTML 文件中的 SSRF 发现开放重定向、正则注入等低影响项生成报告– 扫描结束后从 JSONL 聚合所有结果应用过滤生成最终 JSON 和 HTML 报告并清理临时文件。输出报告示例JSON 结构json{ scan_summary: { total_files_scanned: 42, files_with_issues: 3, total_vulnerabilities: 5, scan_time: 2025-04-13T10:30:00 }, vulnerabilities_by_severity: { critical: 1, high: 2, medium: 2, low: 0 }, vulnerabilities_by_type: { sql_injection: 2, command_injection: 1, hardcoded_secret: 2 }, file_details: [ { file: app/auth.py, line_count: 120, vulnerabilities: [...], summary: Found SQL injection in login handler } ], overall_risk_assessment: HIGH - Urgent remediation recommended }HTML 报告生成美观的表格样式报告按严重程度高亮显示适合分享或归档。环境变量ANTHROPIC_API_KEY– API 密钥可通过--api-key覆盖CLAUDE_MODEL– 默认模型名在constants.py中定义注意事项需要有效的 Anthropic API 密钥或兼容的自定义端点大文件提取模式可能丢失部分上下文建议对关键项目使用extract默认并人工复核硬排除规则基于关键词匹配可能存在漏网之鱼可扩展findings_filter.py中的规则断点续扫依赖当前扫描参数如路径、排除规则若改变参数建议删除.scan_progress.json重新扫描本项目仅供教育研究使用请勿用于任何可能带来风险的场景。因不当使用所引发的一切后果与本人无关