跳转到主要内容
通过 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

操作路径:HackerOne › Engagements › 项目右侧的菜单按钮 › Settings › Automation › Webhooks › New webhook
2

选择事件

操作路径:HackerOne › Engagements › 项目右侧的菜单按钮 › Settings › Automation › Webhooks › New webhook选择 Let me specify individual events,勾选以下事件:按需加选 report_needs_more_info、report_retesting 等事件,它们只会更新同一份报告的告警。最后点击 Add webhook。
必须勾选 report_resolved 和四个 report_closed_as_* 事件,否则报告关闭后 Flashduty 中的告警不会恢复。
不含报告的事件(如 program_hacker_joined),Flashduty 返回成功但不创建告警。
3

验证生命周期

操作路径:HackerOne › Engagements › 项目右侧的菜单按钮 › Settings › Automation › Webhooks提交或分诊一份报告,确认 Flashduty 收到活动告警;然后在 HackerOne 中将该报告关闭(如 Resolved),确认原告警恢复。编辑 Webhook 时可点击 Test request 发送示例请求,用于确认地址可达。如果示例请求在 Flashduty 中生成了告警,手动关闭即可。在 Webhook 编辑页的 Recent deliveries 中可以查看每次推送的请求和 Flashduty 的响应。Test request 只发送示例请求、验证地址可达;是否创建告警取决于示例内容,请以真实报告的触发和恢复为准。

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)决定,而不是事件名: 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。