用戶在蘋果電腦上點擊了一條連結,在他眼裡,一切都那麼平靜。然而他並不知道,隨著點擊的輕響,無數數據在電腦中奔湧激蕩。在秒針跳動五次的時間內,蘋果公司頂尖程式設計師們藉由代碼構建的層層防禦體系毀滅殆盡,賽博世界的上帝悄然易主。電光火石間,黑客奪取了電腦的一切權限。
這件事,真實地發生在「黑客奧運會」——Pwn2Own 2016 上。做出這種華麗攻擊的,正是來自騰訊科恩實驗室的黑客們。令人髮指的是,他們還使用了另一種姿勢,再次讓 macOS 的世界失守崩潰。
正是這種震懾人心的黑客美學,幫助他們成功獲得了「世界破解大師」的稱號。
從今年3月開始,全世界都在等待這群「大師」揭秘那次神秘攻擊的方法。五個月過去了,科恩實驗室的黑客們終於決定還原這次攻擊的技術細節。他們選擇的舞臺,是黑客界的最高盛會——BlackHat USA。
【從畫左到畫右分別是:Gross,Flanker(何淇丹)、傅裕斌、陳良】
隱秘入口——關於那次攻擊的驚人真相陳良、Flanker(何淇丹)、傅裕斌、Gross,正是當時破解 macOS 的主力黑客。
他們親口講述的真相,幾乎超出所有人的想像:兩次完美的進攻,全部擊潰了蘋果的圖形渲染系統。這種攻擊方法,在世界上只出現過一次。而那一次攻擊的導演,仍然是他們。
這是一個隱秘的入口。
陳良告訴雷鋒網,
遠程攻擊是所有攻擊中難度較大的。而黑客進行遠程攻擊的首選正是瀏覽器 Safari。這兩次成功的攻擊,利用了兩套「Safari+圖形渲染」漏洞。
對於這種攻擊的發生,蘋果也負有一定的責任。Flanker 說,「在舊的蘋果系統中,一般的應用是無權調用 GPU 和圖形渲染系統的,所有的圖形渲染都必須通過「窗口管家」實現;而在新的蘋果系統中,為了保證用戶體驗的順暢,蘋果開放了普通應用調用 GPU 的權限。」
這正是一切災難的邏輯起源。
【macOS 圖形渲染系統工作邏輯示意】
畸形的數據簡單科普一下:如果一個 App 想要繪製圖形,需要提供一些邏輯坐標,這些坐標通過內核驅動器傳遞給 GPU 做繪製,進而轉換成物理坐標,出現在顯示器上。
對於已經通過漏洞「綁架」 Safari 的陳良一眾,可以偽造 Safari 的「矯詔」,向圖形繪製系統發出各種畸形的數據。
例如一個非常非常長的矩形,例如一個邊長為負數的矩形。
對於圖像渲染系統來說,無論 Safari 的命令有多麼不靠譜,他都無法「抗旨不尊」。於是,可憐的渲染系統手握小皮鞭,逼迫 GPU 畫出一個「邊長為負數的矩形」。於是 GPU 方了,它的世界崩潰了,各種不著四六的數據被寫進內存,黑客的嘴角露出一絲笑容。
然而,這還遠遠不夠。
【內存溢出示意】
精心構建的數據陷阱讓系統完全崩潰顯然不是黑客的目的,他們的目的是精準地控制這種崩潰——讓GPU的「哀嚎」組成一段「動人的交響曲」。
為了達到這個目的,他們面對「三座大山」。
1、他們要利用這個微小的創口,用手術刀精準地在內存裡排列出他們想要的代碼。
2、即便這麼艱難,但蘋果的代碼還是「閉源」的,他們必須通過逆向工程「猜」出蘋果的代碼邏輯。
3、雪上加霜的是,封閉的蘋果系統在安全防護上之決絕遠超 Windows。
事實上:他們每一個微小的動作,都會造成大面積的影響。
舉例來說,
這就像駕駛一部叉車穿針引線,連續完成一百次;
這就像帶上墨鏡打遊戲,連續通關一絲血都不費;
這就像同時交往一百個女朋友,還讓她們感覺不到彼此的存在。
總之,這件事情,比你的想像更難。
【現場展示對 macOS 的破解過程】
Flanker 告訴雷鋒網(公眾號:雷鋒網):
比較簡單的漏洞,可以允許黑客在任意地址寫任意值。這種情況就很容易。但是和圖形相關的漏洞通常是依靠 GPU 執行浮點運算。所以我們必須滿足它的性質——浮點數要對應很大的整形,所以必須在精確的內存位置布置極其特別的數據。
從技術上來說,他們需要找到一片穩定的內存,然後再極其短暫的時間內,把自己精心構建的代碼鋪進去。就像在飛馳的列車旁,精準地跳上一個指定的車門。然而,上帝在大多數時候並不那麼給力。
這個漏洞處於比較活躍喧囂的內存區,利用時一旦內存收到幹擾,就會失敗。所以我們發明了一套「內存風水論」。利用內存分配某些「先進先出」的特性,構造了一些「空洞」,然後想辦法讓我們的代碼正好落入這片「空洞」之中。
Flanker 解釋道。
以上的技術路徑,是兩套破解方案中較為複雜的一套,被他們稱為「內核態漏洞方案」,而另一套「用戶態漏洞方案」雖然理論相近,但利用方案相對簡潔。
【現場演示視頻中,攻擊者獲得系統最高權限】
永不消逝的噪音 VS 永不磨滅的黑客精神正如前文所言,這種破解相當於「在飛馳的列車旁,精準地跳上一個指定的車門」。然而,Flanker 和 傅裕斌 告訴雷鋒網一個殘酷的事實:存在一定的可能性,當你準確地跳向車門時,車門卻是關閉的。
這種在盜夢空間最底層將入侵者扼殺掉的力量,仍然是來自內存的「永不消逝的噪音」。Flanker 說,「用戶態漏洞方案」有15%-20%的失敗機率,而「內核態漏洞方案」雖然失敗機率極低,但是仍然難保 100% 成功率。
這些來自賽博實際的的噪聲,是他們盡了最大的努力,仍然不能控制的最低值。
在3月的 Pwn2Own 大賽上,嚴苛的賽制規定,一個團隊只能在15分鐘的時間內最多進行3次嘗試。也就是說,雖然概率很小,但是他們仍然有失敗的可能。
然而這一次,一直為他們出難題的上帝終於眷顧了他們,兩種方案全部一次攻擊成功,分別用時 5 秒和 1 分鐘。
上帝眷顧他們的理由或許很多,
但是有一條不容置疑,
那就是這群中國黑客身上流淌著的,永不磨滅的黑客精神。
雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。