Unity漏洞嚴重嗎
昨天看到我長期有在追蹤的資安研究員 RyotaK 發了一篇 Unity 漏洞的 writeup,想說放著晚點再看,結果剛就看到一堆新聞先寫出來了,而且看起來還挺嚴重的
至於是否真的這麼嚴重,除了看 CVSS 分數跟看新聞以外,其實也可以先了解這個漏洞以後自己思考一下。
由於原文只有寫 Android 的,因此我們只談 Android。
在 Android 上,一個 app 可以用一個叫 intent 的東西把另一個 app 叫起來,並傳一些資訊過去。例如說你在某個 app 購物,要付款時點個按鈕就打開另一個 app 跳到結帳頁面,就是類似的機制。
然而,Unity runtime 在這部分沒處理好,導致它會執行其他 app 帶過來的程式碼(更細一點,是帶一個路徑,接著載入這路徑的程式碼)。
因此呢,第一個攻擊方式就是:你先裝了一個惡意 app,這個惡意 app 就可以用這招,讓其他 Unity 打包出來的 app 執行惡意程式碼。
而第二個攻擊方式是,有些 app 支援用 URL 的方式傳送這個 intent,因此不需要裝惡意 app 了,你點個按鈕就可以了(開發者要自己配置,非預設設定)。
但是呢,剛剛有說除了 intent 以外,攻擊者還需要一個檔案,而這個檔案如果是從網路上下載的,Android 本身的安全機制會擋住,因此只能是「Unity 打包出來的遊戲自己寫的」,所以被攻擊的那個 app,必須本身就會寫檔案,而且攻擊者可以控制檔案內容,就可以寫惡意程式碼進去檔案,接著透過 URL 去執行。
原文舉的案例是 Facebook Messenger 的 cache,但其他 app 有沒有這機制,就要看每個 app 本身的功能跟做法了。
好,我們總結一下這個漏洞的觸發方式,主要有兩個:
- 裝一個惡意 app,透過它攻擊其他 Unity app
以及底下三種條件都滿足的:
- app 需要設定可以用 URL 帶 intent
- 攻擊者可以控制 app 寫入檔案,並控制檔案內容
- 你點了一個惡意連結,觸發漏洞
他之所以嚴重性為 High,分數 8.4 分(滿分 10 分)
是因為漏洞觸發後嚴重性高,但是 Attack Vector 這一項是 Local
代表這漏洞只能從本地攻擊(遠端也可以但前提較多)
有些讀者可能會好奇說,那既然都裝惡意 app 了,他自己偷資料就好,幹嘛還要利用 Unity 漏洞呢?
這個就問得好了,如果 Unity app 的權限比較多,可以達到提升權限的效果。除此之外,我記得 Android app 彼此之間是不能存取對方的資料的(除非特別設置),因此惡意 app 可以透過這點,讀到其他 Unity app 的資料。
總之呢,漏洞這種東西,比較多人都是不管觸發難度,反正嚴重的先修了再說,以防萬一,這確實是合理的。
但若是我們能理解漏洞的觸發條件,或許就不會這麼緊張(?),比起「Unity 爆重大漏洞」這個標題,在理解詳細的資訊之後,就能更客觀去看待這個漏洞。
我是覺得跟以前出現過的其他漏洞比起來(雖然 platform 不一樣好像不太能這樣比,我指的是 log4j),這個的攻擊前提確實多了些,沒有到這麼這麼嚴重(如果有人有不同看法可以在底下留言,教學相長)。
但安全起見,如果你家有 Unity 做的東西,還是盡快升版把洞修了吧。
評論