
谷歌正在测试一项新功能,以防止恶意的公共网站通过使用者的浏览器转向攻击内部、私人网络上的设备和服务。
更简单地说,谷歌计划防止互联网上的恶意网站攻击造访者的装置(如打印机或路由器)或是使用者家中的电脑。 人们一般认为这些设备是安全的,因为它们没有直接连接到网络并且受到路由器的保护。
「为了防止恶意网站通过用户代理的网络位置进行攻击,攻击设备和服务器,由于位于用户的本地内部网络或用户设备上,因此可以合理地认为它们从整个网络上是无法访问的。」 谷歌在支持文件中描述了这个想法。
阻挡对内部网络的不安全请求
所提出的「私有网络访问保护」功能,(在Chrome 123中处于「只有警告」模式),将在公共网站(称为「网站A」)指示浏览器访问用户私有网络内的另一个网站(称为「网站B」)之前进行检查。
检查包括验证请求是否来自安全上下文,并发送初步请求以查看网站B(例如在回送地址上运行的HTTP服务器或路由器的网络接口的设置)是否允许通过特定称为CORS预检请求的公共网站进行访问。
与现有的子资源和工作人员保护不同,此功能专门关注导航请求。 其主要目的是保护用户的私有网络免受潜在威胁。
在谷歌提供的一个例子中,开发人员展示了公共网站上的HTML iframe执行CSRF攻击,该攻击会更改造访者本地网络上路由器的 DNS 配置。
<iframe href="https://admin:admin@router.local/set_dns?server1=123.123.123.123">
</iframe>
在这项新提议下,当浏览器检测到公共网站试图连接到内部设备时,浏览器将首先向该装置发送预检请求。
如果没有回应,连接将被阻止。 但是,如果内部设备做出回应,它可以使用 「Access-Control-Request-Private-Network」标题告诉浏览器是否应该允许该请求。
这允许自动阻止对内部网络上的设备的请求,除非设备明确允许来自公共网站的连接。
在警告阶段,即使检查失败,功能也不会阻止请求。 相反,开发人员将在DevTools控制台中看到一个警告,给他们时间在更严格的执行开始之前进行调整。
但是,谷歌警告说,即使请求被阻止,浏览器的自动重新加载将会允许请求通过,因为它将被视为内部=>内部连接。
「在这种情况下,私有网络造访保护将不适用,因为该功能旨在保护用户的私有网络免受更公共的网页页面的侵害,」谷歌警告说。
为了防止这种情况,谷歌建议如果之前由于私有网络造访功能而阻止了某个页面,则阻止该页面的自动重新加载。
当这种情况发生时,浏览器将显示一条错误消息,指出用户可以通过手动重新加载页面允许请求通过,如下所示。
▲ 谷歌阻止网页重新加载的请求
这个页面将包括一条新的谷歌 Chrome错误消息,「BLOCKED_BY_PRIVATE_NETWORK_ACCESS_CHECKS」,告诉用户「该页面因为没有通过私有网络访问安全检查而无法加载」。
这项安全升级背后的想法
这项发展背后的动机是防止互联网上的恶意网站利用用户内部网络上的设备和服务器的漏洞,这些设备和服务器以前被认为是安全的,不会受到来自互联网的威胁。
这包括防止未经授权访问用户的路由器和在本地设备上执行的软件界面——随着越来越多的应用程序部署假设不存在保护的网络界面,这是一个日益增长的担忧。
根据说明文件,谷歌 从 2021 年开始探索这个想法,目的是防止外部网站对私人网络(本地主机或私人 IP 地址)内的资源发出有害请求。
虽然直接目标是减轻像「SOHO Pharming」攻击和CSRF(跨站请求伪造)漏洞这样的风险, 但该规范并没有将目标设置为保护本机服务的 HTTPS 连接——这是安全整合公共和非公共资源的必要步骤,但超出了规范的目前范围。
