Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

加入追踪代码引入通知和隐私协议,以及取消追踪的选项 #33

Closed
jabbany opened this issue Jun 16, 2015 · 16 comments
Closed
Labels

Comments

@jabbany
Copy link

jabbany commented Jun 16, 2015

在commit a6ab389
加入了有可能进行全域全协议(针对任何HTTP/HTTPS网站和所有Chrome标签)的追踪和标签页监控代码,感觉非常有风险(尤其是对https请求全域权限)。

希望开发者能在插件说明等明显的地方通告用户,提供目前追踪的隐私保护策略,最好能提供opt-out的选项。可能的话最好将追踪控制一下范围并且避免对https下的域名使用追踪/请求广域https注入权限(或者把此权限变成optional的+让追踪变成opt-in)。

目前HEAD还没正式发行,希望能改一下目前的追踪策略。

@zacyu
Copy link
Collaborator

zacyu commented Jun 16, 2015

统计代码是由 SimilarWeb 提供的, 会收集用户的一些非个人的统计数据 (Non-Personal Information), 但是要求 . 详情的隐私协议可以参见 https://developer.similarweb.com/privacy-policy. 下一个 release 版本发布, 在用户自动更新后, 因为请求了新的权限, 会需要用户用户重新启用. 届时我也会在选项页内说明相关情况.

@zacyu zacyu added the question label Jun 16, 2015
@jabbany
Copy link
Author

jabbany commented Jun 16, 2015

是否有可能不去请求 https://*/ 这个权限,要不总觉得有点害怕的。。。
(再加上WebRequest 和WebRequestBlocking已经是非常高的权限了。。。

@zacyu
Copy link
Collaborator

zacyu commented Jun 16, 2015

因为我这边代码完全是开源外加统计代码也是 SimilarWeb 官方提供的,所以我觉得问题应该不大。后两者是替换版权番限制的时候需要用到的,并不是在这次更新中才加入。我之后测试一下不加入 https 对统计的影响,如果没太大问题的话考虑到你的顾虑我会去掉对 https://*/ 的请求。

@jabbany
Copy link
Author

jabbany commented Jun 16, 2015

我觉得替换版权限制的话应该可以和之前一样直接专门选一些网址(更改前的http://g3.letv.cn/*之类的,或者更广的*://*.letv.cn/都可以)

现阶段请求https+http的所有域的域名权+WebRequest/WebRequestBlocking则可以实现近乎无痕迹的https MITM攻击,对网银安全区域的网站潜在威胁很大。倒不是在说这个插件会这样做(毕竟是开源的),但是不排除有存在第三方通过操纵B站元素(包括HTTP的中间人攻击)借助这个插件提权,最后攻击HTTPS(网银等)。

那样的话放在这个插件上的安全性检查的压力就会非常大(因为肩负了控制整个浏览器所有域名所有协议所有流量的大任务)。一般原则上操纵所有流量的插件都是不建议同时还主动抓一些网页DOM结构的操作的,因为那样研究Attack vector就变得复杂了

@zacyu
Copy link
Collaborator

zacyu commented Jun 17, 2015

操作 DOM 结构的部分在 content script 里,有流量权限的部分在 sandbox 中的 background 里,而这两部分的通信是通过有限的消息系统。这方面的安全性应该是有 Chrome 本身机制提供保证的—如果 Chrome 本身的 sandbox 存在 vulnerability 的话也不是我单个扩展可以控制的,因此我认为新增权限对安全性方面的影响没有你所描述得那么严重。

@jabbany
Copy link
Author

jabbany commented Jun 17, 2015

不不,你把问题理解的太简单了,目前的安全漏洞比你想象的要复杂(而且你没意识到这点来看本身更是问题)。攻击者可以通过对HTTP攻击来给插件错误的输入,而诱导插件进行https访问,相当于间接提权了。

比如在插件的任何http的AJAX请求时,如果攻击者把回应改为一个301转向,转到一个本来是https安全的网页(比如网银之类的)。浏览器会检测域名协议判定不符合Same Origin Policy而进入CORS流程,但是插件的context下CORS会被域名permissions覆盖,所以本来不能通过的请求却在插件的环境里被提权了(而且因为是针对所有https域,所以比较危险)。这时候只要通过操作接应页面的脚本就可以从安全网页偷数据了。

对HTTP流量实现中间人攻击非常简单,但是对HTTPS就很难。插件的高权限环境就成了跳板。

@zacyu
Copy link
Collaborator

zacyu commented Jun 17, 2015

即使在极端情况下 (如上述例子中), 「接应页面的脚本」也是在 content page 中的. 而和我之前提到的一样, 攻击者能操作到的最多只是网页中的 script. 所以上例中的影响相当于只是一个 redirect, 攻击者并无法获取安全网页中的数据. 当攻击者可以发起此类攻击时, 完全不需要借住插件, 可以直接跳转对页面请求或者通过在 DOM 中插入一个 iframe 达到同样的目的. 这个提权的假设并不存在. 此外, 无关权限, 所有 POST 请求在被 redirect 后都会变为 GET 请求. 总而言之, content script 虽然没有 background script 那样严格的 sandbox, 但是从设计上应该也是可以避免这类攻击的.

@jabbany
Copy link
Author

jabbany commented Jun 17, 2015

然后三个脚本中有一个是第三方提供的?你还能很自信的说它很安全?

@jabbany
Copy link
Author

jabbany commented Jun 17, 2015

另外,background脚本有会只parse一下JSON直接返回的接口,如果攻击的是一个安全的JSON接口,那么完全有可能借助网页+后台脚本一起攻击。

最低限度地,一个B站助手插件却在要求整个浏览器上最高的权限,我认为是极不合理的。而且在这个commit下改变本来挺安全的站内permission的行为非常莫名其妙。

@zacyu
Copy link
Collaborator

zacyu commented Jun 17, 2015

我认为提升权限需求的原因 Add analytics code 这一条已经解释过,用户协议和隐私协议我也及时更新了。第三方代码也是本地加载而不是从互联网上实时获取,如果有问题可以针对具体问题提出。

@jabbany
Copy link
Author

jabbany commented Jun 17, 2015

好吧,不过希望你能标注这个数据收集是针对所有网页包括安全网页的比如个人网银等都会经过analytics代码。

至于这么高权限的analytics代码我是第一次见到,我觉得用户有权知道代码能触及到的是所有流量。

@jabbany jabbany closed this as completed Jun 17, 2015
@zacyu
Copy link
Collaborator

zacyu commented Jun 17, 2015

Okay. 我会在版本更新公告和通过社交网络渠道说明这个变动的.

@enerai
Copy link

enerai commented Jul 8, 2015

报告 Zhuogu,这个脚本会统计所有网页的信息并发送到服务器。比如我访问完全和 bilibili 无关的 weibo,Twitter,或者 Facebook, 都会发信息到服务器,这一点其实感觉很不放心。毕竟有很多网站会把用户的用户名以及密码直接写在 get 或者 post 请求当中,上传到服务器其实是蛮危险的

@jabbany
Copy link
Author

jabbany commented Jul 8, 2015

@enerai 那个是设计内的,作者是知情的,本条issue得到的结论是没有opt out选项。

@enerai
Copy link

enerai commented Jul 8, 2015

我没想明白作者添加这个统计代码的根本目的是什么?如果说是要提升用户在 bilibili 网站上使用本插件的用户体验,我并不明白为什么会统计访问其他页面的数据发给 SimilarWeb 的服务器。

希望作者能够出来清楚的和用户解释一下这个问题,而不是在插件当中用有些模糊和不容易理解的语言说两句,然后再附上一个并没有实质内容的链接

@jabbany
Copy link
Author

jabbany commented Jul 8, 2015

@enerai 说实话我也不明白。唯一现实的目的的就是为了在较大的用户群内获得全域全协议追踪数据,至于这些追踪信息的用法我不敢妄加揣测。从增加权限到全域全协议,在请求下不提供opt out选项,和对安全问题不具体作声明的情况看,肯定是设计内的行为。

另外无关信息:我反正不打算用带追踪的插件。仅代表个人观点。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants