圖片來源: 

Mozilla

Mozilla宣布與Fastly、英特爾和紅帽共同組成Bytecode Alliance,要透過實作與提案新標準,來推動WebAssembly在瀏覽器之外的應用。Mozilla提到,現在的軟體建置架構並非以安全為優先考量,而且惡意攻擊活動越來越多,Bytecode Alliance提出了WebAssembly奈米程序(Nanoprocesses)解決方案,可以從程式根本架構,改進WebAssembly生態系的安全發展。

目前許多應用程式都採用模組化建構方法,其中有80%的程式碼來自諸如npm、PyPI和crates.io等套件註冊表,雖然這樣的方式造就了興盛的生態系統,但因為架構根本上的原因,使得惡意攻擊者有機可乘。

當用戶信任應用程式,同時也信任了所有應用程式中使用的相依項目,但這些相依項目可能大有問題,可能包含有攻擊者撰寫的惡意程式碼,以及帶有漏洞的程式碼,而使用者卻在不知情的狀況下,信任這些程式碼。

面對這些安全威脅,開發者現在有幾個手段可以應付。使用掃描器來檢測程式碼,以及相依項目中的問題,但有許多狀況是自動化工具無法偵測的。以人工進行程式碼審查也是一種方法,但是每當相依項目更新時,開發者都需要重新審查程式碼,如果相依關係數中有數百個模組,則開發者需要花費大量的時間審查程式碼。

開發者也可以鎖定模組,禁止模組自動更新,防止惡意代碼無法被自動更新進應用程式專案,直到經過審核通過後才放行,但是當模組中存在漏洞時,也就無法獲得即時修補,反將系統暴露在風險之中。當然也可以訂閱監控服務,在發現相依項目有漏洞時,即時通知開發者,但這幫助也僅限於已經發現的目標漏洞,而且即便發現了漏洞,維護人員可能也無法即時的修補。

Mozilla表示,隨著WebAssembly的發展,現在到了必須要來解決這些問題的時候,Mozilla提出一項解決方案,讓程式執行在預設情況下就是安全的。但由於這個問題非常龐大,因此Mozilla組織聯盟Bytecode Alliance來一同解決這個問題,以安全的基礎讓不受信任的程式碼,也能在雲端、桌機或是物聯網裝置上安全的運作,另外,也可以讓開發人員安心地使用開源程式碼,不會使程式碼中的漏洞對用戶產生威脅。

Mozilla為此提出了WebAssembly奈米程序的解決方案,WebAssembly可以提供輕量級的隔離,使系統可以安全地執行不受信任的程式碼,這個架構類似Unix的小型程序、容器或是微服務的概念,這種輕量級的隔離,不會使得程序溝通比常規函數呼叫慢,開發者可以使用奈米程序來打包單個WebAssembly模組實例,或是一群想要共用記憶體的模組實例。

由於WebAssembly奈米程序嚴格隔離了模組以及資源的取用,因此能夠有效防止惡意程式碼或是漏洞威脅。WebAssembly模組預設就是在沙盒中執行,該模組預設無法存取API或是系統呼叫,需要提供明確地函式或是系統呼叫,模組才能使用,且奈米程序的記憶體模型隔離每個模組使用的記憶體,讓惡意模組無法任意存取父模組的記憶體。另外,透過WebAssembly系統介面(WASI),讓模組在彼此隔離的狀況下,依然能賦予他們精細存取文件系統或是其他資源的權限。

WebAssembly奈米程序不只增加了程式的安全性,還可改進軟體的相容性,開發者可以將使用不同語言,或是同一語言不同版本撰寫的服務組合在一起。Mozilla提到,WebAssembly奈米程序不僅只能用在相依項目中,Bytecode Alliance正在合作將這項技術應用在不同的案例上。


Advertisement

更多 iThome相關內容