使用缓存中间CA证书去识别firefox用户的指纹

前言

Firefox缓存中间CA证书的方式允许第三方推断关于网站访问者的各种细节,并且将广告简档链接到私密浏览会话。

在我们继续之前,非技术用户了解什么是中间CA证书很重要。

在整个HTTPS基础架构的顶部,我们有根CA(证书颁发机构),它们是Comodo,Symantec,DigiSign等公司。

出于安全原因,根CA会生成中间证书,而不是使用主根证书。这样,当中间CA证书被破解时,根CA继续操作,并且不必为其所有客户端撤消和替换证书,而只有少数。

当网站所有者来到要在其网站上支持HTTPS的根CA时,根CA会使用其中一个中间CA证书来生成每个客户端的服务器证书。

网站所有者使用此证书生成向用户浏览器发送的每个访问者的SSL证书。

整个证书链很复杂,但是当用户访问站点时,如果正确配置,Web服务器必须同时使用中间CA证书和服务器证书。

correct_case

通过HTTPS加载网站的正确方法

不幸的是,并非所有服务器管理员都以正确的方式实现HTTPS,在某些情况下,服务器只发送服务器证书,而不是中间CA证书。这通常会在用户的浏览器中生成错误。

incorrect_case

通过HTTPS加载网站的方式不正确

如果行为是不同的,取决于缓存,我可以从外面观察到吗?快速浏览ssllabs.com上一个不完整链的网站,并告诉我,这是真的可行的在Firefox(Chrome和Internet Explorer不知何故两个神奇地加载图像/网站,即使当链没有交付 – 可能使用caIssuer延期?)。有趣的是,来自主配置文件的缓存CA也以私密浏览模式使用。

收集数据

潜伏ssllabs.com寻找不完整链的新主机听起来不是一个有趣的想法,我猜Qualys不会太高兴如果我自动化的过程。所以我不得不提出一个更好的方法收集主机的概念证明。幸运的是,有可用的TLS服务器场景的公共数据集。我最后使用的两个是Censys.io扫描和Rapid7项目声纳。

在第一步,我想识别所有可能的中间CA证书链接到受信任的根CA. 为此,我下载了curl项目提供的根CA抽取。然后我查看数据集中的所有CA证书,并检查openssl verify它们是否是一个受信任根的直接中间。为了进一步识别在较长路径中链接到受信任根的中间CA,我以迭代方式使用根CA和已经识别的中间体来运行该过程,直到在数据集中没有找到更多新中间体。我最终得到3366个CA证书,链接到一个信任的根(1931年的第一级,1286的第二级,92的第三级和57的第四级)。

下一步是识别错误配置的网站。为此,项目Sonar数据派上用场,因为他们扫描完整的IPv4互联网,并记录在端口443每个IP的交付的证书链。由于它们单独提供证书,扫描数据只包含链元素的散列,我首先不得不将所有的证书导入到SQLite数据库中,以便快速查找它们。尽管结束了大约100 GB的数据库文件,SQLite执行得相当不错。然后,我通过查看所有证书来处理此数据,以查看它们是否包含存在于我的CA集合中但不在链中传递的颁发者(通过查看Authority Key Identifier扩展)。如果是这样,我已经确定了错误配置的主机的IP地址。现在有必要看看证书是否使用实际解析到该IP地址的主机名。如果是这样,我有一个错误配置的网络服务器的候选人。

最后一步是在该网络服务器上识别可以加载的工作映像。我考虑了几个选项,但结算只是加载网站在Firefox和观察使用Burp加载了哪些图像。这使我有一个几千兆字节的Burp状态文件和大量的URL的列表超过300个个别中间CA。

根据安全研究员Alexander Klink,这允许第三方通过一个简单的测试来测试哪些中间CA证书已经在Firefox缓存中可用。

简单的测试可以显示地理位置,浏览习惯

在用户背后,第三方(如广告客户)可以从配置不正确的HTTPS网站加载内容(例如图标)。

因为许多HTTPS站点共享相同的中间CA证书,所以一些将被正确加载,因为证书将在Firefox缓存中可用,即使错误配置的HTTPS服务器实际上不发送它。

如果加载操作生成错误,则表示用户尚未访问使用该特定中间CA证书的任何站点。

这种简单的技术将允许广告商知道用户是否已访问某组网站。

“某些CA的客户大多在一个国家或地区,”Klink解释说。“拥有Deutsche Bundestag CA的用户缓存的最可能位于德国,可能至少对政治有点兴趣。

通过该用户指纹识别技术可以收集的信息类型非常有限,主要是广泛的地理位置和浏览习惯。

然而,这可以是广告客户可以用来收集关于用户的信息的另一种方法,用户可以在他们已经拥有的许多用户中提高他们的广告简档的准确性。

Firefox-HTTPS-Test

测试Klink创建的演示网站的结果

由于Firefox对公开和隐私浏览会话使用相同的证书缓存,因此广告客户可以对隐私浏览会话进行反名称,并将其链接到某些用户个人资料。

测试也可以由恶意软件作者使用

除了用户隐私,该技术也可以由恶意软件作者使用。

“从攻击者的角度来看,这也可以用于检查浏览器是否在恶意软件分析沙箱(可能没有或很少的通用中间体缓存)运行,并根据该信息提供不同的内容,”Klink也注意。

Mozilla工作在修复

研究者已经通知Mozilla这个指纹矢量,并且基金会的工程师正在实施遥测系统以收集信息,如果中间证书缓存系统实际上帮助用户或不是。现在,它看起来需要一段时间,Mozilla修复这个指纹矢量。

“最简单的解决方案显然是不连接到不正确配置的服务器,不管中间设备是否被缓存,”Klink说。“可以理解,Mozilla不愿意在不知道影响的情况下实现它。”

同样的指纹矢量也会影响Tor Browser浏览器的用户,这是建立在较旧的Firefox版本上,但问题不是那么有影响力。

“Firefox浏览器当前防御缓存的基于证书的跟踪是将”security.nocertdb”设置为”true”, Firefox工程师Arthur Edelstein 说,意味着中间CA证书不会在浏览器会话之间缓存。

Klink还组织了一个演示站点来演示他的发现。演示站点:https://fiprinca.0x90.eu/poc/

*来源:bleepingcomputer,MottoIN整理发布

原创文章,作者:SecNews,如若转载,请注明出处:http://www.mottoin.com/news/96631.html

发表评论

登录后才能评论

联系我们

021-62666911

在线咨询:点击这里给我发消息

邮件:root@mottoin.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code