北京时间 2020 年 3 月 25 日,V2EX 网友发帖称「Cloudflare 提供的证书显示不是私密链接」,在帖子中,该网友称「DNS 解析没问题」。

3 月 26 日,V2EX 社区大规模反馈 Cloudflare 及 GitHub Pages 站点报证书错误,且 DNS 解析结果未见异常。经查,这是通过路由劫持实现的中间人攻击。

北京时间 3 月 27 日 7 时许,国内用户开始大规模汇报 GitHub 主站 GitHub.com HTTPS 访问异常,报证书错误,DNS 解析亦未见异常。

以上这些证书错误均为证书不受信任,是因为在该证书自带的信任链中,位于最上游的证书签发者不受操作系统/浏览器的信任,换言之,证书是由不受操作系统/浏览器信任的根 CA 签发的。这里的操作系统/浏览器包括所有的主流操作系统和所有的主流浏览器,包括但不限于 Windows、macOS、iOS、Chrome、Firefox。在所有证书错误中,浏览器显示 HTTPS 站点使用的证书均为同一证书,这个证书有着奇怪的证书细节,包括胡乱填写的签发者信息、一个纯数字前缀 @qq.com 的邮箱……很难让人相信这个证书被用于了如此大范围的针对不计其数的使用多家全球知名公司的服务器和 IP 段的 HTTPS 站点的中间人攻击。

多方证据表明,这次中间人攻击并未使用 DNS 污染,而是直接劫持了与目标服务器间的 IP 路由。这次攻击的对象包括大量像 TellyLab.com 这样的小破站,受害站点几乎都在使用 Cloudflare 的 CDN 或由 Fastly 为 GitHub Pages 提供的 CDN,但站点的域名及其注册商、权威 DNS 服务商没有什么特征或规律可循。作为例外,GitHub.com 的边缘服务器几乎都被解析到了位于新加坡的亚马逊数据中心(GitHub 主站使用的是 AWS)。

北京时间 3 月 27 日 10 时,受攻击站点在国内的访问已部分恢复。

北京时间 3 月 27 日上午,部分用户报告发现了中间人使用的第二个证书,该证书除了将邮箱换为了一个 @mymail.com 的地址外,其余信息似乎没变。

北京时间 3 月 27 日下午,所有受攻击站点在国内的访问似乎均已恢复。

北京时间 3 月 28 日 22 时更新:目前来看此事件已暂时平息,但尚不清楚攻击者的身份、目的或诉求。

笔者不知道发生了什么,no news is good news.