在经过了艰苦的工作之后,bitwarden 团队发现,他们用来构建 Firefox 扩展的技术——Angular 1.5.8——已经遭到禁用。
在一项 Bug 报告中,该团队表示,他们希望将其扩展带到 Firefox(在 Chrome 中已经可用),但是因为 Angular 1.5.8 的存在被插件 linter 给拒绝了。他们使用了一个特定的版本,但事实证明,Angular 1.X 的每个版本都在 Firefox 扩展开发中遭到了禁用。
这不见得是 Angular 的漏洞,更多的是和 Angular 1.X 及其他库与 Firefox 扩展系统及已经加载到浏览器的页面的交互方式有关。来自 Angular 团队的 Martin Probst描述了这个问题:
Angular 本身没有问题,转义或求值本身都没有问题。
不过,有一种极端情况,Angular 的存在可能会弱化某些安全指标。那需要多个问题同时出现,包括受攻击的页面本来就存在漏洞。我不太清楚,Mozilla 是否考虑过那个问题,但那确实是个问题。我们会在 Angular 内部增加一些防护措施来缓解这种情况,但我认为,这是一个如何处理扩展的一般性问题,而不限于 Angular。
使问题复杂化的是,Firefox 知道 Angular 遭禁用,但他们没有和谷歌共享这一信息。来自 Mozilla 的 Andreas Wagner表示,他们是有意为之:
很遗憾,我们没能将它们报告给 Angular 团队,因为发现它们的安全研究人员要求我们不要共享它们。
现在还不清楚,为什么该研究人员没有直接联系 Angular 团队。
社区里有些人对此大为恼火,但是,上述不知名字的研究人员现在已经和谷歌取得了联系,修复程序已经在开发之中。大部分讨论都指向 Angular 1.X 中一个名为“表达式沙箱(Expression Sandbox)”的特性。谷歌已经决定,在 1.6 版本中移除表达式沙箱。但 Probst 表示,该沙箱不是 Angular 1.X 遭到禁用的原因。
- 通过和该研究人员交流,我们现在对根本问题有了更好的了解。
- 那个问题和绕过沙箱无关。
- 存在一个安全问题(优先级不是特别高)。那个问题真的不是 Angular 所特有的,但 Angular 让它更容易被利用。
- 我们确信,Angular 和 Firefox 之间的问题会得到缓解。我正在开发一个修复程序。
在修复程序推出以前,开发人员将无法交付使用了 Angular 1.X 的 Firefox 扩展。
评论