作者Y78 (Y78)
看板C_Chat
標題Re: [情報] 遊戲引擎Unity爆重大安全漏洞
時間Sat Oct 4 18:06:27 2025
昨天剛好看到漏洞發現者 RyotaK 寫的技術細節,簡單講一下
有技術背景的可以自己看:
https://flatt.tech/research/posts/arbitrary-code-execution-in-unity-runtime/
在 Android 上,手機 app 可以透過發起一個叫 intent 的東西打開另一個 app
打開的時候可以傳參數過去
而 Unity 在這部分沒有處理好,導致會直接載入其他 app 傳來的程式碼
因此一個惡意 app 就可以透過這種方式,再利用 Unity 包出來的遊戲執行程式碼
這是第一種攻擊方式
再強調一次
攻擊前提是:你先裝了一個惡意 app,再透過這個惡意 app 攻擊 Unity 引擎
攻擊成功之後,就看你原本遊戲有什麼權限,就可以拿到什麼權限
但由於你要先裝一個惡意 app
在你裝惡意 app 的時候,它其實本來就可以做很多事了,不需要透過 Unity
透過 Unity 就只是可以偷到這個 app 的更多資料,或是拿到更多權限
例如說 app 通常只有自己能存取自己的東西
因此透過 Unity 這個漏洞,可以讓其他 app 來把你東西偷走
第二種攻擊方式是,有些 app 會可以利用 URL 去發這個 intent
就不需要先裝惡意 app(這個不是預設的設置,需要開發者自己加上)
但由於 Android 本身的權限問題,會阻擋一些可疑位置的檔案載入
所以還需要搭配 app 本身的機制,想辦法讓攻擊者能夠寫一個檔案
接著再載入這個檔案才行
換句話說,假設一個遊戲要有問題,它本身的機制必須能讓攻擊者去寫入檔案
原文給的案例是 Facebook Messenger 的快取可以被攻擊者控制,利用它寫檔案
但遊戲的話應該就是 case by case 了,要先找到能控制寫檔案的方法
才有辦法寫入惡意程式碼,然後利用 URL 執行
總結一下,根據作者自己的技術細節,攻擊要成立的前提是:
1. 你已經裝了一個惡意 app
或是底下三個條件同時滿足:
1. 遊戲支援透過 URL 的方式打開
2. 攻擊者可以透過遊戲本身的機制,寫一個檔案並控制內容
3. 你點了一個惡意 URL,觸發 Unity 漏洞
由於文章只有寫到 Android 的,因此不太確定其他平台的細節
這漏洞之所以嚴重,是因為被觸發之後就可以控制 Unity 打包出來的 app
但觸發條件是否容易,就看大家怎麼想了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.193.112.69 (日本)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_Chat/M.1759572390.A.698.html
1F:推 zseineo: 推 10/04 18:07
2F:→ peterturtle: 推 10/04 18:07
3F:推 WayThuz: 推 10/04 18:09
4F:推 nahsnib: 反正就是不要隨便點連結,然後正常的遊戲沒事 10/04 18:09
5F:推 togs: 惡意APP通常從哪種管道被安裝,或如何得知自己有沒有裝 10/04 18:10
6F:推 e5a1t20: 推 10/04 18:10
7F:→ togs: 推 10/04 18:10
8F:推 a205090a: 網路下載的apk 檔 10/04 18:12
9F:推 cdsjquiz: 推 10/04 18:12
10F:→ a205090a: 非官方的都默認成惡意app就好 10/04 18:12
11F:推 aoke: 上一篇的Unity公告網頁下面有寫說IOS跟遊戲機還沒找出可能性 10/04 18:12
12F:→ aoke: 但是為了以防萬一還是請更新這樣 10/04 18:12
13F:推 ltytw: 家裡長輩 很容易會被騙裝不明APP阿 10/04 18:13
14F:推 illya65536: 推分享 10/04 18:13
15F:→ a205090a: 內文還有提到一件事 不確定unity能不能滿足遠端攻擊的 10/04 18:14
16F:→ a205090a: 條件 如果不能的話 其實就是偷偷個資的事而已 10/04 18:14
17F:推 inte629l: 推 10/04 18:14
18F:推 XFarter: 但如果像是 Web-based 的 Unity Engine 的套件的話呢? 10/04 18:15
目前是還沒看到 web 相關的平台有問題,web 原本就沒辦法繞過瀏覽器執行指令
19F:推 dk2486248: 前景服務 10/04 18:16
20F:推 togs: 感謝回應 10/04 18:16
21F:推 eva05s: 推個 10/04 18:17
22F:推 testwindraja: 與其說"惡意","任意"寫來利用這漏洞的APP更準確 10/04 18:18
23F:推 iuytjhgf: 安卓你不搞Root的話要中招的算低 10/04 18:19
24F:→ iuytjhgf: 但Windows系統 就問在座有多少人是開administrator在用? 10/04 18:20
25F:推 SPDY: 利用Unity還是要看OS有什麼洞能鑽或有給什麼權限 10/04 18:20
26F:推 XFarter: 我個人的粗淺理解是雖然研究者實踐這個洞的方式是用 Andr 10/04 18:30
27F:→ XFarter: oid ,但這個洞的成因是 Unity 沒有做啟動參數的資料驗證 10/04 18:30
28F:→ XFarter: 後就直接「執行」,所以這一修才不是只影響到 Android 平 10/04 18:30
29F:→ XFarter: 台而是大家都中 10/04 18:30
看起來是這樣沒錯,我的理解也差不多
30F:推 rockmanalpha: 看起來就借Unity之手運行惡意程式碼 但遊戲有寫入檔 10/04 18:30
31F:推 fkukg52155: 感謝翻譯 推 10/04 18:31
32F:→ rockmanalpha: 案的情況不多吧 10/04 18:31
33F:→ rockmanalpha: 應該說有給使用者寫入檔案的情況 10/04 18:31
※ 編輯: Y78 (61.193.112.69 日本), 10/04/2025 18:33:52
34F:推 Richun: 通常都會看OS給到多大權限,Windows通常最危,Android則是 10/04 18:35
35F:→ Richun: 有資料外洩的可能,iOS看有沒有類intent的機制做直接通訊 10/04 18:36
36F:推 chualex66: ios的封閉機制就專防這種App伸出髒手的,沒事才是預料 10/04 18:37
37F:→ chualex66: 之中 10/04 18:37
38F:→ XFarter: 我後來想了一想 除了盜版以外其實第三方套件、Mod 甚至翻 10/04 18:38
39F:→ XFarter: 譯包都有可能可以利用這個洞== 10/04 18:38
準備個惡意檔案倒是可以透過這些來準備,但是要把啟動參數傳進去的話
可能就要看個別 app 了?如果能傳啟動參數,代表本來就可以執行指令了
(在電腦上的話啦),可能就是做為一種提權的手段
40F:推 sai007788: 就看你信不信官方本身跟知名補丁網站了 10/04 18:40
41F:推 CrazyLord: 簡單來說 只要你App不是從Goole/Apple商店載的都能預 10/04 18:42
42F:→ CrazyLord: 設是惡意 但不代表Google Play跟App Store裡的就一定 10/04 18:42
43F:→ CrazyLord: 安全 10/04 18:42
44F:推 cpu885: 推 10/04 18:43
45F:推 as920909: 遊戲只要有存檔功能就會有檔案讀寫權限 遊戲主機的提權 10/04 18:44
46F:→ as920909: 漏洞有很大一部分是遊戲有漏洞導致 10/04 18:44
47F:推 r24694648: 感謝內容,推 10/04 18:45
48F:→ tn1983: PC啟動遊戲裝第三方MOD就有機會中 10/04 18:50
49F:推 g5637128: 推 10/04 18:51
50F:推 ShibaTatsuya: 推 10/04 18:53
51F:推 SunnyBrian: 推,看不懂但有點安心了 10/04 19:06
52F:推 rainxo6p: 前面覺得還好反正手機只拿來工作用而已 但看到23樓後有 10/04 19:07
53F:→ rainxo6p: 點怕了-.- 10/04 19:07
※ 編輯: Y78 (61.193.112.69 日本), 10/04/2025 19:12:58
54F:推 AmeNe43189: 推 10/04 19:11
55F:推 ChikuwaM: 推 10/04 19:27
56F:推 Nighty7222: URL觸發就能啟動喔。好兇 10/04 19:37
57F:推 WiLLSTW: 透過Url打開的遊戲 有些手遊會做轉去外面儲值之後自己幫 10/04 19:50
58F:→ WiLLSTW: 你連回遊戲內的 10/04 19:50
59F:→ WiLLSTW: 還有就是安卓裝app的時候真的要檢查一下他到底要開哪些 10/04 19:51
60F:→ WiLLSTW: 權限 10/04 19:51
61F:推 hwider: 謝謝分享 10/04 20:09
62F:推 namirei: 推 10/04 20:12
63F:推 iam1vol: 推 10/04 20:15
64F:推 v86861062: 推推 10/04 20:26
65F:推 w9515: 推 謝分享 10/04 20:39
66F:推 a5480277: 請問 文章中提到的 Facebook Messenger相關資訊在哪啊? 10/04 20:45
67F:→ a5480277: 喔 看到了 原來是pdf 沒事 10/04 20:46
是的就是那個,有點長就懶得看了:
https://reurl.cc/MzEp13
跟這個洞本身關係不大就是了,只是關於透過 app 控制檔案寫入的地方可以參考
※ 編輯: Y78 (61.193.112.69 日本), 10/04/2025 20:49:56
68F:推 iamstudent: 感謝知識分享 10/04 20:48
69F:推 a5480277: 我網路不知為何卡爛 看不到這個PDF 先發表我的簡單看法 10/04 21:01
70F:→ a5480277: 文章中的示範指令都有明確代入package name 也就是說必 10/04 21:01
71F:→ a5480277: 需先知道想要啟用的app的具體package name,才會受影響 10/04 21:02
72F:→ a5480277: 另外透過URL啟動app的方式應該是指DeepLink 就像大家使 10/04 21:03
73F:→ a5480277: 用手機看網頁時 點下去會跳出問你是否要由某某app開啟 10/04 21:03
74F:→ a5480277: 這是因為那些app有宣告一個特定的pattern。當android發 10/04 21:04
75F:→ a5480277: 現你點的網址有這個pattern,就會問你是否要啟動該APP 10/04 21:05
76F:→ a5480277: 但文章中有提到 他也是去讀特定路徑下的惡意檔案 所以如 10/04 21:08
77F:→ a5480277: 果你手機裡並沒有該惡意檔案 其實根本不用太擔心 但考慮 10/04 21:08
78F:推 jackyT: 我昨天看到也一直在想什麼遊戲會自訂URI 實在想不到 10/04 21:14
79F:→ a5480277: 文章中說可以透過讀cache的方式搞鬼 我就不知道是否能夠 10/04 21:14
80F:→ a5480277: combo出其它行為來造成更大的破壞 10/04 21:15
81F:→ a5480277: 另外這看起來出問題時,你的app也會被打開彈出來 所以會 10/04 21:19
82F:→ a5480277: 比較容易被觀測到 10/04 21:19
83F:→ a5480277: 目前看起來感覺有點像SQL injection的那種狀況 就是那種 10/04 21:20
84F:→ a5480277: code沒寫好 使用者故意在帳密那邊打特定字串來破解 10/04 21:21
85F:推 XFarter: 看起來跟 SQL 的結果很像 但成因不同吧 10/04 21:30
86F:推 avans: 推說明 10/04 22:31
87F:推 hanmas: 推 10/04 22:43
88F:推 whhw: 推 10/05 00:06
89F:→ Tsozuo: 所以改理解成 這個漏洞只是惡意程式的啟動器這樣 10/05 01:14
90F:推 justanerd: 推 10/05 01:29
91F:推 clou: 推 10/05 10:12
92F:推 nothink0: 推 10/05 10:48
93F:→ fmp1234: 長姿勢 10/08 08:24