如果您是 Steam 遊戲平台的訂閱者,您可能已經注意到更新4月4日起停止客戶端軟體。它修復了一個神秘的錯誤,該錯誤導致軟體因格式錯誤的 UDP 封包而崩潰。發現此缺陷的研究人員 Tom Court 現已發表所有技術細節。令人驚訝的是:事實證明,這個錯誤實際上使得控制任何連接使用者的電腦成為可能,而這種情況至少從 2008 年一直持續到 2017 年 7 月。
問題出在Steam協定上,它依賴UDP。在其軟體實作中,不良的資料包長度檢查可能會導致記憶體損壞。因此,將格式錯誤的 UDP 封包傳送到使用者的 PC 並在那裡執行任何程式碼就足夠了。
攻擊者必須先分析受害者的流量
為了實現這一點,攻擊者必須先觀察受害者的流量,以便識別所使用的 IP 位址和連接埠號,以及 Steam 封包的序號。此資訊對於將惡意資料包作為合法資料包傳遞給客戶端軟體是必需的。
在一個Youtube 影片,Tom Court 示範了這樣的攻擊。最後我們看到發送的資料包導致計算器打開。
這種攻擊直到 2017 年 7 月 11 日才成為可能,當時 Steam 將名為 ASLR(位址空間佈局隨機化)的記憶體保護功能整合到其客戶端軟體中。在此日期之後,記憶體損壞不再允許執行任意程式碼。但是,它可能會使軟體崩潰。
Tom Court 強調了 Steam 開發者非常強大的回應能力。他們於 2018 年 2 月 20 日收到警報,並在不到 12 小時內開發了一個補丁。不幸的是,這樣一個總而言之非常簡單的錯誤,在程式碼中保留了很長時間而沒有被發現。這就是為什麼安全研究人員鼓勵開發人員定期審核他們的舊程式碼並更新它。