早在6年前,Facebook就开始研究代理服务,并发布了Free Basics。5日,Facebook在博客介绍了其最新的安全代理服务——Discover。Facebook Discover可以在移动web端和安卓app上使用,目前正在秘鲁与当地的电信公司开展测试工作。
与一般代理提供的富文本浏览不同的是,Discover项目当前只提供低带宽的基于文本的浏览,也就是说不支持其他形式的数据密集型内容,比如视频和音频内容。
Discover项目的另一个特点就是对所有的网站都一视同仁,公平对待,Free Basics的用户只局限于一小部分开发者提交并满足Facebook技术要求的在站点。
Discover:安全的基于web的代理服务
Discover的工作原理与Free Basics有一些相似,但也做出了一些改进。Discover和Free Basics的所有浏览都是流经代理的。因此,设备只与代理服务器就行交互,代理服务器充当网站用户请求的客户端。
基于Web的代理服务在“ freebasics.com”下的白名单内运行,运营商免费提供该服务(例如,“ https://example.com”改写为“ https:// https-example-com” .0.freebasics.com”),然后以用户名义获取网页并将其传递给请求的用户设备。
FB称,服务器段有重组的逻辑设置以确保所有的链接和href都会正确地转码。相同的逻辑可以帮助确保纯HTTP站点也可以通过Free Basics上的HTTPS在客户端和代理之间安全地传递。
此外,网站使用的cookie将以加密形式存储在服务器上,以防止移动浏览器达到cookie的存储限制。加密密钥(Internet Cookie密钥或“ ick”)是存储在客户端上的,因此在不知道用户密钥的情况下无法读取密钥的内容。当客户端提供ick时,服务器会在每次请求中将其遗忘,而不会被记录下来。
因为允许来自第三方网站的JS内容,攻击者可以注入恶意代码来获利,甚至可能引发会话固定攻击(session fixation attack)。该攻击是利用应用系统在服务器的会话ID固定不变机制,借助他人用相同的会话ID获取认证和授权,然后利用该会话ID劫持他人的会话以成功冒充他人,造成会话固定攻击。
为应对这一攻击,Facebook Discover使用了来源于加密密钥的认证标签(ickt)和保存在客户端的第二个浏览器标识cookie(datr)。
datr标签嵌入在每个代理的响应中,然后与客户端的ickt标签就行对比以确定有没有修改。如果不匹配,cookie就会被删除。此外,还使用了一种"two-frame solution",在第三方网站上嵌入了一个有外部frame保护的iframe,并使用了前面提到的标签来确保内容的完整性。
如果网站为防止点击劫持攻击而禁止在frame中加载页面,Discover就会在验证内部frame之前从HTTP响应中移除header。
此外,为了防止Discover域名被钓鱼站点冒名顶替,该访问会通过在沙箱里执行iframe来拦截导航的尝试,以防止执行不可信的代码。
Facebook开发工程师称,该架构已经就行了内部和外部的安全测试,相信该设计能够低于各种类型的web应用攻击,并为移动用户提供代理连接访问。
更多关于discover的细节参见FB官方网站:https://engineering.fb.com/connectivity/discover/
本文翻译自:https://thehackernews.com/2020/05/facebook-discover-free-internet.html如若转载,请注明原文地址: