CAPTCHA 如何缓解 DDoS 攻击?

信息安全 Web应用程序 ddos 拒绝服务 验证码
2021-08-30 03:22:47

这似乎是一个简单的问题,但我没有找到答案。

CAPTCHA 的用途之一是应对缓解拒绝服务攻击。假设攻击者执行过多的登录尝试,导致其他用户无法登录;该服务可能需要在登录之前解决验证码。但是,在这种情况下,为什么在相同流量负载下登录服务失败时验证码服务会继续运行?为什么它有效?

4个回答

独角兽的魔力!!!

撇开 Snark 不谈,CAPTCHA 是一个非常糟糕的 D/DoS 保护解决方案。虽然它确实有一些影响,但这是最小的,并且很容易被攻击者补偿。

CAPTCHA 解决了这个错误的问题,并且解决得很糟糕
CAPTCHA 不会尝试对连接进行速率限制;它不是为了保护登录机制免受攻击;CAPTCHA 无法区分攻击者和合法用户。

它唯一能做的事情——而且不是很好——并不奇怪:Tell Computers and Humans Apart. 这实际上可能对你有用,如果你在一个类似矩阵的现实中,所有的计算机都是敌人,所有的人类都是盟友。
在我们的现实中,这是毫无意义的区分。从表面上看,这可能有助于防止脚本攻击 - 但即使这是真的(不是),也有很多方法可以绕过该要求 - 例如 CAPTCHA 代理(在我们向您展示 dem pr0n 之前您需要解决 CAPTCHA)和验证码农场(您可以在其中雇用一些远东人员为您“解决”验证码,每 1000 个流行音乐 4 美元)。
此外,在 DDoS 的情况下——这种攻击通常是由“政治运动”发起的——即大量的人类决定关闭某个站点。所以,是的,CAPTCHA 在这里无关紧要。

除此之外,最先进的 CAPTCHA 远远落后于最先进的 OCR。如果您希望您的用户轻松破译那些曲折的图像 - 计算机也可以做到这一点,非常好。最好的验证码以 20% 的 OCR 成功率测量 - 这实际上意味着对于每个成功的请求,攻击者只需要发送 5 个请求。对于已经计划安装 DDoS 的攻击者来说,这并不是一个能够产生重大影响的数量级。


我在此处和关于此的其他一些帖子:


TL;DR:
这个问题是基于一个错误的假设:

CAPTCHA 如何防御 DDoS 攻击?

它没有。
最多可能需要攻击者付出更多努力,但并不多。

检查验证码是否正确比在数据库中查找用户更容易/更快(这可能包括新连接、散列等)。服务器首先检查验证码,如果正确则处理登录的其余部分,如果不正确则返回错误。

重要的是要注意制作验证码图像需要一些处理,但这可以非常有效地完成预渲染图像,甚至外包给其他服务(如 reCAPTCHA)。

验证码可防止攻击者执行更多的数据库密集型操作,这些操作可能会通过 CPU 或内存耗尽导致 DoS。但是,只有在生成验证码图像所导致的 CPU 和内存消耗必须小于正常页面请求的情况下才会出现这种情况。确保这一点的一种方法是使用场外验证码服务,例如 reCAPTCHA。

通常,验证码的 DoS 预防方面是使用它作为登录安全措施的副产品,以防止自动登录尝试。

我不认为验证码可以帮助抵御拒绝服务攻击。如果验证码算法是 CPU 密集型的,我认为他们甚至可以构成一个 DoSing 站点的线程。

为了在服务器上成功执行 DoS 攻击,攻击者的成本应该低于被攻击服务器的成本。即使他使用验证码,服务器的成本也很高。服务器需要生成验证码并将整个页面传输给客户端。

编辑:简而言之:如果验证码的生成成本过高,则验证码可能会适得其反。