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