mcpField
V
vulnerability-scanner

vulnerability-scanner

github.com/sickn33安全48.7k1.3k 次安装今天更新
代码仓库

关于 vulnerability-scanner

用于评估应用风险的安全技能,涵盖威胁建模、攻击面梳理、代码模式检查和风险排序。附带启发式 Python 扫描器及检查清单;扫描结果需人工验证。

主要功能

  1. 01威胁建模与攻击面梳理
  2. 02OWASP 风险类别与检查清单
  3. 03结合环境对漏洞排序
  4. 04代码模式与密钥检查
  5. 05可选的启发式 Python 扫描器

适用场景

  1. 01审查应用的攻击面
  2. 02确定漏洞报告的处理优先级
  3. 03检查代码中的高风险模式
  4. 04整理安全发现与修复建议

安装

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

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill vulnerability-scanner

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

附带文件checklists.mdscripts/security_scan.py

详细介绍

漏洞扫描器

像攻击者一样思考,像专家一样防御。了解 2025 年的威胁态势。

🔧 运行时脚本

可选启发式扫描(非安全验证):

脚本用途用法
scripts/security_scan.py验证安全原则是否已应用python scripts/security_scan.py <project_path>

📋 参考文件

文件用途
checklists.mdOWASP Top 10、身份验证、API、数据保护检查清单

1. 安全专家思维

核心原则
原则应用
假设已遭入侵按攻击者已在内部的情况进行设计
零信任永不信任,始终验证
深度防御多层防护,不设单点
最小权限仅授予所需的最低权限
故障时保持安全出错时拒绝访问
威胁建模问题

扫描前,请先问:

  1. 我们要保护什么?(资产)
  2. 谁会发动攻击?(威胁参与者)
  3. 他们会如何攻击?(攻击向量)
  4. 会造成什么影响?(业务风险)

2. OWASP Top 10:2025

风险类别
排名类别思考要点
A01访问控制失效谁能访问什么?IDOR、SSRF
A02安全配置错误默认设置、标头、暴露的服务
A03软件供应链 🆕依赖项、CI/CD、构建完整性
A04加密失效弱加密、暴露的机密
A05注入用户输入 → 系统命令
A06不安全的设计有缺陷的架构
A07身份验证失效会话、凭据管理
A08完整性失效未签名的更新、被篡改的数据
A09日志记录与告警盲点、缺少监控
A10异常情况 🆕错误处理、故障时默认放行
2025 年关键变化
2021 → 2025 Shifts:
├── SSRF merged into A01 (Access Control)
├── A02 elevated (Cloud/Container configs)
├── A03 NEW: Supply Chain (major focus)
├── A10 NEW: Exceptional Conditions
└── Focus shift: Root causes > Symptoms

3. 供应链安全(A03)

攻击面
向量风险要问的问题
依赖项恶意软件包我们会审核新依赖吗?
锁定文件完整性攻击这些文件已提交吗?
构建流水线CI/CD 遭入侵谁可以修改?
注册表仿冒包名来源经过验证吗?
防御原则
  • 验证软件包完整性(校验和)
  • 固定版本,审核更新
  • 对关键依赖使用私有注册表
  • 对构件进行签名和验证

4. 攻击面映射

映射内容
类别要素
入口点API、表单、文件上传
数据流输入 → 处理 → 输出
信任边界检查身份验证/授权的位置
资产机密、PII、业务数据
优先级矩阵
Risk = Likelihood × Impact

High Impact + High Likelihood → CRITICAL
High Impact + Low Likelihood  → HIGH
Low Impact + High Likelihood  → MEDIUM
Low Impact + Low Likelihood   → LOW

5. 风险优先级排序

CVSS + 上下文
因素权重问题
CVSS 分数基本严重性漏洞有多严重?
EPSS 分数预测的漏洞利用概率未来 30 天内遭到利用的概率;这并不能证明漏洞正在被主动利用
资产价值业务背景有什么风险?
暴露程度攻击面是否面向互联网?
优先级决策树
Is there credible active-exploitation evidence (for example a relevant KEV entry or incident evidence)?
├── YES → CRITICAL: Immediate action
└── NO → Check CVSS
         ├── CVSS ≥9.0 → HIGH
         ├── CVSS 7.0-8.9 → Consider asset value
         └── CVSS <7.0 → Schedule for later

6. 异常情况(A10 - 新增)

故障时默认放行与故障时默认拒绝
场景故障时默认放行(不佳)故障时默认拒绝(良好)
身份验证错误允许访问拒绝访问
解析失败接受输入拒绝输入
超时无限重试限制重试并中止
检查内容
  • 捕获所有异常后忽略异常的处理程序
  • 安全操作缺少错误处理
  • 身份验证/授权中的竞态条件
  • 资源耗尽情况

7. 扫描方法

分阶段方法
1. RECONNAISSANCE
   └── Understand the target
       ├── Technology stack
       ├── Entry points
       └── Data flows

2. DISCOVERY
   └── Identify potential issues
       ├── Configuration review
       ├── Dependency analysis
       └── Code pattern search

3. ANALYSIS
   └── Validate and prioritize
       ├── False positive elimination
       ├── Risk scoring
       └── Attack chain mapping

4. REPORTING
   └── Actionable findings
       ├── Clear reproduction steps
       ├── Business impact
       └── Remediation guidance

8. 代码模式分析

高风险模式
模式风险查找内容
查询中进行字符串拼接注入"SELECT * FROM " + user_input
动态代码执行RCEeval()、exec()、Function()
不安全的反序列化RCEpickle.loads()、unserialize()
路径操作路径遍历文件路径中的用户输入
禁用安全功能各种风险verify=False、--insecure
秘密信息模式
类型指标
API 密钥api_key、apikey、高熵值
令牌token、bearer、jwt
凭据password、secret、key
云服务AWS_、AZURE_、GCP_ 前缀

9. 云安全注意事项

共同责任
层级由你负责由提供商负责
数据✅❌
应用程序✅❌
OS/运行时视情况而定视情况而定
基础设施❌✅
云服务专项检查
  • IAM:是否遵循最小权限原则?
  • 存储:是否存在公开存储桶?
  • 网络:是否收紧了安全组设置?
  • 秘密信息:是否使用了秘密管理器?

10. 反模式

❌ 不要✅ 应该
未了解情况就扫描先绘制攻击面
对每个 CVE 都发出警报根据可利用性和资产优先级排序
忽略误报维护经过验证的基线
只修复表面问题解决根本原因
只在部署前扫描一次持续扫描
盲目信任第三方依赖验证完整性并审计代码

11. 报告原则

发现项结构

每项发现都应回答:

  1. 是什么? - 清晰描述漏洞
  2. 在哪里? - 准确位置(文件、行、端点)
  3. 为什么? - 解释根本原因
  4. 影响是什么? - 对业务的影响
  5. 如何修复? - 具体的修复措施
严重性分类
严重性标准
严重RCE、绕过身份验证、大规模数据泄露
高数据泄露、权限提升
中范围有限,且需要满足特定条件
低仅供参考,属于最佳实践

请记住: 漏洞扫描可以发现问题。专家思维能确定哪些问题最重要。始终要问:“攻击者会如何利用这个问题?”

适用场景

当任务符合概述中描述的工作流或操作时,可使用此技能。

限制

  • 随附的扫描器使用正则表达式启发式方法,而非数据流或可达性分析;匹配结果需要人工验证,未匹配到内容也不能作为安全结论。它不会检查 Git 历史、二进制文件和已跳过的目录。网络依赖项审计需通过 --allow-network 选择启用,并会将依赖项元数据发送到配置的注册表。读取或工具错误意味着覆盖不完整;不要将其视为通过检查。
  • 仅当任务明确符合上述范围时,才使用此技能。
  • 不要将输出视为针对特定环境的验证、测试或专家审查的替代品。
  • 如果缺少必要的输入、权限、安全边界或成功标准,请停止并请求澄清。

评论

支持 Markdown