为什么“受污染的画布”有风险?

信息安全 饼干 html 同源策略 科尔斯 html-5
2021-08-25 22:47:05

我理解对受污染的画布的担忧 - 来自另一个站点的图像位可以被发送回恶意服务器的想法。但是你能解释一下这究竟是如何工作的吗?

假设用户访问nastysite.comnastysite.com发出图像请求mydatingsite.commybankingsite.com获取包含用户私有信息的图像,然后将此图像渲染到画布上,获取画布的位,并将这些位发送回nastysite.com服务器。

该图像请求 URL 究竟是什么样的?假设这是您使用会话 cookie ( ) 登录的约会网站个人资料中的照片mydatingsite.com,或者是您使用会话 cookie ( ) 登录的银行站点中的支票图像mybankingsite.com如何nastysite.com知道要使用哪个特定 URL?如果您通过 HTTPS 与约会或银行网站的连接是特定会话的一部分,它是否有效?

我想这确实是一个关于会话 cookie 的问题。是否nastysite.com可以免费访问 和 的会话mydatingsite.comcookie mybankingsite.com它可以在服务器无法分辨的图像请求中使用它们不是来自他们自己页面的正常会话请求mydatingsite.commybankingsite.com

1个回答

该图像请求 URL 究竟是什么样的?

它不需要任何复杂或异常的东西。这有两种主要的工作方式(如果不是因为浏览器的限制):

  • 首先,当前用户的个人资料图片有一个特定的 URL,例如http://mydatingsite.com/currentuser/profileimage.jpg. 这可能是设计网站的一种奇怪方式,但我已经看到它使用过。这种攻击对任何登录的人都有效,您不需要为目标定制 URL。
  • 第二种适用于针对特定用户的攻击。如果我知道您是 ID 为 12345 的支票的所有者,我可以通过使用类似http://mybankingsite.com/checks/12345.png.

如何nastysite.com知道要使用哪个特定 URL?

作为攻击者,您必须进行一些研究。您可以在尝试从中获取数据的页面的源代码中找到 URL 或至少是 URL 的格式。

如果您通过 HTTPS 与约会或银行网站的连接是特定会话的一部分,它是否有效?

不确定您在这里谈论的是哪种会议。但总的来说,当用户在访问时使用同一浏览器登录到相关站点时,它会起作用nastysite.com

是否nastysite.com可以免费访问 和 的会话mydatingsite.comcookie mybankingsite.com它可以在服务器无法分辨的图像请求中使用它们不是来自他们自己页面的正常会话请求mydatingsite.commybankingsite.com

你说得对,这一切都归结为 cookie。您无法跨来源读取cookie,因此nastysite.com不知道您的 sessionidmydatingsite.com是什么。但要使其正常工作,无需读取 cookie!无论请求来自什么来源,浏览器都可以对所有请求发送 cookie。

如果浏览器没有将带有跨源数据的画布标记为受污染,这将是一个真正的问题。你会遇到类似于 CSRF 的情况,所有服务器都需要有适当的保护来阻止跨源事故。诸如画布之类的新功能不应破坏向后兼容性并迫使所有现有站点进行调整。这就是引入污染概念的原因。

请注意,没有浏览器错误,这都是理论上的,因为浏览器应该阻止这种攻击。