导语:最近我发现,Stylish其实是一个监控程序,它只是把自己伪装成浏览器插件。在我们使用它变化网站皮肤,进行各种排版的时候,我们也同时在不知不觉中被窥探。我们的Facebook新闻源、Twitter新闻源等个人浏览历史都会被监控。

你有没有浏览过一些网站,你非常的喜欢里面的内容,但是却对网站的样式什么的感到排斥,要么没有美感,要么字体太小不方便你阅读。如果放在原来,你必须在developer tools中设置网站的 css,甚至要自己做一份各个网站的css,当导航到某个网站时,粘贴复制过来。

但随着stylish插件的出现,对网站的页面设置就可以轻松做到。它不仅可以帮你把不同网站的自定义css记录下来,当你导航到对应网站时,自动加载相应的css,还可以把你的css上传到云端,和别人分享。 

不过最近我却发现,Stylish其实是一个监控程序,它只是把自己伪装成浏览器插件,只不过原来我们没有发现而已。在我们使用它变化网站皮肤,进行各种排版的时候,我们也同时在不知不觉中被窥探。我们的Facebook新闻源、Twitter新闻源等个人浏览历史都会被监控。

1.jpg

自2017年1月起,Stylish里的间谍软件,已经记录了200万用户访问的每个网站。值得注意的是,我发现Chrome版本的Stylish插件自2017年1月就开始进行跟踪,但Firefox版本的Stylish插件是从2018年3月开始跟踪的。Stylish会将监控到的完整浏览活动发送回其服务器,并附带唯一标识符。这就允许这些信息的幕后操作者SimilarWeb将所有个人的动作连接到单个配置文件中。Similarweb(https://www.similarweb.com)是一款来自以色列的非常强大的市场竞争分析工具,它可用于任何网站、APP的数据分析,同时它还提供了行业的数据分析功能,通过对整个行业发展趋势的海量数据分析,可为自身网站定位提供客观信息。对于像我这样在userstyles.org上创建了Stylish帐户的用户,分析人员可以轻松地将此唯一标识符链接到登录cookie。这意味着SimilarWeb不仅拥有我们完整的浏览历史记录,而且还拥有其他相关联的数据,从理论上来讲,分析人员可以轻而易举地将这些历史记录与我们的电子邮件地址和真实身份相关联。

Stylish变成间谍软件的历史

Stylish原本是个非常优秀的扩展程序,2016年8月其最初的开发者将它出售,几度转手后,在2017年1月,Stylish被SimilarWeb收购,成为它的一部分业务。

SimilarWeb的隐私政策表示他们只收集非个人数据,我认为这种做法是正确的。但事实证明,当用户无意中将他们的个人数据委托给像SimilarWeb这样的公司时,你只有寄希望于他们没有恶意,遵守数据收集的条例,还希望他们拥有良好的数据访问控制,没有内部泄露(比如恶意员工)以及足够强大的安全防护措施。糟糕的是,即使他们提交名义上匿名的URL列表也会产生重大的隐私和安全隐患。使用IP地址进行去匿名化并分析用户浏览历史记录通常很简单,比如,你认为访问https://www.linkedin.com/in/robertjheaton/edit的人可能是谁?

没有附加上下文的单个url也可能非常敏感,例如,有些网站在用户点击电子邮件中的链接时,会使用包含特殊认证令牌的URL自动登录。当用户点击mysocialnetwork.com/inbox?login_token=fsdj80d等链接时,网站会使用URL中的login_token作为替代密码,并将用户登录到他们的帐户中。客观讲这是一种冒险但非常方便用户的做法,它的安全性依赖于登录令牌的加密特征。但是,由于login_token是URL的一部分,Stylish会自动地记录它们并将它们发送回SimilarWeb服务器。此时,他们的数据库中就可能包含许多的其他服务上的用户帐户的辅助登录凭据。

敏感URL也会出现在其他地方,比如我的在线医疗服务提供商使用加密了的1000字符长URL(由Amazon S3生成)来向我汇报我的医疗文档,虽然该URL的有效期只有一分钟左右,但要看到这些页面的内容,除了知道URL之外,不需要任何登录验证。任何在URL过期之前能猜到URL中的身份验证令牌的人都可以查看和下载我的医疗文档。Stylish通过收集相关联的用户数据并将其记录在数据库中,这样他们也拥有我的医疗记录。

最重要的是,许多网站使用URL令牌来帮助用户重置忘记的密码。当用户点击“忘记密码?”按钮时,网站会向他们发送包含特殊链接的电子邮件。此链接会指向一个类似mysocialnetwork.com/password-reset?reset_token=a3dJ3等的长URL,当用户点击它时,网站会读取reset_token,查找相应的用户,并允许他们安全地重置密码。但是,如果攻击者能够截获这些URL并在真实用户之前完成密码重置过程,他们将获得对该帐户的完全控制权。这意味着,Stylish有机会使用这些密码重置URL,将用户的隐私和安全性掌握在自己手中。

发现Stylish间谍功能的过程

尽管被SimilarWeb收购以来,关于Stylish是否具备监控功能就一直处于猜测中没有实证,但我最近才发现它在不同的网站上做了许多监控工作的证据。

在查看Burp Suite时,我注意到api.userstyles.org上有大量奇怪的请求。

2.jpg

可以看到,将大量混淆后的数据发送到以/stats结尾的URL的HTTP请求对用户来说绝不是什么好消息。我注意到数据blob只包含字母和数字,并以%3D结尾,这是=符号的URL编码。这让我怀疑blob是经过Base64编码的。如下所示,我想尝试使用Base64解码它。

3.jpg

不过解码后的字符串也只包含字母和数字,也以=符号结尾,于是我尝试了第二次Base64解码。

4.jpg

虽然还是没有解码成功,但当我查看被解码的有效载荷的内容时,我意识到Stylish正在浏览我的所有浏览数据。我用谷歌搜索了“Stylish间谍软件”,发现很多商店都在销售Stylish的间谍装置,我还发现很多文章对Stylish的间谍功能进行过论证

我仔细查看了解码的有效载荷并注意到了其中的唯一的跟踪标识符。我记得我原来已经注册了一个Stylish的帐户,目的是向大家分享我的一些隐藏皮肤颜色的想法。我想知道,如果我登录到userstyles.org,我的会话cookie是否会被添加到Stylish的跟踪请求中。

事实证明,我的会话cookie确实可以被跟踪。Stylish的会话cookie的网域是* .userstyles.org,因此它也会被发送到每个userstyles.org子域。Stylish监控的cookie的时间段被设置的非常短暂,并且一旦浏览器关闭cookie就会过期。这意味着会话cookie确不会被添加到每个跟踪请求中,仅在用户登录到userstyles.org之后关闭浏览器之前发送跟踪请求。但是,Stylish只需要一个包含会话cookie的跟踪请求就可以永久地将用户帐户与Stylish跟踪标识符相关联。这意味着,Stylish和SimilarWeb仍然拥有将现实世界身份与浏览历史相关联所需的所有数据。

总结

像SimpleWeb这样的组织收购Stylish的例子并不少见, SimilarWeb声称他们需要跟踪Stylish的用户访问的每个网站,以便为当前网页推荐他们最喜欢的样式。这个理由真是经不起推敲,如果要推荐个性化服务,那么SimpleWeb只需要纪录当前网页的网域(Domain)即可,而非完整的网址(URL)。SimpleWeb还没有解释为什么他们还需要从浏览器窗口中搜集并发送用户进行的Google各种搜索信息。

5.jpg

缓解措施

Stylish控制面板中有一个声明禁用跟踪的复选框,默认情况下,SimilarWeb会启用它。然而,Stylish不再是一个什么好的产品,如果你喜欢对网页进行各种个性化设置,请用Stylus等,Stylus 是一个CSS的预处理框架,2010年被开发出来,开始于Node.js,主要用来给Node项目进行CSS预处理支持,所以Stylus是一种新型语言,可以创建动态的、富有表现力的CSS。如果你没有这方面的需求,建议你直接卸载了它。

源链接

Hacking more

...