互联网的设计目的是传递信息,但很少有人预见到会涉及如此大量的信息或这些信息的个人性质。同样,很少有人能预见到互联网设计中的潜在缺陷——更具体地说,是 Web 浏览器——会暴露这些个人信息,从而危及个人和公司的数据。
如果人们知道他们无意中向他们访问的每个网站(甚至包括他们从未去过的网站)提供了多少个人信息,他们会感到不安。如果他们在该网站上点击一下鼠标,就会泄露更多个人身份数据,包括全名和地址、家乡、学校、婚姻状况、朋友列表、照片、他们登录的其他网站,以及在某些情况下,他们的浏览器自动完成数据和他们访问过的其他网站的历史记录。
多年来,获取所有这些信息都是可能的。今天最流行的浏览器,包括 Chrome、Firefox、Internet Explorer 和 Safari,都没有为用户提供足够的保护。这种数据丢失的风险似乎与最近所有关于浏览器供应商在过去几年为其产品添加的新安全功能和改进的营销炒作背道而驰,例如沙箱、静默和自动更新、增强的软件安全以及反网络钓鱼和反恶意软件警告,所有这些默认情况下都已启用。虽然所有这些都是值得欢迎的进步,但事实是,这些功能的设计目的仅仅是为了防止一类非常特殊的浏览器攻击——通常被归类为驱动器下载的攻击。
驱动器下载旨在逃脱浏览器墙的限制,并在下面的计算机操作系统中感染恶意软件。毫无疑问,驱动器下载是一个严重的问题——当遇到受感染的网站时,数百万台 PC 已经因此受到损害——但它们肯定不是浏览器用户面临的唯一威胁,尤其是在有组织的网路犯罪和超定向在线广告时代。
获取个人信息的攻击背后的技术与恶意软件完全不同,并且同样危险,甚至可能更危险,因为解决方案远比仅仅安装防病毒软件复杂得多。这些攻击技术甚至有更深奥的标签,例如 XSS(跨站脚本)、CSRF(跨站请求伪造)和点击劫持。这些类型的攻击(主要)满足于停留在浏览器墙内,并且它们不像驱动器下载的同类那样利用内存损坏漏洞,但它们仍然能够在不留痕迹的情况下完成肮脏的工作。
这些攻击主要用 HTML、CSS(层叠样式表)和 JavaScript 编写,因此在经典意义上,它们无法被防病毒软件识别为恶意软件。它们利用了互联网设计工作方式中的缺陷。结果是,这些攻击技术对阻止驱动器下载的保护措施免疫。尽管它们构成危险,但在 Web 安全行业的内部圈子之外,它们几乎没有受到关注。为了更清楚地了解这些鲜为人知的攻击,重要的是要了解一个常见的 Web 技术用例。
HTML 允许 Web 开发人员从 Web 上任何位置的 Web 页面上包含远程托管的图像文件。例如,位于以下位置的网站http://coolwebsite/可能包含如下代码
<img src="http://someotherwebsite/image.png">
这指示访问浏览器向http://someotherwebsite/自动发送 Web 请求,并在返回时,在屏幕上显示图像。开发人员可能会添加一些 JavaScript 来检测图像文件是否已成功加载或包含错误
<img src="http://someotherwebsite/image.png" onload="successful()" onerror="error()">
如果图像文件加载正确,则执行 "successful" JavaScript 函数。如果发生错误,则error函数执行。此代码完全是典型的且无害的,但相同的功能也可以用于侵入性的恶意目的。
现在,假设http://coolwebsite/从http://someotherwebsite/加载了一个图像文件,但只有当用户的浏览器当前登录到http://someotherwebsite/时,该图像文件才可访问。与之前一样
<img src="http://someotherwebsite/loggedin.png" onload="loggedIn()" onerror="notLoggedIn()">
如果用户已登录,则图像文件加载成功,这将导致执行loggedIn。如果用户未登录,则notLoggedIn被执行。结果是可以轻松且隐形地测试访问者是否登录到 Web 开发人员没有关系的特定网站。这种利用 CSRF 的登录检测技术可以应用于网上银行、社交网络、网络邮件,以及基本上对攻击者有用的任何其他东西。后面的攻击者http://coolwebsite/只需要找到相对于登录状态以布尔状态响应的 URL。
接下来,考虑一下恶意网站所有者可能想要更进一步“去匿名化” Web 访问者,也就是说,了解访问者的真实姓名。从之前的示例中假设攻击者可以确定访问者是否登录到 Twitter、Facebook、Google+ 等。每天有数亿人持久地登录到这些在线服务。这些网站以及许多类似的网站都是为了方便而设计的。
攻击者可以利用的下一件事是那些熟悉的第三方 Web 小部件,例如 Twitter 的“关注”、Facebook 的“赞”和 Google 的“+1”按钮。
虽然这些按钮看起来无辜且足够安全,但实际上没有什么技术可以阻止网站将这些按钮放置在 HTML 容器中,例如div标签,使这些按钮透明,并将它们悬停在 Web 访问者的鼠标指针下方。这样做是为了当访问者点击他们看到的内容时,他们实际上会自动关注、赞或 +1 坏人希望他们做的任何其他事情。这是一个经典的点击劫持案例——每天在野外都能看到的攻击。
这就是互联网中的这个缺陷如此重要的原因:由于攻击者控制了这些按钮后面的对象,因此在用户点击后,攻击者可以准确地知道“谁”刚刚在这些在线服务上关注、赞或 +1 了(例如,Twitter:“用户 X 关注了您。”Facebook:“用户 X 赞了页面 Y。”)。为了去匿名化 Web 访问者,攻击者所需要做的就是查看最近点击的用户的公开个人资料。那时,攻击者的乐趣开始了,而毫无戒心的互联网用户的麻烦也开始了。
另一个长期存在的问题“浏览器内网黑客攻击”值得关注。这种严重的风险在 2006 年首次被讨论,但至今仍未得到解决。浏览器内网黑客攻击允许网站所有者访问其访问者的私有网络,这些网络可能位于网络防火墙之后,方法是使用他们的浏览器作为启动点。这种攻击技术非常简单,并且在企业用户和家庭用户上同样有效,从而暴露了全新的数据领域。
攻击流程如下:Web 用户访问恶意网站,例如http://coolwebsite/。该站点指示访问者的浏览器向访问者可以访问但攻击者无法访问的 IP 地址或主机名发出 Web 请求,例如 192.168.x.x 或 RFC-1918 定义的任何不可路由的 IP。可以通过使用 IMG 标签(如前面的示例中所示)或通过使用iframe, script和link标签强制执行此类请求
<iframe src="http://192.168.1.1/" onload="detection()">.</iframe>
根据 IP 地址给出的可检测响应,攻击者可以使用 Web 访问者的浏览器扫描内部私有网络以查找正在监听的 IP Web 服务器。定位打印机、IP 电话、宽带路由器、防火墙、配置仪表板等。
浏览器内网黑客攻击背后的技术类似于登录检测示例中的布尔状态检测。此外,根据用户是否登录到 IP/主机名,此类攻击可以强制访问者的浏览器通过众所周知的 IP(192.168.1.1、10.10.0.1 等)对宽带路由器的基于 Web 的界面进行配置更改,这些 IP 可以快速枚举。这种类型的漏洞利用的后果可能是灾难性的,因为它可能导致所有流量首先通过攻击者的网络路由。
除了登录检测、去匿名化和浏览器内网黑客攻击之外,当今的现代浏览器中还可能存在数十种其他攻击技术。例如,IP 地址地理位置定位可以粗略地说明 Web 访问者来自哪个城市/城镇。用户代理标头显示访问者正在使用的浏览器发行版和版本。各种 JavaScript DOM(文档对象模型)对象使列出哪些扩展程序和插件可用(用于黑客攻击或指纹识别)变得非常简单。DOM 对象还显示屏幕尺寸,这提供了人口统计背景以及用户是否正在使用虚拟化。
浏览器安全可以被 Web 网站所有者随意弯曲的所有方式的列表还在继续,但重点是:Web 浏览器不是“安全”的;Web 浏览器不是“安全”的;互联网存在影响用户(个人或公司)安全的基本缺陷。
现在是关键时刻:解决此类问题的唯一已知方法是“打破 Web”(即,对很大一部分网站的可用性产生负面影响)。这些问题仍然存在,是因为 Web 开发人员,以及很大程度上是 Web 用户,要求某些功能保持可用,而正是这些功能使这些攻击成为可能。
今天的各大浏览器供应商,以市场份额为指导,非常乐意遵守。他们的选择很简单:变得不那么安全但用户采用率更高,或者变得安全但默默无闻。这就是 Web 安全权衡——那些不完全理解或欣赏,或者不对他们强加给每个使用 Web 的人的风险负责的人所做的选择。
为了修复登录检测,浏览器可能会决定不将 Web 访问者的 cookie 数据与 Web 请求一起发送到域外目标(与 URL 栏中的主机名不同的目标)。Cookie 对于跟踪登录状态至关重要。域外目标仍然可以获得请求,但不知道它属于谁。这对阻止攻击是一件好事。
然而,不发送域外 cookie 会破坏任何使用多个主机名来传递经过身份验证的内容的网站的功能。这种方法会破坏 Twitter 的“关注”、Facebook 的“赞”和 Google 的“+1”按钮等单击式 Web 小部件。用户将被要求执行第二步。它还会破坏通过 Google Analytics、Coremetrics 等进行的访问者跟踪。从许多人的角度来看,这显然是行不通的。
为了修复点击劫持,Web 浏览器可以完全禁止iframes,或者至少禁止透明iframes。理想情况下,浏览器用户应该能够“看到”他们真正点击的内容。然而,建议对iframes进行这样的更改是一场必败之战;数百万个网站依赖于它们,包括透明iframes,以实现基本功能。值得注意的例子是 Facebook、Gmail 和 Yahoo! Mail。您通常看不到iframes在使用它们时,但它们确实无处不在。这种程度的破坏是永远不会被容忍的。
对于浏览器内网黑客攻击,Web 浏览器可以禁止从非 RFC-1918 网站包含 RFC-1918 资源。这实际上会在浏览器中创建公共网络和私有网络之间的断点。浏览器供应商表示这不可行的原因之一是,某些组织实际上确实合法地在公共网站上包含内网内容。因此,由于某些组织(您从未听说过,也永远不会访问其网站)有一个奇怪的用例,您的浏览器让您所在的私有网络以及数亿其他人的私有网络完全敞开。
尽管这听起来令人震惊,但请尝试从浏览器供应商的角度看待不修复问题的决定。如果他们破坏了这些未具名组织的非常用用例,那么这些组织内的人员将被迫切换到竞争对手的“不太安全”的浏览器,以便他们能够像往常一样继续业务。虽然做出更改的浏览器提高了所有其他用户的安全性,但该浏览器供应商会损失一部分市场份额。
浏览器供应商不愿冒险失去市场份额导致了当前的安全鸿沟。Web 浏览器安全性和在线隐私方面的显着改进受到与互联网设计方式相关的向后兼容性要求的制约。Web 浏览器供应商在战壕式战争中相互竞争,每天都在为争夺一小部分新用户而苦苦挣扎——这些用户一分钱也不付给他们,同时又试图保留他们已拥有的每一个用户。
重要的是要记住,主流浏览器本质上是广告平台。浏览器拥有的眼球越多,投放的广告就越多。广告和广告点击是支付整个派对费用的方式。任何阻碍这一点的事情都永远不是优先事项。
公平地说,最近确实取得了一项重要的胜利,经过多年的讨论,CSS 历史记录嗅探问题终于得到了修复。这是一种 Web 网站通过在 Web 页面上创建超链接并使用 JavaScript 或 CSS 来检查屏幕上显示的链接颜色来揭示用户访问过的其他网站历史记录的能力。蓝色链接表示访问者未去过那里;紫色表示用户访问过该网站。这是一个严重的隐私漏洞,它简单、有效且速度快,每秒可执行 10,000 个 URL。任何网站都可以快速知道您在哪里开户、购物、阅读什么新闻、常去的成人网站等。
CSS 历史记录嗅探问题最终变得如此糟糕并变得如此引人注目,以至于在大约 10 年前首次出现之后,所有主要的浏览器供应商最终都破坏了攻击所需的功能。许多依赖于底层功能的 Web 开发人员对此表示强烈不满,但显然从浏览器供应商的角度来看,这是一个可以接受的破坏程度。
当破坏不可接受,但问题仍然很糟糕时,就会提出新的选择加入式浏览器安全功能。它们的采用率通常很低。主要示例包括内容安全策略、X-Frame-Options、Origin、严格传输安全、SSL(安全套接字层)、安全和 HttpOnly cookie 标志等。网站所有者只有在他们愿意时才能实施这些解决方案,从而管理他们自己的破坏。这些功能都不能让 Web 用户保护自己,而这是每个浏览器都应该让其用户做的事情。目前,Web 安全正处于停滞状态——等待坏人造成足够的破坏——这应该为那些有权采取行动的人提供足够的动力。
通往更安全的 Web 的道路有几个选择。我们可以建立一个全新的万维网,或者其中的一个区域。然而,一个旨在应对当前一系列问题的 Web 平台将永远困扰其前身。目前,让我们假设我们在技术上知道如何构建一个安全平台,这是一个很大的假设。
下一步将是说服数百万,甚至可能数亿个重要网站背后的开发人员迁移过来和/或在版本 2 之上构建。当然,仅仅承诺一个“更安全”的平台本身是不够的激励。他们必须额外获得更具吸引力的东西。即使有更具吸引力的东西,这条道路也只会将我们的向后兼容性问题换成遗留问题,这可能需要数年,甚至十年或更长时间才能克服。
还有另一条道路——一条在移动应用程序中已经展示了成功模式的道路。您在那里发现的基本相当于连接到主网站移动版本的许多小型 Web 浏览器。Apple 的 iOS 和 Google 的 Android 等移动平台提供的安全优势在于,应用程序在内存和会话状态方面彼此隔离。
例如,如果您启动了美国银行的移动应用程序,登录,进行了银行业务,然后随后启动了 Facebook 的移动应用程序并登录,则两个应用程序都无法访问另一个应用程序的会话,就像在普通的桌面 Web 浏览器中一样。移动应用程序在登录检测、去匿名化和内网黑客攻击方面几乎没有问题。如果移动平台可以摆脱这种级别的应用程序和登录状态隔离,那么桌面世界当然也可以。
通过在桌面上采用类似的应用程序模型,使用自定义配置的 Web 浏览器(我们称之为 DesktopApps),我们可以解决互联网固有的安全缺陷。这些 DesktopApps 可以适当地进行品牌推广,并设计为自动启动到美国银行或 Facebook 的网站,例如,并且不再进一步。就像它们的移动应用程序表亲一样,这些 DesktopApps 不会显示 URL 栏或任何其他使其看起来像表面上的 Web 浏览器的东西,当然它们也会彼此隔离。在这些 DesktopApps 中,XSS、CSRF 和点击劫持等攻击将基本上绝迹,因为不允许跨域连接——这是一个基本前提。
DesktopApps 还可以为 Chrome、Firefox、Internet Explorer 和 Safari 提供重要的安全优势。登录检测和去匿名化等攻击将受到严重阻碍。假设 Web 访问者 X 在访问美国银行、Facebook 或任何其他网站时仅使用特殊的 DesktopApp,并且从不使用默认的 Web 浏览器进行任何这些活动。当 X 使用 Chrome、Firefox 或 Internet Explorer 并遇到试图执行登录检测和去匿名化的网站时,X 从未在该浏览器中登录任何重要的内容,因此攻击将失败。
内网黑客攻击呢?答案是打破功能,如前所述。Web 浏览器不应允许非 RFC-1918 网站包含 RFC-1918 内容——至少在没有 SSL 风格的安全异常的情况下不能这样做。一家或所有现有的浏览器供应商都需要确信这一点。如果那家具有奇怪用例的神秘公司想要继续,它应该创建一个特殊的公司 DesktopApp 来实现它。结果会更安全,我们所有人也会如此。
本文概述了一条解决 Web 安全问题的广泛途径,但关于如何推出 DesktopApp 并使市场采用此类实践还有很多问题尚未解决。除了安全优势之外,还需要其他功能来使 DesktopApp 对 Web 访问者具有吸引力;否则,浏览器供应商就没有创新的动力。还需要与网站所有者和开发人员进行游说。所有这些都使修复互联网成为一项艰巨的任务。为了超越安全并到达我们的最终目的地——一个我们的信息保持安全的世界——我们必须开发创造性的解决方案并做出艰难的选择。
喜欢它,讨厌它?请告诉我们
Jeremiah Grossman 是 WhiteHat Security 的创始人和首席技术官,负责 Web 安全研发和行业推广。作为一位著名的安全专家和行业资深人士,他撰写了数十篇文章,这些文章在世界各地著名的媒体上发表,并曾多次在行业活动和大学中担任演讲嘉宾。他是 WASC(Web 应用程序安全联盟)的联合创始人,曾被《InfoWorld》评为 25 位顶级 CTO 之一。他担任两家初创公司 Risk I/O 和 SD Elements 的顾问委员会成员,并且是巴西柔术黑带。在创立 WhiteHat 之前,他曾担任 Yahoo! 的信息安全官!
© 2012 1542-7730/11/1100 $10.00
最初发表于 Queue vol. 10, no. 11—
在 数字图书馆 中评论本文
Paul Vixie - 要么静态,要么回家
计算机和网络安全中当前和历史上的大多数问题都归结为一个简单的观察:让其他人控制我们的设备对我们不利。在另一个时间,我将解释“其他人”和“不利”是什么意思。就本文而言,我将完全专注于我所说的控制。我们失去对设备控制的一种方式是外部分布式拒绝服务 (DDoS) 攻击,这些攻击用不需要的流量填充网络,从而没有空间容纳真实的(“需要的”)流量。其他形式的 DDoS 类似:例如,低轨道离子炮 (LOIC) 的攻击可能不会完全填满网络,但它可以使 Web 服务器忙于响应无用的攻击请求,以至于服务器无法响应任何有用的客户请求。
Axel Arnbak, Hadi Asghari, Michel Van Eeten, Nico Van Eijk - HTTPS 市场中的安全崩溃
HTTPS(超文本传输协议安全)已发展成为安全 Web 浏览的事实标准。通过基于证书的身份验证协议,Web 服务和互联网用户首先使用 TLS/SSL 证书相互验证(“握手”),端到端加密 Web 通信,并在浏览器中显示挂锁,以指示通信是安全的。近年来,HTTPS 已成为保护在线社会、政治和经济活动的重要技术。
Sharon Goldberg - 为什么保护互联网路由需要这么长时间?
BGP(边界网关协议)是将互联网粘合在一起的粘合剂,使不同组织运营的大型网络之间能够进行数据通信。BGP 通过为组织之间的流量设置路由来使互联网通信全球化——例如,从波士顿大学的网络,通过更大的 ISP(互联网服务提供商),如 Level3、巴基斯坦电信和中国电信,然后到住宅网络,如 Comcast 或企业网络,如美国银行。
Ben Laurie - 证书透明度
2011 年 8 月 28 日,一个错误颁发的 google.com 通配符 HTTPS 证书被用于对伊朗的多个用户进行中间人攻击。该证书由一家名为 DigiNotar 的荷兰 CA(证书颁发机构)颁发,DigiNotar 是 VASCO Data Security International 的子公司。后来的分析表明,DigiNotar 早在一个多月前(至少自 7 月 19 日起)就已意识到其系统中的漏洞。它还表明,至少已颁发了 531 个欺诈性证书。最终计数可能永远不会知道,因为 DigiNotar 没有所有错误颁发的证书的记录。