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 数据源抓取的核心特性是:价值优先、稳定容错、适配性强,通过差异化的抓取策略适配不同数据源的接口/页面特性,同时通过版本迭代持续优化容错性和数据质量,最终实现「只推送值得关注的高价值漏洞」的核心目标。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐