電子遊戲主機的安全防護機制歷經了近半個世紀的演進,從最初完全沒有保護的「狂野西部」時代,發展到現代採用多層次防禦的成熟系統。這段歷史不僅見證了遊戲產業的技術變革,也為當今嵌入式系統的安全設計提供了重要啟示。

早期主機的零防護時代

1977 年推出的 Atari 2600 幾乎沒有任何安全機制。主機硬體無法驗證卡帶是否為合法軟體,任何連接到正確連接器的 ROM 晶片都能執行。當時唯一的障礙是物理和經濟層面的:你需要製造卡帶的硬體設備。這導致了第三方廠商如 Activision 的興起——由離開 Atari 的工程師創立,因為技術上沒有任何東西能阻止他們製作自己的遊戲。

硬體鎖定晶片:10NES 的興起

1983 年北美電子遊戲市場崩盤後,Nintendo 在 1985 年推出的 NES(Nintendo Entertainment System)引入了首款硬體強制的軟體控制機制——稱為 10NES(後來稱為 CIC,Checking Integrated Circuit)的專用安全 IC。

這個晶片採用挑戰-回應認證系統:主機內的 10NES 晶片會與每張合法卡帶中的配對 10NES 晶片通訊。如果認證握手失敗,主機會持續重置(每秒一次),產生著名的閃爍畫面。

然而這項機制很快就被破解。Atari 的子公司 Tengen 著名地逆向工程了這個晶片,製造了自己的複製品。同時,自製遊戲社群發現物理禁用主機內的 CIC 晶片就能繞過保護。

光碟時代與 Modchip 的誕生

1994 年的 PlayStation 從卡帶轉向 CD-ROM,Sony 意識到日益便宜的 CD-R 燒錄機使盜版成為嚴重威脅。因此創建了以兩個相關概念為中心的複製保護方案:光碟機韌體尋找光碟內部非標準擺動區域中編碼的特殊區域 SCEx 認證訊號,以及光碟的區域/授權識別碼必須與主機的市場相符。

這引進了新的攻擊面,並推廣了一類新的硬體修改——modchip。典型的 PlayStation modchip 是焊接在主機板上的小型微控制器,它偽造 SCEx 認證序列,允許光碟機接受複製或跨區的碟片。

加密簽章進入主機

2001 年的原始 Xbox 是最早實施加密信任鏈的主要家用主機之一,其根基於 MCPX 晶片內隱藏的啟動區塊。啟動區塊解密並驗證外部引導載入程式,後者再解密並驗證內核,然後內核對其載入的軟體執行簽章檢查。

然而安全啟動鏈並非無懈可擊。研究員 Andrew “bunnie” Huang 透過監聽 HyperTransport 匯流排恢復了 Xbox 的隱藏啟動 ROM,因為啟動碼以明文形式通過該匯流排。

緩衝區溢位與軟體漏洞

存檔檔案證明是令人驚訝的有效攻擊向量。多款原始 Xbox 遊戲——MechAssault、Splinter Cell 和 007: Agent Under Fire——的存檔解析器未能驗證輸入長度。精心製作的存檔可以溢位緩衝區並在遊戲程序內獲得程式碼執行。由於 Xbox 遊戲在核心模式執行,單一可利用的遊戲意味著完整的系統控制。

Nintendo Wii (2006) 重複了相同模式。Twilight Hack 利用了 The Legend of Zelda: Twilight Princess 中的堆疊緩衝區溢位,透過包含 Epona(Link 的馬)過長名稱的精心製作存檔檔案觸發。

安全啟動的失敗案例

第七世代主機——PlayStation 3 (2006)、Xbox 360 (2005) 和 Wii (2006)——大量使用非對稱加密來執行程式碼簽章。理論聽起來完美,實現卻不然。

Xbox 360 的 “JTAG/SMC Hack” 是最早且最複雜的攻擊之一,鏈結了多個攻擊面以實現未簽署程式碼執行。而 2011 年的 Reset Glitch Hack (RGH) 使用精確計時的重置故障——通常結合暫時降低 CPU 時脈——跳過引導載入程式雜湊比較。

PlayStation 3 的故事從密碼學角度更具啟發性。Sony 使用 ECDSA 簽署關鍵 PS3 軟體,而 ECDSA 需要每個簽章都有新鮮、不可預測的隨機數。重複使用該隨機數,就可以僅從簽章中代數恢復私密簽署金鑰。Sony 的失敗超過了使用弱隨機值——實作使用了常數:每個簽章都使用相同的固定數字作為隨機數。

研究員 George Hotz (geohot) 隨後公開發布了 Sony 的私密簽署金鑰,使在信任該金鑰的 PS3 主機上將任意程式碼簽署為合法成為可能。

現代主機的安全挑戰

2017 年的原始 Nintendo Switch 基於 Nvidia 的 Tegra X1,其安全啟動信任根實作在 BootROM 程式碼中。2018 年,安全研究員 Kate Temkin 和 ReSwitched 團隊披露了 fusée gelée (CVE-2018-6242),這是 BootROM USB 復原模式處理器中的緩衝區溢位漏洞。

觸發此漏洞只需要一段電線短路右 Joy-Con 連接器上的兩個接腳,以及 USB 連接到 PC 或小型加密狗。

對於 PlayStation 4 (2013),雖然沒有廣泛記錄硬體信任根的公開破解,但發布了多個遠端程式碼執行漏洞,允許在正常啟動後執行未經授權的軟體。

三十年的安全啟示

回顧現代主機如 PS5 或 Xbox One/Series,它們擁有設計良好的安全嵌入式設備的所有緩解措施:安全啟動、完整磁碟加密、透過 Hypervisor 的隔離、強大的更新系統等。然而,只要有足夠的資源和動機,足夠複雜的系統最終都會被利用。

例如,PS5 有公開記錄的漏洞和利用鏈,包括透過 HackerOne 報告的 BD-J 利用鏈,鏈結了五個漏洞來執行任意負載。對於現代 Xbox 平台,2024 年公開的工作暴露了 Xbox One 和 Xbox Series 上的 SystemOS 核心利用。

最終,主機廠商學到技術緩解措施本身是不夠的。因此他們添加了服務鎖定作為補充措施。例如,如果你破解 PS4,將失去 PlayStation Network 的存取權。

原文重點

  • 早期無防護時代:Atari 2600 等早期主機完全沒有安全機制,任何卡帶都能執行
  • 硬體鎖定晶片:NES 引入 10NES 晶片,但透過逆向工程和物理修改迅速被破解
  • 光碟與 Modchip:PlayStation 的光碟保護引進了 modchip 修改晶片產業
  • 加密簽章時代:Xbox 引入加密信任鏈,但仍透過匯流排監聽等方式被破解
  • 軟體漏洞:存檔檔案的緩衝區溢位成為有效的系統層級攻擊向量
  • 實作失敗:PS3 的 ECDSA 隨機數重複使用導致私密金鑰洩露
  • 現代挑戰:即使擁有多層次防禦,複雜系統仍可能被利用
  • 服務鎖定:廠商透過失去線上服務存取權來嚇阻破解行為