在经过了艰苦的工作之后,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扩展。
查看英文原文:Angular 1.X Usage Banned in Firefox Extensions