[#]: collector: (lujun9972)
[#]: translator: (HankChow)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-11899-1.html)
[#]: subject: (How to stop typosquatting attacks)
[#]: via: (https://opensource.com/article/20/1/stop-typosquatting-attacks)
[#]: author: (Sam Bocetta https://opensource.com/users/sambocetta)

如何防范误植攻击
======

> <ruby>误植<rt>Typosquatting</rt></ruby>是一种引诱用户将敏感数据泄露给不法分子的方式，针对这种攻击方式，我们很有必要了解如何保护我们的组织、我们的开源项目以及我们自己。

![Gears above purple clouds][1]

除了常规手段以外，网络罪犯还会利用社会工程的方式，试图让安全意识较弱的人泄露私人信息或是有价值的证书。很多[网络钓鱼骗局][2]的实质都是攻击者伪装成信誉良好的公司或组织，然后借此大规模传播病毒或恶意软件。

<ruby>[误植][3]<rt>Typosquatting</rt></ruby>就是其中一个常用的手法。它是一种社会工程学的攻击方式，通过使用一些合法网站的错误拼写的 URL 以引诱用户访问恶意网站，这样的做法既使真正的原网站遭受声誉上的损害，又诱使用户向这些恶意网站提交个人敏感信息。因此，网站的管理人员和用户双方都应该意识到这个问题带来的风险，并采取措施加以保护。

一些由广大开发者在公共代码库中维护的开源软件通常都被认为具有安全上的优势，但当面临社会工程学攻击或恶意软件植入时，开源软件也需要注意以免受到伤害。

下面就来关注一下误植攻击的发展趋势，以及这种攻击方式在未来可能对开源软件造成的影响。

### 什么是误植？

误植是一种非常特殊的网络犯罪形式，其背后通常是一个更大的网络钓鱼骗局。不法分子首先会购买和注册域名，而他们注册的域名通常是一个常用网站的错误拼写形式，例如在正确拼写的基础上添加一个额外的元音字母，又或者是将字母“i”替换成字母“l”。对于同一个正常域名，不法分子通常会注册数十个拼写错误的变体域名。

用户一旦访问这样的域名，不法分子的目的就已经成功了一半。为此，他们会通过电子邮件的方式，诱导用户访问这样的伪造域名。伪造域名指向的页面中，通常都带有一个简单的登录界面，还会附上熟悉的被模仿网站的徽标，尽可能让用户认为自己访问的是真实的网站。

如果用户没有识破这一个骗局，在页面中提交了诸如银行卡号、用户名、密码等敏感信息，这些数据就会被不法分子所完全掌控。进一步来看，如果这个用户在其它网站也使用了相同的用户名和密码，那就有同样受到波及的风险。受害者最终可能会面临身份被盗、信用记录被破坏等危险。

### 最近的一些案例

从网站的所有方来看，遭到误植攻击可能会带来一场公关危机。尽管网站域名的所有者没有参与到犯罪当中，但这会被认为是一次管理上的失职，因为域名所有者有主动防御误植攻击的责任，以避免这一类欺诈事件的发生。

在几年之前就发生过[一起案件][4]，很多健康保险客户收到了一封指向 we11point.com 的钓鱼电子邮件，其中 URL 里正确的字母“l”被换成了数字“1”，从而导致一批用户成为了这一次攻击的受害者。

最初，与特定国家/地区相关的顶级域名是不允许随意注册的。但后来国际域名规则中放开这一限制之后，又兴起了一波新的误植攻击。例如最常见的一种手法就是注册一个与 .com 域名类似的 .om 域名，一旦在输入 URL 时不慎遗漏了字母 c 就会给不法分子带来可乘之机。

### 网站如何防范误植攻击

对于一个公司来说，最好的策略就是永远比误植攻击采取早一步的行动。

也就是说，在注册域名的时候，不仅要注册自己商标名称的域名，最好还要同时注册可能由于拼写错误产生的其它域名。当然，没有太大必要把可能导致错误的所有顶级域名都注册掉，但至少要把可能导致错误的一些一级域名抢注下来。

如果你有让用户跳转到一个第三方网站的需求，务必要让用户从你的官方网站上进行跳转，而不应该通过类似群发邮件的方式向用户告知 URL。因此，必须明确一个策略：在与用户通信交流时，不将用户引导到官方网站以外的地方去。在这样的情况下，如果有不法分子试图以你公司的名义发布虚假消息，用户将会从带有异样的页面或 URL 上有所察觉。

你可以使用类似 [DNS Twist][5] 的开源工具来扫描公司正在使用的域名，它可以确定是否有相似的域名已被注册，从而暴露潜在的误植攻击。DNS Twist 可以在 Linux 系统上通过一系列的 shell 命令来运行。

还有一些网络提供商（ISP）会将防护误植攻击作为他们网络产品的一部分。这就相当于一层额外的保护，如果用户不慎输入了带有拼写错误的 URL，就会被提示该页面已经被阻止并重定向到正确的域名。

如果你是系统管理员，还可以考虑运行一个自建的 [DNS 服务器][6]，以便通过黑名单的机制禁止对某些域名的访问。

你还可以密切监控网站的访问流量，如果来自某个特定地区的用户被集体重定向到了虚假的站点，那么访问量将会发生骤降。这也是一个有效监控误植攻击的角度。

防范误植攻击与防范其它网络攻击一样需要保持警惕。所有用户都希望网站的所有者能够扫除那些与正主类似的假冒站点，如果这项工作没有做好，用户的信任对你的信任程度就会每况愈下。

### 误植对开源软件的影响

因为开源项目的源代码是公开的，所以其中大部分项目都会进行安全和渗透测试。但错误是不可能完全避免的，如果你参与了开源项目，还是有需要注意的地方。

当你收到一个不明来源的<ruby>合并请求<rt>Merge Request</rt></ruby>或补丁时，必须在合并之前仔细检查，尤其是相关代码涉及到网络层面的时候。不要屈服于只测试构建的诱惑； 一定要进行严格的检查和测试，以确保没有恶意代码混入正常的代码当中。

同时，还要严格按照正确的方法使用域名，避免不法分子创建仿冒的下载站点并提供带有恶意代码的软件。可以通过如下所示的方法使用数字签名来确保你的软件没有被篡改：

```
gpg --armor --detach-sig \
  --output advent-gnome.sig \
  example-0.0.1.tar.xz
```

同时给出你提供的文件的校验和：

```
sha256sum example-0.0.1.tar.xz > example-0.0.1.txt
```

无论你的用户会不会去用上这些安全措施，你也应该提供这些必要的信息。因为只要有那么一个人留意到签名有异样，就能为你敲响警钟。

### 总结

人类犯错在所难免。世界上数百万人输入同一个网址时，总会有人出现拼写的错误。不法分子也正是抓住了这个漏洞才得以实施误植攻击。

用抢注域名的方式去完全根治误植攻击也是不太现实的，我们更应该关注这种攻击的传播方式以减轻它对我们的影响。最好的保护就是和用户之间建立信任，并积极检测误植攻击的潜在风险。作为开源社区，我们更应该团结起来一起应对误植攻击。

--------------------------------------------------------------------------------

via: https://opensource.com/article/20/1/stop-typosquatting-attacks

作者：[Sam Bocetta][a]
选题：[lujun9972][b]
译者：[HankChow](https://github.com/HankChow)
校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出

[a]: https://opensource.com/users/sambocetta
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/chaos_engineer_monster_scary_devops_gear_kubernetes.png?itok=GPYLvfVh (Gears above purple clouds)
[2]: https://www.cloudberrylab.com/resources/guides/types-of-phishing/
[3]: https://en.wikipedia.org/wiki/Typosquatting
[4]: https://www.menlosecurity.com/blog/-a-new-approach-to-end-typosquatting
[5]: https://github.com/elceef/dnstwist
[6]: https://opensource.com/article/17/4/build-your-own-name-server
