Skip to main content
通过 HackerOne 项目(Program)的 Webhook,将漏洞报告(Report)同步到 Flashduty On-call。每份 HackerOne 报告对应一条 Flashduty 告警:报告提交、分诊、重新打开时触发或更新这条告警,报告被解决或以其他方式关闭时告警恢复。

在 Flashduty On-call


您可通过以下两种方式获取集成推送地址,任选其一即可。

使用专属集成

  1. 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
  2. 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
  3. 选择 HackerOne,点击 保存
  4. 打开生成的集成卡片,复制 推送地址

使用共享集成

  1. 进入 Flashduty 控制台,选择 集成中心 → 告警事件
  2. 选择 HackerOne,填写集成名称
  3. 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
  4. 点击 保存,复制生成的 推送地址

在 HackerOne 中配置


Webhook 按项目配置,并继承创建者的权限:创建者需要能查看该项目的报告,并有权修改项目设置。
1

新建 Webhook

  1. 登录 HackerOne,进入 Engagements,点击目标项目右侧的菜单按钮,选择 Settings
  2. 进入 Automation → Webhooks,点击 New webhook
  3. 将 Flashduty 集成的完整推送地址粘贴到 Payload URL,地址中需包含 integration_key
  4. Secret 可以留空。Flashduty 通过推送地址中的 integration_key 识别集成,不校验 X-H1-Signature 签名
2

选择事件

选择 Let me specify individual events,勾选以下事件:按需加选 report_needs_more_info、report_retesting 等事件,它们只会更新同一份报告的告警。最后点击 Add webhook。
必须勾选 report_resolved 和四个 report_closed_as_* 事件,否则报告关闭后 Flashduty 中的告警不会恢复。
也可以选择 Send me everything。评论、赏金等事件同样按报告当前状态处理:报告仍打开时更新告警,报告已关闭时不会产生新告警。program_hacker_joined 等项目事件不含报告,Flashduty 返回成功但不创建告警。
3

验证生命周期

提交或分诊一份报告,确认 Flashduty 收到活动告警;然后在 HackerOne 中将该报告关闭(如 Resolved),确认原告警恢复。编辑 Webhook 时可点击 Test request 发送示例请求,用于确认地址可达。如果示例请求在 Flashduty 中生成了告警,手动关闭即可。在 Webhook 编辑页的 Recent deliveries 中可以查看每次推送的请求和 Flashduty 的响应。

Alert Key


Flashduty 使用报告 ID(Webhook 中的 data.report.id)作为 Alert Key。HackerOne 的每次推送都携带该报告的完整信息,同一份报告在提交、分诊、关闭、重新打开时的 data.report.id 相同,它也是报告地址 https://hackerone.com/reports/<id> 中的编号。 标题、状态、严重程度的变化都不会改变 Alert Key。含有报告但缺少 data.report.id 的推送会被拒绝。

状态和告警等级


告警状态由报告当前状态(data.report.attributes.state)决定,而不是事件名: 其他状态值会被拒绝,HackerOne 的 Recent deliveries 中会显示失败。 告警等级由报告的严重程度(data.report.relationships.severity.data.attributes.rating)决定: 分诊时调整了严重程度的报告,会以新的等级更新原告警。

标签


告警描述为报告的漏洞详情(vulnerability_information),超过 8 KB 的部分会被截断。

排查问题


  • HackerOne 显示推送失败:在 Webhook 编辑页的 Recent deliveries 中点开失败的请求,在 Response 中查看 Flashduty 的返回信息;确认 Payload URL 完整且包含 integration_key
  • 告警没有恢复:确认已勾选 report_resolved 和四个 report_closed_as_* 事件。未勾选这些事件时关闭的报告,对应告警需在 Flashduty 中手动关闭
  • 收不到某些报告:Webhook 继承创建者的权限,确认创建者能看到这些报告
更多字段含义请参阅 HackerOne Webhooks 和 HackerOne 帮助中心:Webhooks。