汎用Bug決戰兵器
Fail0verflow提到這個破解手法不同於先前手法,不需要事先取得APU(PlayStation 4的處理器)的控制權,並且可以相容於一般版PlayStation 4的Aeolia南橋晶片,以及PlayStation 4 Pro的Belize南橋晶片。
先前Fail0verflow取得在初代PlayStation 4主機的SAA-001主機板上執行程式的相關權限,而其南橋晶片型號為CXD90025G(內部代號為Aeolia)。雖然Sony也陸續推出許多不同版本的主機,但即便是當下最新搭載採用NVB-003主機板的PlayStation 4 Pro主機,Fail0verflow卻在x86 FreeBSD環境下對南橋晶片驅動程式進行逆向工程時發現,型號為CXD90046GG(內部代號為Belize)的南橋晶片在功能上幾乎與Aeolia相同,而在「我們關注的功能」上也沒有差異,所以破解手法具有高度汎用性,基本上適用於目前所有版本的主機。
利用HDMI CEC打針下藥
在PlayStation 4的開機流程中,系統會先執行EMC區塊中的初始程式讀取器(IPL),接著執行EAP區塊中的核心開機讀取器(KBL),並啟動存放於硬碟中的FreeBSD作業系統。
然而IPL與KBL所使用的加密金鑰都儲存於sflash中,並會依南橋晶片版本不同而異,但是存放於硬碟中的FreeBSD核心卻只有1種,這代表著在不同的硬體版本中,FreeBSD核心的金鑰都是一樣的,所以當我們可以完整解密Aeolia的開機程序,就能找到FreeBSD核心的金鑰,接著只要替換硬碟中的EAP區塊分割區,就能輕鬆取得EAP相關存取權限。
為了要在不取得APU控制權的前提下取得EMC控制權,我們還需要可用的跳板漏洞,然而這個漏洞就是HDMI CEC。CEC(Consumer Electronics Control)主要的功能為裝置間互相溝通,比方可以讓播放器透過HDMI纜線遙控電視電源、音量等等,使用者只要開啟PlayStation 4的允許HDMI裝置連結(Enable HDMI Device Link),就能啟用該功能。
接下來的工作就是要透過CEC與系統「溝通」,為了要完成這個任務,Fail0verflow透過先前找到的Syscon(System Controller,系統控制器)權限來關閉並重新開啟HDMI編碼器的電源,接著送入名為HDMI_INTRID_CECRX的中斷(Interrupt),就能注入想要的程式碼。
關於更多漏洞的細節資訊,可以參考Fail0verflow在部落格提出的說明。
Fail0verflow表示透過這個方式,他們已經能夠傾印EMC韌體,以及取得EMC的程式執行權限,雖然目前無法取得最底層的根金鑰(Root Keys),但可能可以透過旁路攻擊的方式取得金鑰。
駭客Wololo也在自己的部落格提到,雖然不能確定是否會有開發者根據這些資料著手設計PlayStation 4的改機晶片,但他個人不會對在近期聽到相關新聞感到意外,留給大家很大的想像空間。
加入電腦王Facebook粉絲團