最危险的互联网漏洞正在逼近

阅读时间 13 分钟,快速阅读仅需 5 分钟。

DNS 劫持+权威机构颁发的伪造证书,可以毁掉整个互联网,这不是危言耸听,而是正在发生。

对自己最大的伤害,往往来自最信任的人。比如你女朋友欺骗你的感情,和别人上床,回来你发现她衣服湿了,她还告诉你是你梦游时把她弄湿的,你绝对信任她,以为自己在梦中真的那么厉害。

这个事例映射到互联网,就是你以为你访问的那个加密的网站是绝对安全的,其实你被欺骗了,你账户里的钱,你邮件里和合作伙伴谈论的商业机密,都被窃听了。

这样的事似乎离我们很遥远,其实不然,最近的发生的一次互联网事件,暗示了互联网最危险的漏洞,你的隐私,可能被他人看得一清二楚。

 

这个漏洞有多严重?

在说漏洞的具体情况之前,我们先来了解一下这个漏洞带来的危害,相信这是我们最迫切关心的。你这两天并没有在很多媒体看到这个漏洞的报道,是因为它本质上不是一个漏洞,而可能是有组织的人为「窃听」,我们无意去猜测背后是否有不可告人的阴谋或其它,但这个事件,预示着一个极其危险的互联网漏洞。

  • 可能导致你的帐号密码被盗
  • 可能导致你的机密邮件被第三方查看
  • 可能导致你蒙受金钱损失
  • 甚至可能导致你被查水表
  • 先简单了解几个词汇

要了解这个漏洞,并做好防范,我们需要先了解一些基本概念。

浏览器

你用来浏览网页的工具就是浏览器,一般来说,你在浏览器里浏览网页,地址栏是以 http 开头的。

HTTPS

HTTP 方式的浏览是不安全的、容易被窃听的,大部分网站都通过这样的方式让我们查看,但一些需要处理个人隐私信息的网站,都会采用 HTTPS 的方式。HTTPS 的主要思想是在不安全的网络上创建一安全信道,对窃听提供合理的防护。

可能吧使用的就是 HTTPS 协议。

证书

要让 HTTPS 方式的访问成为可行,就需要网站有证书。证书这个概念比较复杂,我们用最简单的方式来理解。证书可以认为是一个网站的护照,当我们通过浏览器打开一个经过加密的网页时,浏览器会去查看网站的护照是否属于网站本人,如果属于,则认为这次浏览是安全的。和护照一样,证书是私有物品,需要谨慎保管,丢了之后要重新办理。

权威机构

那么问题来了,如果有网站伪造「护照」怎么办?这时我们很容易想到,只有政府才能颁发护照,我们信任颁发护照的政府,所以信任持有本人护照的人是真实的。网站也是如此,证书不是随便谁都可以颁发,只有权威机构颁发的证书,浏览器才会信任,才会认为该次浏览是安全的。

每个浏览器在安装时,都会自带一个可信任权威机构的名单。

HTTPS 安全机制的闭环

综合上面几个概念,我们可以形成这样的闭环:网站向权威机构申请证书,权威机构验证了网站的真实性后为其颁发证书,当用户访问网页时,网站持着自己的证书来到用户面前,浏览器检查证书确实属于这个网站,并且来自信任机构,于是浏览器告诉用户,你这次访问是安全的,不被监听的。

DNS 解析

网站的真实存在是一台服务器,而要定位一台服务器,需要知道它的 IP 地址,比如当我们访问 google.com 时,其实是在访问它的一台地址为 173.194.72.138 的服务器。

当我们在浏览器敲一个域名时,比如 google.com ,电脑会先通过本地的互联网提供商(比如电信、联通)去寻找这个网站的 IP,进而建立起连接。这个过程,称为 DNS 解析。

加密的互联网世界更安全

Google 及其旗下的 Youtube、Blogspot 等网站的流量总和在全球排行第一,Google 很早就意识到加密浏览的重要性,所以 Google 在其旗下的所有网站都部署了 HTTPS 访问机制,当用户使用 HTTP 访问时,也被强行跳转到 HTTPS。这样的举措,让用户在 Google 进行搜索、浏览等行为时,大大地避免了被窃听的可能性。

越来越多网站支持加密访问

除了 Google 之外,许多网站都已默认支持加密访问,在全球流量排行前10的网站里,除了3个中国的网站,其余7个国外的,都已经默认采用了 HTTPS 访问。

轻单也非常重视用户的隐私,所以我们也默认采用了 HTTPS,这是与国际接轨的做法。

浏览器是如何保护用户加密访问的安全的

在 「2.5 HTTPS 安全机制的闭环」里其实已经大致讲了浏览器的安全机制,这里再补充一点,较为现代的浏览器(指 Chrome, Firefox 等)都会在线推送信任权威机构的名单,一旦某个机构不被信任,用户浏览器马上就会有所反应。

权威机构颁发可信赖的证书确保访问网站的真实性

权威机构的数量是有限的,这样才能保证证书的可信性,如果谁都可以颁发证书,就像谁都可以印刷护照,那么护照就没有真实性可言了。浏览器默认对权威机构是绝对信任的,只要是权威机构颁发的证书,浏览器就会信任。

你信任你信任的是能信任的?

看看我们如何一步一步地被「窃听」。

拙劣的伪造:密码钓鱼

我们可能会收到一些钓鱼邮件,被告知需要去更改某个网站的密码,邮件里往往会给出那个网站的链接,但点击过去是一个链接和目标网站长得很像,界面和目标网站一模一样的钓鱼页面,如果你在这个页面输入了帐号密码,那么你的信息就会被窃取。

这种伪造,只要眼神好一点,一般都不会上当。

高级一点的伪装:DNS 劫持

如果我们访问某个域名时,域名解析出来的 IP 地址不属于这个网站,而是另一个,会是怎样的情况?

我们经常看到类似的新闻,在某某城市访问 Google,打开后变成了百度,又或者是当地运营商的搜索页面。这就是 DNS 劫持。这个例子是比较明显的 DNS 劫持。

不明显的 DNS 劫持是,当你敲入 icbc.com.cn 时,你打开的页面长得和工商银行一模一样,你以为你在访问工商银行,但其实那是一个伪造的页面,目的是为了盗取你的帐号密码。

再高级一点:伪造加密证书

对于那些加密的页面,光用 DNS 劫持是达不到窃听信息的效果的,因为用户被劫持到的 IP 上没有真实网站的证书(护照),浏览器就会认为不安全,这时用户就会离开。所以,要进一步完成劫持,就需要伪造一份证书,欺骗用户认为他访问的就是他想要访问的网站。

最高级:真实的「假」证书

一个网站被 DNS 劫持和伪造证书,浏览器还是很容易能识破,因为浏览器内置了一份可信的权威机构名单,只有这些权威机构颁发的证书,浏览器才会认为是安全的。伪造的证书不是来自权威机构,浏览器自然会告诉用户他访问的网页不安全。

那么,如果伪造的证书来自一个权威机构如何?如果一个网站被 DNS 劫持的同时,伪造的网站也提供了来自权威机构的「真实证书」,这时浏览器会认为这次访问是安全的,而用户的行为则会全部被这个伪造的网站所监听。

为什么会有真实的「假」证书?

不是说只有网站像权威机构申请证书,机构验明身份后才会颁发证书么,劫持者本身不是目标网站的所有者,如果不是目标网站出现漏洞,他理论上并不能拥有一份目标网站的证书,那么,他是如何「欺骗」权威机构,来获得一份「真实」的证书呢?

一种可行的做法是,权威机构知法犯法,权威机构生成了一份真实的「假」证书。

真实案例:冒牌的 Google

Google 发现,名为MCS集团的代理证书颁发机构发行了多个 Google 域名的假证书,而MCS集团的中级证书则来自中国的CNNIC。

CNNIC 全名为中国互联网络信息中心,从2010年开始,它被所有浏览器内置为可信任的证书颁发权威机构。

这些证书冒充成受信任的 Google 域名,被用于部署到网络防火墙中,用于劫持所有处于该防火墙后的HTTPS网络通信,并且绕过了浏览器警告。

这样,用户在访问 Gmail 时,所有数据都会被窃听,这种窃听几乎是不花吹灰之力的。

案例扩散:公共网络安全问题

若冒充 Google 这事没有被发现,这种模式被扩散,会发生什么?其实猜测的结论是显而易见的,比如你在公共场所上网,很有可能被盗取帐号密码,哪怕你访问的网站支持 HTTPS。

权威机构 CNNIC 为什么要伪造证书?

前面的案例引出一个问题,浏览器内置的权威机构是默认可信的,那意味着这些机构并不会随便颁发一份真实的「假」证书,这样的话,信誉就会扫地。那么,冒充 Google 的证书是怎样来的呢?CNNIC 为什么要这样做?

让我们站在人民的角度来思考这个问题。

Gmail 曾一直受到来自亚洲的攻击

Gmail 安全性最高的邮箱之一,根据媒体报道,Gmail 一直受到来自中国的攻击,这些工具包括钓鱼、窃听,甚至入侵。其实我们都知道,用 Gmail 的,不法分子居多,我们当然要用极端手段来找到这些不法分子。

中国一直依法管治互联网

外交部发言人一直强调,中国依法管治互联网,我们也「深信」这一点。

CNNIC 是有背景的事业单位

CNNIC 是经中华人民共和国国务院主管部门批准,于1997年6月3日成立的互联网管理和服务机构。中国互联网络信息中心成立伊始,由中国科学院主管;2014年末,改由中央网络安全和信息化领导小组办公室、国家互联网信息办公室主管。

CNNIC 可能参与依法管治互联网

CNNIC 除了是权威的证书颁发机构,也是.cn域名的管理机构,我们都知道,注册.cn域名需要身份证备案,我们有理由相信,CNNIC 参与了依法管治互联网。

这可能是一次不小心被暴露的实验性事件

CNNIC 这次伪造证书的行为,可能是被「不法分子」利用的实验性行为,比如,可能 CNNIC 内部有1-2名员工,试图入侵他们的粉丝–苍井空老师的 Gmail 帐号,但苦于 Gmail 实在太难破解,只好出此下策。

如果这事没有被发现,Gmail 在国内可能会解封

我们知道,很多不法分子利用 Gmail 传播非法信息,这些不法分子一定要被惩戒,一种可行的做法是将 Gmail 解封,同时采用 DNS 劫持和伪造真实证书的方法,窃听他们的邮件来往,这毫无疑问是抓捕不法分子的最佳做法,值得支持哦。

各界反应

Google

迅速通知各大浏览器厂商,并通过推送更新,将MCS集团的证书设置为不信任。同时倡议互联网证书颁发机制一定要公开、透明。

Firefox

Firefox (Mozilla) 在博客中提到,他们接到了 Google 的通知,并会在下一版本( Firefox 37)里解决证书的信任问题。

其实从2010年开始,就有人在 Mozilla 的论坛里倡议 Firefox 移除 CNNIC,但因为一直没有证据表明 CNNIC 参与了劫持,所以 Mozilla 并没有理会此事。

一些网友

在一些互联网社区,比如知乎、V2EX,我看到了不少网友重新讨论起 CNNIC 的可信性,在很多互联网工作者的眼中,CNNIC 是不值得信任的机构。

为什么 CNNIC 是一个不值得信任的机构

制造流氓软件的

CNNIC 制作的上网辅助软件「中文上网官方版软件」,曾引起广泛争议。该软件因其强制安装和无法彻底卸载,一度被北京市网络行业协会列入10款流氓软件名单并勒令整改。

混淆「中文上网」和「中文域名」

曾经,360 安全卫士批评CNNIC,打着官方的旗号,混淆该软件与中文域名之区别,令公众误以为国家发展中文域名,就等于支持该(流氓)软件。

cn 域名胡乱管理

为了推广.cn域名,CNNIC 曾经让 .cn 域名1元即可注册,导致 .cn 域名泛滥。

2009年12月9日,CNNIC被中国中央电视台曝光对.cn域名管理不善,致使色情网站可以轻而易举的更换域名。12月11日晚,CNNIC发出公告,公告暗指从2009年12月14日9时起,禁止个人注册CN域名。

2010年1月底,CNNIC要求所有cn域名提交个人身份证复印件,由于没有出台适当的隐私保护条例,遭cn域名持有者抵制。

这一切,其实都是因为滥推广 .cn 域名导致的。

冒牌的非营利性机构

CNNIC 既不是事业单位,也不是企业或社团,号称非营利机构,但却在经营域名注册等业务。

制造假证书

在冒充 Google 之前,其实在2013年,也曾有人自签CNNIC证书对github进行中间人攻击,但没有证据显示那是 CNNIC 官方所为,因为证书并非官方颁发。

防火防风防 CNNIC

为了隐私安全,不信任 CNNIC 是一个明智的选择,因为你永远不知道你什么时候访问一个加密网站,会因为被安插了一个 CNNIC 颁发的真实「假」证书,而被窃取了机密信息。

保持浏览器和系统更新到最新版本

首先,当然要保持浏览器和系统更新到最新版本,安全补丁打到足。

移除CNNIC证书

更靠谱的做法是,在系统和浏览器里,将 CNNIC 移出信任机构名单,轻单用户「Anonymous」已经列了一份教程,在本项的链接里。为了方便查看,我把一些方法简单摘录。

全自动可疑证书吊销工具

适用于任何系统,这是最简单的方法,教程请点击链接

在 Windows 下移除 CNNIC

  1. 运行Windows的证书管理器(到命令行执行certmgr.msc)。
  2. 选中“受信任的根证书颁发机构”=>“证书”。
  3. 查看右边的证书列表。
  4. 选中CNNIC证书,点右键。在右键菜单中点“属性”。
  5. 在跳出的属性对话框中,选中“停用这个证书的所有目的”,然后确定。

在 Mac 下移除 CNNIC

请到“实用工具”=>“钥匙串访问”=>“系统根证书”=>“证书”,搜索CNNIC,并找到它的证书并双击,改为“永不信任”。

在 Linux 下移除 CNNIC

运行命令:dpkg-reconfigure ca-certificates 会出现一个图形界面,把CNNIC证书不选,并确认。

在 Firefox 里移除 CNNIC

不论是在哪个操作系统下,只要你用的是Firefox浏览器(它的证书体系独立于操作系统的),则需要执行如下步骤:

  1. 从菜单“工具”=>“选项” ,打开选项对话框
  2. 切换到“高级”部分,选中“加密”标签页,点“查看证书”按钮。
  3. 在证书对话框中,切换到“证书机构”。
  4. 里面的证书列表是按字母排序的。把CNNIC打头的都删除。

在 Android 下移除 CNNIC

进入「设置」 – 「安全」 – 「受信任的凭据(显示受信任的CA证书)」,点击进入需要禁用的证书并下拉到最下面,点击 禁用 按钮即可。

在 iOS 下移除 CNNIC

iOS 系统无法移除 CNNIC 证书,然而,我们可以使用被信任的国外 VPN 来访问 HTTPS 网站,避免被 DNS 劫持和植入 CNNIC 证书。

19 条评论

  1. 打开“受信任的根证书颁发机构”列表,发现危险的机构可不止CNNIC一个,各个银行,阿里巴巴,京东之类的,全都利用安装控件的机会把自己放了进来,他们更有可能被用来干坏事。

  2. 现在装系统后,第一做的事就是删除非正常安全证书,包括已过安全时效,国内的,香港的,台湾的,和中国有密切交往的比如土耳其,为CNNIC背书的entrust的安全证书,互联网的基石被告一个政府无耻地破坏掉两个 安全证书和DNS。

  3. 有一个问题:当网站被DNS劫持的时候,浏览器怎么知道这个网站应该是http的还是https的?比如手敲网址或者恶意导航页面
    还有:在 Linux 下移除 CNNIC,好像只针对Debian系的,Redhat系的貌似没有dpkg-reconfigure

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注