WatchVuln 数据源抓取特性全解析
摘要(149字) WatchVuln通过差异化抓取策略精准获取高危/严重漏洞,具备三大核心特性: 价值筛选:动态过滤机制(CISA-KEV例外),叠加标签/级别双重验证; 稳定容错:故障隔离+智能重试+异常兼容,单数据源失败不影响整体; 高效扩展:分页/增量抓取+接口化设计,支持自定义数据源快速接入。 针对主流漏洞库(阿里云、OSCS等)实现WAF绕过、字段清洗等专属优化,并通过版本迭代持续增强数
·
WatchVuln 针对不同漏洞数据源的特性设计了差异化的抓取逻辑,核心目标是精准获取高价值漏洞(高危/严重级别为主),同时保证抓取稳定性、容错性和数据完整性。以下是各维度的抓取特性说明:
一、核心抓取规则(通用特性)
1. 价值筛选规则
所有内置数据源均通过 IsValuable 方法实现高价值漏洞过滤,核心逻辑:
- 基础规则:仅抓取高危(High) 或严重(Critical) 级别漏洞(CISA-KEV 除外,全部推送);
- 增强规则:部分数据源叠加额外筛选条件(如 OSCS 需含「发布预警」标签、奇安信需含「POC公开」等标签);
- 例外规则:CISA KEV 数据源无级别过滤,所有漏洞均推送(因其为已知被利用的高危漏洞目录)。
2. 容错与稳定性
- 数据源故障隔离(v1.4.0 新增):单个数据源初始化/抓取失败不会导致整体程序退出,成功初始化的数据源正常运行,并输出失败提示;
- 错误重试机制:对 HTTP 请求失败、状态码非 200 的情况自动重试,支持自定义重试条件(如排除
context.Canceled错误); - 异常数据兼容:对缺失 CVE ID、披露时间等字段的漏洞做容错处理(如置空无效字段,不中断抓取流程)。
3. 分页与增量抓取
- 分页遍历:所有列表型数据源支持分页抓取(可通过
pageLimit限制最大分页数量),避免单次请求数据量过大; - 增量更新:通过
UniqueKey(如 AVD ID、Seebug 漏洞编号、OSCS VulnNo 等)唯一标识漏洞,结合数据库 Upsert 实现增量更新,避免重复推送。
二、各数据源专属抓取特性
1. 阿里云漏洞库(avd)
| 特性项 | 具体说明 |
|---|---|
| 抓取链路 | 列表页分页 → 提取漏洞详情页链接 → 详情页解析完整漏洞信息(描述、修复建议、CVE、披露时间等) |
| WAF 绕过 | 针对阿里云 WAF 做了 JS 动态计算 Cookie 绕过,模拟浏览器环境执行页面脚本生成合法请求参数 |
| 数据解析 | 提取「利用情况」作为标签,「解决建议」做换行/格式标准化处理,验证 CVE ID 格式有效性 |
| 字段完整性 | 必验字段:CVE ID + 披露时间(两者均为空则判定为无效数据,跳过) |
2. OSCS 开源安全情报预警(oscs)
| 特性项 | 具体说明 |
|---|---|
| 抓取方式 | 接口化抓取(非页面解析):调用 OSCS 官方接口获取列表 → 基于 mps 编号调用详情接口 |
| 筛选增强 | 基础级别筛选(高危/严重)+ 「发布预警」标签筛选,双重保证漏洞价值 |
| 数据处理 | 修复建议自动格式化(按序号罗列),忽略自动生成的无价值修复内容;披露时间从时间戳转换为标准格式 |
| 标签补充 | 自动添加「发布预警」「公开漏洞/墨菲安全独家/投毒情报」等标签,丰富漏洞上下文 |
3. 知道创宇 Seebug 漏洞平台(seebug)
| 特性项 | 具体说明 |
|---|---|
| 分页处理 | 解析页面分页控件获取总页数,按页遍历漏洞列表;限制最大分页数量避免过度抓取 |
| WAF 绕过 | 针对 Seebug WAF 分两次执行 JS 脚本计算 Cookie,模拟合法请求头/上下文 |
| 字段提取 | 提取漏洞编号、披露时间、严重级别、CVE ID(多 CVE 取第一个),「有详情」标签补充 |
| 并发安全 | 使用 sync.Mutex 保证多协程下的请求/解析安全,避免竞态问题 |
4. 启明星辰漏洞通告(venustech)
| 特性项 | 具体说明 |
|---|---|
| 过滤规则 | 主动跳过「微软月度/ Oracle 季度补丁日漏洞通告」(批量低价值漏洞) |
| 数据清洗 | 修复描述信息含「上一页/下一页」的问题(v1.3.x 修复),提取最短有效描述内容 |
| 唯一标识 | 以页面文件名 + 数据源后缀作为 UniqueKey,避免重复 |
| 链接处理 | 相对链接自动拼接为完整 URL,参考链接提取并去重 |
5. 奇安信威胁情报中心(ti)
| 特性项 | 具体说明 |
|---|---|
| 接口迁移 | v1.2.1 从 Nox 迁移回 Ti 接口,适配新数据格式;v1.2.3 修复推送数据过多问题(优化筛选规则) |
| 标签筛选 | 叠加「奇安信CERT验证」「POC公开」「技术细节公布」标签筛选,提升漏洞价值 |
6. 其他数据源
- 微步在线(threatbook)(v1.3.0 新增):抓取公众号公开的高危/严重级别漏洞,补充高价值数据源;
- CISA KEV(v1.7.0 新增):抓取美国CISA已知被利用漏洞目录,无级别过滤,全部推送;
- Struts2 安全公告:仅抓取高危/严重级别漏洞,聚焦主流框架高危漏洞;
- 长亭漏洞库:筛选高危/严重 + 标题含中文的漏洞,适配国内用户关注重点。
三、版本迭代中的抓取特性优化
| 版本 | 核心优化点 |
|---|---|
| v1.0.0 | 修复「单个数据源抓取错误导致其他数据源无新增推送」的问题,实现数据源故障隔离雏形 |
| v1.2.1 | 奇安信数据源接口迁移,简化 Grabber 定义适配无分页数据源 |
| v1.2.3 | 修复奇安信数据源推送过多问题,优化筛选规则 |
| v1.4.0 | 默认启用全部数据源,单个数据源初始化失败不退出,成功几个用几个 |
| v1.7.0 | 新增 CISA-KEV 数据源,补充蓝信/pushplus 推送(不影响抓取逻辑) |
四、抓取扩展特性
1. 自定义数据源适配
所有数据源均实现 Grabber 接口,自定义数据源只需实现以下方法:
type Grabber interface {
ProviderInfo() *Provider // 数据源元信息(名称、链接)
GetUpdate(ctx context.Context, pageLimit int) ([]*VulnInfo, error) // 核心抓取逻辑
IsValuable(info *VulnInfo) bool // 价值筛选规则
}
2. 配置化控制
- 通过环境变量/配置文件指定启用的数据源(
sources字段); - 支持黑白名单过滤:基于关键词筛选漏洞标题/描述,进一步缩小关注范围;
- 检查周期可配:通过
interval控制抓取频率(如 30m/1h),避免高频请求被风控。
3. 夜间休眠(默认特性)
默认 00:00-07:00 停止抓取/推送,可通过 --no-sleep 禁用,减少无效请求和打扰。
总结
WatchVuln 数据源抓取的核心特性是:价值优先、稳定容错、适配性强,通过差异化的抓取策略适配不同数据源的接口/页面特性,同时通过版本迭代持续优化容错性和数据质量,最终实现「只推送值得关注的高价值漏洞」的核心目标。
更多推荐
所有评论(0)