关于 security-scan
面向开发者的静态安全扫描技能,通过六层检查识别依赖漏洞、硬编码密钥、代码模式、认证配置、CORS 和数据保护问题。它按 OWASP Top 10:2025 分类并结合风险上下文评级,同时明确说明静态分析的局限。
主要功能
- 01六层静态安全扫描
- 02OWASP Top 10:2025 分类
- 03按可利用性与影响评级
- 04分层选择扫描范围
- 05提供修复建议与代码
- 06报告注明静态分析局限
适用场景
- 01发布前进行全面安全检查
- 02依赖更新后检查包漏洞
- 03认证、配置或日志变更后定向扫描
- 04渗透测试准备与定期审查
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ codewithmukesh/ dotnet-claude-kit --skill security-scan安装后在 Claude Code 中输入/security-scan确认已加载。
附带文件references/scan-layers.md
详细介绍
/security-scan — 6 层安全流水线
是什么
跨 6 层运行纵深防御静态扫描。即使项目没有任何 CVE,仍可能存在硬编码机密、SQL 注入和缺少身份验证等问题——每一层都会检测不同类别的漏洞。扫描结果对应 OWASP Top 10:2025 分类,并根据可利用性、影响和暴露程度评为 Critical/High/Medium/Low——公共端点上的 Critical SQL 注入,其优先级高于管理页面上的 Low 信息泄露。
检测模式、OWASP 映射、修复代码和报告模板位于 references/scan-layers.md——执行前请先阅读。
**诚实原则:**这是静态分析,不是渗透测试。它能捕获已知模式,但无法发现业务逻辑缺陷、复杂的授权绕过问题和仅在运行时出现的漏洞。每份报告都会说明这一点。
适用场景
- 发布前安全门禁——执行完整扫描,这是生产环境上线前不可妥协的要求
- “安全扫描”、“安全审计”、“查找机密”、“CVE 检查”、“OWASP”
- 更新依赖项(第 1 层)、更改身份验证(第 4 层)、更改配置(第 2 层)或更改日志记录(第 6 层)后
- 渗透测试前准备——在支付渗透测试费用前修复静态问题
- 事件响应和季度审查
使用方法
第 1 步:选择层
| 场景 | 层 |
|---|---|
| 发布前门禁/渗透测试准备/事件/季度审查 | 全部 6 层 |
| 更新依赖项后 | 1 |
| 新增端点 | 3、4、5 |
| 身份验证系统变更 | 4 |
| 配置文件变更 | 2 |
| 日志记录变更 | 6 |
| 公开 API 暴露 | 3、4、5 |
| 仅供内部使用的服务 | 1、2、3 |
第 2 步:执行各层扫描
阅读 references/scan-layers.md,了解各层的检测模式。
将深入的身份验证和机密审查委派给 security-auditor Agent,并配合使用
authentication 和 configuration 技能。
| # | 层 | OWASP 2025 | 方法 |
|---|---|---|---|
| 1 | 包漏洞 | A03 供应链 | dotnet list package --vulnerable --include-transitive |
| 2 | 机密检测 | — | 扫描 .cs/.json/.yml/.xml/.config 中的模式 |
| 3 | OWASP 代码模式 | A05 注入、A08 完整性、A04 加密、A01 访问控制 | 扫描源代码:原始 SQL、Html.Raw、BinaryFormatter、MD5/SHA1、IDOR |
| 4 | 身份验证配置 | A07 身份验证、A01 访问控制 | 使用 get_endpoint_map 一次性查看每个路由的身份验证状态;标记 unmarked 端点;然后检查 JWT 验证设置 |
| 5 | CORS 策略 | A02 配置错误 | 通配符来源、凭据组合、方法/标头范围 |
| 6 | 数据保护 | A04 加密、A09 日志记录与告警 | 日志中的 PII、过度宽泛的响应、敏感数据明文存储 |
第 3 步:结合上下文评定严重程度
严重程度必须符合实际风险——过度分类会导致告警疲劳,并掩盖真正的 Critical 问题:
- 测试夹具中的“机密”和 appsettings.Development.json 中的值都是预期内容——跳过或标记为 INFO,不要标记为 HIGH
- 缺少 XML 注释绝不属于安全问题
- 仅将 Critical 用于当前即可利用的问题:公共端点上的注入、暴露的生产机密、身份验证绕过
第 4 步:生成报告
每项发现均包含:[SEVERITY] file:line — title、OWASP 类别、问题说明、
被利用时的影响以及修复代码(修改前/后)。按照参考模板生成摘要
表和各层状态表,并在开头注明静态分析免责声明。
示例
User: /security-scan before we ship
Claude: Running all 6 layers...
| Layer | Status | Findings |
|-------|--------|----------|
| 1. Packages | PASS | 0 CVEs (142 packages incl. transitive) |
| 2. Secrets | PASS | 0 real secrets (2 dev-only values skipped) |
| 3. OWASP Patterns | FAIL | 1 SQL injection |
| 4. Auth Config | WARN | 2 endpoints missing explicit auth attributes |
| 5. CORS | PASS | Explicit origins from configuration |
| 6. Data Protection | WARN | Customer email logged at Information level |
[HIGH] SearchOrders.cs:34 — SQL Injection (A05:2025)
FromSqlRaw($"...LIKE '%{search}%'") → attacker controls the query.
Fix: db.Orders.Where(o => EF.Functions.Like(o.Name, $"%{search}%"))
[MEDIUM] OrderEndpoints.cs:18,31 — no [Authorize]/[AllowAnonymous]; behavior
depends on ambient global policy. Make intent explicit per endpoint.
[LOW] OrderPlacedHandler.cs:22 — PII in logs (A09:2025). Log CustomerId, not email.
Note: static analysis only — this does not replace a penetration test.
相关内容
references/scan-layers.md— 检测模式、OWASP 2025 映射、报告模板/verify— 第 5 阶段会针对每组变更执行此扫描的轻量版本/health-check— 维度 7(安全态势)为抽查版本authentication/configuration— 第 4 层和第 2 层的修复模式