使用 AI 寻找授权漏洞
Bug bounty 项目正在走向终结。Nextcloud 因为低质量的 AI 报告停止了付费奖励。Mattermost 结束了其项目。Internet Bug Bounty 将赔付金额削减了 80%。
问题不在于 AI 无法发现漏洞,而在于 AI 生成了大量看起来真实但实际上是错误的报告。分拣(Triage)团队正淹没在这些噪音之中。
到 2026 年,你需要的技能不再是寻找漏洞。一个模型会在午餐前就给你提供五十个想法。真正的技能是证明其中四十九个是错误的。你需要一种能够产生正确负例(correct negatives)的方法。
对于源代码可见的代码,请使用这种两阶段方法:
扇出 (Fan-out)(廉价模型) 将授权面拆分为细小的部分。并行读取每个部分。寻找失效的规则。寻找对象在加载时没有进行所有者检查的地方。寻找跳过安全关卡的路径。专注于寻找每一个可能的线索。要做好面对大量误报(false positives)的准备。
对抗性验证 (Adversarial Verification)(昂贵模型) 获取每一个线索并尝试将其证伪。从“该线索是错误的”这一假设开始。只有当你能展示出证明安全检查缺失的确切代码行时,该线索才能存活。你必须证明该路径是可达的,并且没有任何其他因素会阻止攻击。
最重要的输出是证伪列表(list of refutations)。一份说明某事“不是”漏洞的原因清单,可以建立起与分拣人员之间的信任。
我测试了 Ory Kratos,这是一个身份服务器。该系统处理诸如更改密码或电子邮件等敏感操作。这是一个高风险领域。
第一阶段发现了一个线索。它看起来像是系统处理 OIDC 流时的一个重大缺陷。模式匹配工具会将其称为高严重性漏洞。
我使用第二阶段对其进行了验证。我发现缺失的检查并不会导致漏洞利用。系统使用实时会话 Cookie,并在最后一步重新检查权限。该缺陷并不影响安全保障。
如果我报告了那个“漏洞”,我会失去公信力。真正的价值在于保持沉默的信心。
同一种方法在另一个目标中发现了一个真实的漏洞。一个次要入口点忘记镜像授权检查。即使用户的访问权限已被撤销,他们仍可以通过侧门进入。
漏洞猎寻的赢家将专注于信号,而非数量。利用 AI 阅读比人类更多的代码。然后,在提交报告之前,利用 AI 来证明你自己是错的。
Optional learning community: https://t.me/GyaanSetuAi
