在經過了艱苦的工作之后,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