UI設計工具Figma最近才發布的擴充套件系統,就發現其應用的沙盒技術Realms Shim存在數個漏洞,這些漏洞可能使程式碼逃脫沙盒,雖然經過官方的檢查,沒有發現任何Figma套件曾經利用漏洞的跡象,但為了安全起見,官方更換了整個套件系統的底層架構,確保類似的問題不會再發生。

官方提到,Figma套件系統的漏洞一部分是在GitHub的公開議題(Issue)上揭露,另一部分則是以私密的GitHub安全通報發布,Realms Shim技術的開發廠商Agoric在發現漏洞的第一時間,通知了所有使用Realms Shim的開發團隊,由於第一個漏洞在GitHub公開揭露,Agoric當天隨即修補問題,Figma也更新了Figma擴充套件系統的Realms Shim版本。

而剩下在GitHub安全通報揭露的漏洞,則只有少數的組織才可以存取,他們與Agoric合作,花了一個星期修復漏洞,同時確保漏洞的資訊沒有公開,並且仔細審核推出的套件,尋找可能利用漏洞的Figma擴充套件。

雖然完成了Realms Shim的漏洞修補工作,但是官方提到,他們為了安全起見,還是修改了擴充套件執行JavaScript程式碼的方式,不再使用Realms Shim,而是使用QuickJS,這是一種以C語言撰寫,並交叉編譯成WebAssembly的JavaScript VM,這原本是作為當Realms Shim方法不可用時的替代方案,而現在Figma透過切換基礎架構快速的啟用備份計畫。

Figma提到,這次Realms Shim漏洞發生的原因,在於Realms Shim搞混了沙盒內部物件以及外部物件,因此Realms Shim對所有JavaScript程式碼使用相同的VM,而新的實作就完全不會有這樣的問題,因為是編譯成WebAssembly的JavaScript VM,就不可能有將內外物件搞混的狀況,因為物件表達的形式完全不同。

而Figma選用Realms Shim技術的原因,是因為Realms Shim效能出色,而且讓擴充套件除錯工作變得簡單,由於在Realms Shim中的程式碼仍然使用瀏覽器的JavaScript VM,因此執行速度就跟一般的JavaScript一樣。Figma表示,雖然替代方案QuickJS會影響部分擴充套件的效能,但是本質上卻更安全。


Advertisement

更多 iThome相關內容