许多 Web 应用程序在近期遭受了 credential stuffing(凭据填充)攻击。在这些攻击中,攻击者会使用来自 泄露凭据 数据库的用户名/密码对,发起大量登录尝试。
Cloudflare 通过 Cloudflare Web Application Firewall (WAF) 为您提供自动化的泄露凭据检查。
WAF 为此检查提供两种机制:
-
Exposed Credentials Check Managed Ruleset,其中包含面向热门 CMS 应用程序的预定义规则。为给定 zone 启用此规则集后,即可立即对这些知名应用程序启用泄露凭据检查。该托管规则集对所有付费套餐可用。
-
在账户级别编写自定义规则的能力,以根据您的条件检查泄露凭据。此配置选项面向拥有付费附加组件的 Enterprise 客户。
Cloudflare 会定期更新支持泄露凭据检查功能的泄露凭据数据库。
明文的用户名和密码凭据绝不会离开 Cloudflare 网络。WAF 在判断是否存在先前泄露的凭据时,仅使用用户名和密码的匿名化版本。Cloudflare 采用基于 k-Anonymity 数学性质的方法,详见以下博文:Validating Leaked Passwords with k-Anonymity ↗。
当 WAF 检测到泄露凭据时,可以执行以下操作之一:
-
Exposed-Credential-Check Header(泄露凭据检查标头):向包含泄露凭据的 HTTP 请求添加新的 HTTP 标头。源站上的应用程序随后可以强制重置密码、启动双因素身份验证流程,或执行任何其他操作。添加的 HTTP 标头名称为
Exposed-Credential-Check,其值为1。在 Security Events 中,该操作名称为Rewrite。 -
Non-Interactive Challenge(非交互式质询):向使用泄露凭据发出 HTTP 请求的客户端展示非交互式质询。
-
Managed Challenge:有助于减少互联网上用户花费在解决 CAPTCHA 上的时间。根据请求的特征,Cloudflare 将基于特定条件动态选择适当的质询类型。
-
Block(阻止):阻止包含泄露凭据的 HTTP 请求。
-
Log:仅在 Enterprise 套餐上可用。在 Cloudflare 日志中记录包含泄露凭据的请求。建议在提交更严厉的操作之前,用于验证规则。
-
Interactive Challenge(交互式质询):向使用泄露凭据发出 HTTP 请求的客户端展示交互式质询。
Exposed Credentials Check Managed Ruleset 中规则的默认操作是 Exposed-Credential-Check Header(在 API 中名为 rewrite)。
Cloudflare 建议您仅使用以下操作:Exposed-Credential-Check Header(在 API 中名为 rewrite)和 Log(log)。
除启用 Exposed Credentials Check Managed Ruleset 外,您还可以在自定义规则中检查泄露凭据。一个常见用例是在应用程序的最终用户身份验证端点上创建自定义规则,以检查泄露凭据。检查泄露凭据的规则会在速率限制规则之前运行。
要在自定义规则中检查泄露凭据,请在账户级别的规则定义中包含泄露凭据检查,并指定如何从 HTTP 请求中获取用户名和密码值。更多信息请参阅 创建检查泄露凭据的自定义规则。