我怎样才能保护我的网站免受 bitquatting?

信息安全 Web应用程序 比特抢注
2021-08-21 04:57:12

我刚刚阅读了一篇关于bitquatting的文章(它指的是注册一个与流行域略有不同的域名),我担心它如何允许攻击者在我的网站上加载自己的资产。

例如,如果我位于 的网站https://www.example.org/加载位于 的脚本文件https://www.example.org/script.js,则攻击者可以注册dxample.org并托管恶意 JS 文件,该文件将由我网站的某些用户下载并执行。

有没有针对它的标准防御技术?

4个回答

有没有针对它的标准防御技术?

正如其他答案中所述,查询域名时的位错误可能不会对您的 Web 应用程序构成现实威胁。但假设它们是,那么子资源完整性(SRI) 会有所帮助。

使用 SRI,您可以在integrity属性中指定要加载的资源的哈希值,如下所示:

<script src="http://www.example.org/script.js"
    integrity="sha256-DEC+zvj7g7TQNHduXs2G7b0IyOcJCTTBhRRzjoGi4Y4="
    crossorigin="anonymous">
</script>

从现在开始,脚本是否由于位错误(或被 MITM 修改)而从不同的域中获取无关紧要,因为如果其内容的哈希值不匹配,您的浏览器将拒绝执行该脚本诚信价值。因此,当一个位错误或其他任何原因使 URL 解析为由攻击者控制dxample.org时,他们可以成功注入的唯一脚本将是与哈希匹配的脚本(即,无论如何您打算加载的脚本)。

SRI 的主要用例是从可能不受信任的 CDN 中获取脚本和样式表,但它适用于您希望确保请求的资源未被修改的任何场景。

请注意,SRI 目前仅限于使用scriptlink但可能稍后会支持其他标签:

注意:本规范的未来修订版可能包括对所有可能的子资源的完整性支持,即 、aaudioembediframeimglinkobjectscript元素sourcetrackvideo

(来自规范)

(另见此错误票)

你的担心很可能是没有根据的。

首先,您需要意识到这些内存故障的可能性有多大。撰写上述文章的人在 7 个月的时间里记录了对 Internet 上访问量最大的一些域的 32 个克隆的请求。这 52,317 次点击必须在数千亿次请求中。除非你在 Facebook 的规模上运营一个网站,否则攻击者必须非常幸运才能在他们的 bitquatting 域中获得一个不幸的受害者。

然后你必须注意内存错误会导致一些故障。作者写道:

这些请求 [...] 显示出几个位错误的迹象。

如果受害者的系统严重受损,以至于他们甚至无法发送 HTTP 请求而不会出现一些位错误,那么他们从其中下载的任何恶意软件都可能无法在没有错误的情况下执行。它甚至能够在这种情况下启动,这是一个奇迹。

关于那些在“Web 应用程序缓存、DNS 解析器和代理服务器”中发现位错误并因此影响多个用户的情况(其中一些可能不幸地获得了足够多的处于可执行状态的恶意软件):在这些情况下,HTTP 响应将来自与客户端请求不同的服务器。因此,当您仅使用 HTTPS 时(我假设您会这样做,否则您会担心更严重的攻击),那么它们的签名将不会被检出,浏览器也不会下载该资源。

此外,当路由上存在 RAM 损坏的系统时,HTTPS 还会降低成功连接的可能性。TLS 加密消息中的单个位翻转将阻止哈希值检出,因此接收方将拒绝它。

tl;dr:别担心,只设置 HTTPS。

我怀疑这篇文章的可靠性。虽然在 DEFCON 上进行了讨论并作为白皮书发布,但我对实验结果表示严重担忧。

根据@mootmoot 的评论,作者未能从比特的随机波动中确定确定性编程错误。

我的有关声明是

在记录期间[9月。2010 / 2011 年 5 月,ndr] 共有来自 12,949 个唯一 IP 地址的 52,317 个 bitquat 请求

不,作者仅证明他的抢注域名已被联系,但可能未能提供额外信息

  1. 该流量占原始 CDN 网络的百分比(这在理论上是可以验证的,但我没有这些数字)
  2. 源引荐域的出现

第二个非常重要,因为它有助于将确定性编程失败与位的随机波动隔离开来。

考虑以下示例:如果您发现任何gbcdn.net带有referer 的(facebook squat)条目,https://facebook.com您可能已经找到了bitsquat。

相反,如果您从一个鲜为人知的网站中找到多个条目,您可以检查以找到带有损坏的类似按钮,那么问题可能是由于程序员没有正确复制/粘贴代码,或者甚至发生了位翻转程序员的IDE。谁知道...

免责声明:我是 Emaze Networks SpA 的员工

防御此类攻击的一种方法是不允许攻击者注册相似的域名。

为了实现这一点,您可以将许多被域名抢注/域名抢注的域名与您的主域名一起注册,但这对于所有比特域名抢注/域名抢注的情况来说是不可能的,因为它们可能是数十亿(也可以考虑 unicode 等!)。

另一种方法是定期监控注册的域,如果您发现可疑域,您可以检查它的作用,如果它似乎是恶意站点,您可以将其报告给注册商并要求他们传递所说的所有权域给你。

我们有一项名为Precog的小型服务,它通过聚合来自不同来源的注册商信息并运行各种查询来检测域名抢注/错别字抢注/punycode-squatting 域名:您可以注册您的品牌,输入一些关键字,我们会与您联系如果注册了可疑域。

显然,我们的工具考虑了二级域,但也能够检测到许多三级(或更多)域的注册,因此我们可能能够检测到有人app1e.account.com试图窃取您的苹果凭据。


我必须补充一点:我认为这种攻击的最大用例不是因为有人输入错误的域而“幸运地”接收到请求,而是将该域用作网络钓鱼域。因此,人们会注册该网站àpple.com并发送大量看起来像 Apple 电子邮件的电子邮件,并试图让一些人在他们的页面上插入他们的凭据/信用卡信息。