为什么浏览器允许公共网站攻击内网网站?

信息安全 网页浏览器 攻击预防 csrf
2021-08-19 17:49:38

当我访问公共 Internet 上的网站时,该网站会导致我的浏览器向本地 IP 地址(例如 10.0.0.1)发送请求。这可用于攻击内部网站,例如通过 CSRF 攻击。

为什么浏览器允许这样做?如果浏览器禁止这样做,这会增加安全性吗?如果浏览器禁止这样做,它会破坏网站吗?影响有多大?我们能否量化负面影响或安全收益?

背景:10.0.0.1 等本地 IP 地址用于内部 Intranet 站点。它们不可公开路由,仅用于专用网络

参考:请参阅 Jeremiah Grossman 在Browser Security Case Study: Appearances Can Be Deducing中的评论,ACM Queue 第 10 卷第 10 期,2012 年 11 月 20 日。他提出了这个问题,并评论了两个可能的原因,尽管文章没有量化有多少网站会受到这种修改的负面影响(公平地说,这可能超出了本文的范围)。

更新:显然 Metro 风格的 IE 10在这些方面实施了一些限制(请参阅标题为“专用网络资源”的部分)。

2个回答

问题不仅限于私有 IP,对公共服务也造成了同样大的问题。如果您要对所有站点资产强制使用同域策略,那么对于具有多个域(google、yahoo、facebook)的站点以及使用 CDN 服务的任何人,您都会遇到很多问题。

显然,在谈论严格的私有 IP 空间时情况并非如此,但我认为这不是问题的答案。它可以防止网站自动攻击私人资源,让不知情的用户点击指向同一事物的链接仍然是微不足道的。

最终,责任在目标服务器手中。服务器应该采取措施减轻 CSRF 攻击,并且只解析公共/非敏感数据的 GET 参数。

如果浏览器禁止这样做,它会破坏网站吗

我认为它会破坏 SAML(和其他类似的联合/SSO 系统)。这必然有一个模型,其中依赖方(可能在公共网络上)必须将用户发送到 IdP(例如,专用网络中 Windows 域中的 ADFS 框)并再次退出以登录。

同样,一般来说,私有 IP 范围和私有网络不是一回事;企业在可公开路由的 IP 上拥有一部分私有网络的情况并不少见。当然还有半私人外联网。这些可能需要参考网络的私有 IP 部分上的资源,并且它们不会受到仅基于私有范围的控制的保护。

所以这不可能是一揽子禁令。您必须为允许哪些站点引用哪些网络引入一套全新的白名单控件。管理这将带来的额外复杂性是否值得?也许吧,但这不是一个明显的胜利。