# Vulnerability Scanner

> 高级漏洞分析原则。OWASP 2025、供应链安全、攻击面映射、风险优先级排序。触发词：漏洞扫描、安全审计、OWASP、供应链、攻击面、风险评估。

- Skill: `kscz0000/vulnerability-scanner` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add kscz0000/vulnerability-scanner`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kscz0000/vulnerability-scanner/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- Author: kscz0000 (https://skillmd.com/u/kscz0000)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/kscz0000/vulnerability-scanner

---


# 漏洞扫描器

> 像攻击者一样思考，像专家一样防御。具备 2025 年威胁态势意识。

## 🔧 运行时脚本

**执行以进行自动化验证：**

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

## 📋 参考文件

| 文件 | 用途 |
|------|---------|
| [checklists.md](checklists.md) | OWASP 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 变化：
├── SSRF 合并到 A01（访问控制）
├── A02 升级（云/容器配置）
├── A03 新增：供应链（重点关注）
├── A10 新增：异常条件
└── 关注点转变：根因 > 症状
```

---

## 3. 供应链安全 (A03)

### 攻击面

| 向量 | 风险 | 应问的问题 |
|--------|------|-----------------|
| **依赖项** | 恶意包 | 我们是否审计新增依赖？ |
| **锁定文件** | 完整性攻击 | 是否已提交？ |
| **构建管道** | CI/CD 入侵 | 谁可以修改？ |
| **注册表** | 仿冒域名 | 来源是否经过验证？ |

### 防御原则

- 验证包的完整性（校验和）
- 锁定版本，审计更新
- 对关键依赖使用私有注册表
- 对制品进行签名与验证

---

## 4. 攻击面映射

### 映射内容

| 类别 | 元素 |
|----------|----------|
| **入口点** | API、表单、文件上传 |
| **数据流** | 输入 → 处理 → 输出 |
| **信任边界** | 进行认证/授权检查的位置 |
| **资产** | 密钥、PII、业务数据 |

### 优先级矩阵

```
风险 = 可能性 × 影响

高影响 + 高可能性 → 严重
高影响 + 低可能性 → 高
低影响 + 高可能性 → 中
低影响 + 低可能性 → 低
```

---

## 5. 风险优先级排序

### CVSS + 上下文

| 因素 | 权重 | 问题 |
|--------|--------|----------|
| **CVSS 评分** | 基础严重度 | 漏洞有多严重？ |
| **EPSS 评分** | 利用可能性 | 是否正在被利用？ |
| **资产价值** | 业务上下文 | 风险敞口是什么？ |
| **暴露面** | 攻击面 | 是否面向互联网？ |

### 优先级决策树

```
是否正在被主动利用（EPSS >0.5）？
├── 是 → 严重：立即处理
└── 否 → 检查 CVSS
         ├── CVSS ≥9.0 → 高
         ├── CVSS 7.0-8.9 → 结合资产价值判断
         └── CVSS <7.0 → 列入后续计划
```

---

## 6. 异常条件 (A10 - 新增)

### 失败开放 vs 失败关闭

| 场景 | 失败开放（差） | 失败关闭（好） |
|----------|-----------------|---------------------|
| 认证错误 | 允许访问 | 拒绝访问 |
| 解析失败 | 接受输入 | 拒绝输入 |
| 超时 | 无限重试 | 限制 + 中止 |

### 检查要点

- 异常处理器 catch-all 后静默吞掉
- 安全操作缺少错误处理
- 认证/授权中的竞态条件
- 资源耗尽场景

---

## 7. 扫描方法论

### 分阶段方法

```
1. 侦察
   └── 了解目标
       ├── 技术栈
       ├── 入口点
       └── 数据流

2. 发现
   └── 识别潜在问题
       ├── 配置审查
       ├── 依赖分析
       └── 代码模式搜索

3. 分析
   └── 验证与优先级排序
       ├── 消除误报
       ├── 风险评分
       └── 攻击链映射

4. 报告
   └── 可执行的发现
       ├── 清晰的复现步骤
       ├── 业务影响
       └── 修复指导
```

---

## 8. 代码模式分析

### 高风险模式

| 模式 | 风险 | 查找对象 |
|---------|------|----------|
| **查询中字符串拼接** | 注入 | `"SELECT * FROM " + user_input` |
| **动态代码执行** | 远程代码执行 | `eval()`、`exec()`、`Function()` |
| **不安全反序列化** | 远程代码执行 | `pickle.loads()`、`unserialize()` |
| **路径操作** | 目录遍历 | 文件路径中含用户输入 |
| **禁用安全机制** | 各种 | `verify=False`、`--insecure` |

### 密钥模式

| 类型 | 指示符 |
|------|-----------|
| API 密钥 | `api_key`、`apikey`、高熵值 |
| 令牌 | `token`、`bearer`、`jwt` |
| 凭据 | `password`、`secret`、`key` |
| 云 | `AWS_`、`AZURE_`、`GCP_` 前缀 |

---

## 9. 云安全考量

### 共同责任

| 层级 | 你负责 | 提供商负责 |
|-------|---------|---------------|
| 数据 | ✅ | ❌ |
| 应用 | ✅ | ❌ |
| 操作系统/运行时 | 视情况 | 视情况 |
| 基础设施 | ❌ | ✅ |

### 云特定检查

- IAM：是否应用了最小权限？
- 存储：存储桶是否公开？
- 网络：安全组是否收紧？
- 密钥：是否在使用密钥管理服务？

---

## 10. 反模式

| ❌ 不要 | ✅ 应当 |
|----------|-------|
| 在不理解的情况下扫描 | 先映射攻击面 |
| 对每个 CVE 都告警 | 按可利用性 + 资产排序 |
| 忽略误报 | 维护经过验证的基线 |
| 只修复症状 | 解决根因 |
| 部署前扫描一次 | 持续扫描 |
| 盲目信任第三方依赖 | 验证完整性，审计代码 |

---

## 11. 报告原则

### 发现的结构

每个发现都应回答：
1. **是什么？** - 清晰的漏洞描述
2. **在哪里？** - 精确位置（文件、行、端点）
3. **为什么？** - 根因解释
4. **影响？** - 业务后果
5. **如何修复？** - 具体的修复方法

### 严重程度分类

| 严重程度 | 标准 |
|----------|----------|
| **严重** | 远程代码执行、认证绕过、大规模数据泄露 |
| **高** | 数据泄露、权限提升 |
| **中** | 影响范围有限，需要特定条件 |
| **低** | 信息性、最佳实践 |

---

> **请记住：** 漏洞扫描发现问题。专家思维对重要的内容进行优先级排序。始终自问："攻击者会如何利用这一点？"

## 适用场景
本技能适用于执行上述概述中描述的工作流或操作。

## 局限性
- 仅在任务明确符合上述范围时使用本技能。
- 不要将输出视为针对特定环境的验证、测试或专家审查的替代。
- 如果缺少必需的输入、权限、安全边界或成功标准，请停下来并请求澄清。

