部分加密的网页在哪些方面不安全?

信息安全 Web应用程序 tls 网页浏览器
2021-08-15 02:31:19

如果网页仅部分加密,可能会出现哪些潜在漏洞。

我可以想到两种可能性:

  1. 您可以通过 MITM 攻击更改页面的未加密部分(HTML、CSS、图像、JS),以部分更改页面的外观。

  2. 您可以通过不安全的连接注入恶意 JS,以窃取/修改页面的加密部分,从而使整个连接不安全。

第二种情况是否可能,或者网络浏览器是否包含一些安全机制来防止它发生?

这个问题也对 Stack Exchange n/w 有影响,因为只有登录页面内包含登录表单的 iframe 被加密:https : //meta.stackexchange.com/questions/96004/login-to-stack-交换帐户不使用 https-ssl

更新:

正如@Ladada 指出的那样,这个问题实际上分为多个部分:

案例 1:加载安全 iframe 以传输机密数据的不安全页面

回答:正如 davidwebster48 在​​他的回答中指出的那样,这种机制被轻而易举地打败了,因为可以操纵不安全的父页面来加载具有攻击者喜欢的不同页面的 iframe。附带说明一下,这意味着尽管使用 https 登录表单,StackExchange 的登录系统仍容易受到 MITM 攻击。

案例 2:通过 iframe 加载不安全页面的安全页面

(假设不安全的 iframe 不处理任何机密数据)。这种情况特别有趣,因为同源策略也进入了等式。即使两个页面可能来自同一个域,因为它们都使用不同的协议(一个 HTTPS 和另一个 HTTP),这将导致同源限制生效。我不确定这些限制是否足以阻止我们的攻击者死在他的轨道上。

案例 3:链接到不安全 JS 的安全页面

我的回答:我认为这显然是失败的,因为攻击者可以修改 JS 文件来访问/操作整个页面。

案例 4:链接到不安全来源(如图像、CSS)的安全页面

攻击者能否改变足够多的页面外观来进行网络钓鱼攻击?或者他可以发起跨站点脚本攻击吗?

4个回答

让我们从主动攻击者 Malroy 和被动攻击者 Eve的角度来检查每个案例。

案例 1:加载安全 iframe 以传输机密数据的不安全页面

被动:当您使用安全 iframe 时,您可以免受被动攻击。但是,在登录 iframe 的情况下,如果您的会话令牌曾经以明文形式发送,Eve 可以冒充您。(我在这里仍然将冒充视为“被动”,因为夏娃并没有主动篡改你的联系;她只是用她学到的新信息建立自己的联系。)

活动:如果 HTML 页面本身不安全,那么您已经完全迷失了。您可以安全地传输页面上的每个子资源,但这并不重要:Malroy 已经重写了您的页面以使用完全不同的资源。

案例 2:通过 iframe 加载不安全页面的安全页面

被动:这里有一个明显的主要问题:你在 iframe 中所做的任何事情都是显而易见的。但是,Eve 看不到您在顶级安全页面中所做的事情。尽管如此,用户仍然对页面上的哪些元素可以安全地进行交互而哪些不能进行交互感到困惑。

主动: Malroy 可以让任何东西出现在 iframe 中;我希望你没有将它用于任何重要的事情。我不认为Malroy 有任何方法可以突破 iframe 并读取或更改您的外部安全页面,因为浏览器已经假定跨域 iframe 不可信。如果有办法突破 iframe,我认为这将被视为您的浏览器中的一个严重的安全错误(这并不是说那些不存在,但这是一个实现问题,而不是混合的理论问题内容)。

案例 3:链接到不安全 JS 的安全页面

被动: Eve 可以根据您加载的 HTTP 资源了解您正在查看的 HTTPS 站点。(当然,她可能能够通过安全连接执行此操作,具体取决于您获取的目标 IP 地址和加密资源的大小/模式。无论如何,HTTP 只会让她更轻松。)

主动:正如您所猜测的,Malroy 可以通过提供一个更改过的脚本来使您的 HTTPS 页面完全自我重写。

案例 4:链接到不安全来源(如图像、CSS)的安全页面

被动:与上面的案例 3 相同。

主动: CSS 非常强大。如果 Malroy 可以重写 CSS 资源,他就可以进行一些非常繁重的表示操作。例如,也许 Malroy 将论坛的“创建新线程”页面的输入字段重新设置样式,使其看起来像一个登录页面。这会诱使用户认为他的会话已超时,并且他在不知情的情况下将他的凭据作为公开的新帖子提交。

主动攻击者还可以使用 CSS 来提示客户端参与 CSRF 攻击,例如,通过使用background-image: url(http://www.bigbank.com/transfer?amt=1000000&to=malroy).

这个页面有一个很好的解释和演示:http ://www.troyhunt.com/2013/06/the-security-futility-that-is-embedding.html

如果您假设攻击者可以更改页面的未加密部分,那么他将能够更改它们,以便它们包含他自己的恶意登录表单,而不是安全登录表单。

我想到的一种可能性是会话劫持。例如,如果会话 cookie 以非安全方式传输,则可能会被劫持。

案例 4 的一种可能情况是,MITM 将图像替换为利用用户浏览器中的 RCE(远程代码执行)漏洞的图像。

以下是此类漏洞的示例:https: //nvd.nist.gov/vuln/detail/CVE-2017-2416 - 基本上您可以提供包含可执行代码的精心制作的图像,并在旧版本的 macOS 和 iOS 上执行该代码.

当然,这样的 MITM 可以在任何页面的上下文中运行代码,但假设它们无法逃离沙箱,那么混合内容问题允许它们在其他安全页面的上下文中运行代码。(无论如何,Http 页面都是不安全的,因为任何人都可以在那里注入任何东西,它可以是 JavaScript 或 WebAssembly。)