這些種種新聞報導,都是沈亢2023年查詢相關資料的時候看到的。
但實際上,在事情發生的2018年,沈亢毫無知覺。
2018年的沈亢,還住在出租屋裡,每天早上七點爬起來,到小區門口的路邊攤買個煎餅,登上公交車後,嘴裡叼著煎餅、雙手在錢包里翻找著公交卡。
到了公司里,也是喝一杯咖啡就投入工作,做著永遠做不完的報表,寫著永遠寫不完的報告。
下班之後,回到家裡,打開電腦,準備來上一局英雄聯盟虐虐菜,結果發現,該死的n10又自動更新了。
更新完之後,電腦竟然還變更卡了——不過也正常,n10嘛,就是這樣,又流氓,又坑爹,習慣了。
他以為變卡只是n10的常態,就像早高峰和月底的信用卡帳單一樣,是生活里理所當然的一部分。
那時的他還不知道,他的電腦變卡,是全世界通力合作的結果:
大洋彼岸的某位英特爾工程師,在深夜的會議室里抽光了半包煙,反覆權衡著補丁的性能損耗和漏洞風險,最終在郵件末尾簽下了「la「;
某個他從未聽說過名字的微軟內核開發人員,加班到晚上十點,把那段會拖慢數千萬台電腦的代碼合進了n月度更新里,關掉時看了眼時間,心想還能趕上末班地鐵;
某個雲服務商的運維工程師,在凌晨兩點被電話叫醒,睡眼惺忪地連上vpn,對著腳本確認了三遍後按下回車,看著上千台伺服器在一行行綠色日誌里逐台重啟,然後在工作群里敲了一句「n「……
而沈亢,坐在那間出租屋的書桌前,對這一切一無所知。
他只是那數十億個普通用戶里,最普通的一個。
他甚至連自己被補丁拖慢了這件事都不知道——他只是習慣性地、自然而然地,把這口鍋扣在了n10頭上。
然後,對著屏幕罵了一句「破n10「,退了遊戲,關機睡覺。
五年後他才知道,那晚讓他英雄聯盟團戰掉幀的,不是微軟的更新策略,而是一次跨越國界、耗時數月的、人類歷史上最大規模的硬體漏洞應急響應。
而他自己,以一台三千塊錢的筆記本為載體,以一個團戰卡頓的遊戲玩家的身份,被動地、毫不知情地,參與了這次全行業規模龐大的集體行動。
這一切的起源,就在於那個名字
幽靈\\/熔斷
……
想起這個名字來,沈亢也終於明白了,為什麼之前,自己聽到蕭伯年說「預測執行」的時候,會有一種在哪裡聽過的感覺了。
熔斷,主要利用的是cpu的亂序執行機制。
而幽靈,主要利用的,就是cpu的預測執行機制。
預測執行的機制運行的時候,就像蕭伯年說的一樣,是「猜」。猜對了就執行,猜錯了就回退。
但是就像一句話說的那樣,凡走過,必留下痕跡。
預測執行的回退,也會在緩存中留下痕跡,又或者說「影子」。
攻擊者利用幽靈做的,就是「欺騙」cpu去做一件它本不應該做的事,留下那件事的「影子」,然後讀取那段「影子」。
這是硬體層面的。
這也是,幽靈和其他那些針對系統層面的傳統攻擊手段不一樣的地方。
舉個例子:
這就好像,你擁有一個圖書館(電腦),裡面有一位圖書管理員。
病毒,就是一個外人給圖書管理員的水裡下毒,管理員喝了,神志不清,自己把書拿出來給了他。
木馬,就是一個「熱心群眾」,幫管理員裝了一套「智能圖書管理系統」,說能提高效率。管理員裝完之後,圖書館裡不少書的信息都被發到了某個郵箱。
釣魚,是有人給管理員發了一封郵件,署名「館長」,說「把某某書的信息發到這個郵箱」。管理員一看是「館長」發的,就照辦了。
,是有人僱傭了幾百個人湧進圖書館裡,一片混亂,圖書管理員一個人根本應付不來,然後就有人趁亂,把他想要的書偷走了。
病毒、木馬、釣魚、,這些都是有跡可查的。
身為館長的你,一回來,發現管理員神志不清,還比著剪刀手,就知道出事了。
你發現多了一個「智能圖書管理系統」,就知道出事了。
你跟管理員一對帳,說自己沒給他發過郵件啊,就知道出事了。
你一看滿屋子的腳印,門都被擠壞了,管理員也是衣衫凌亂,像是被十八位大漢輪過一般,更知道出事了。
這些手段,也比較容易防範。
你可以讓管理員別亂喝外面的水,讓管理員別隨便亂裝什麼智能管理系統,讓管理員看到署名「館長」的郵件時先別急著辦事、先打電話跟你確認一下,你還可以雇一批保安,下次再有幾百個人過來直接攔住。
但是幽靈不同。
幽靈只是一位彬彬有禮的顧客,名字叫克萊恩·莫里亞蒂。
他穿著深色的正裝外套跟馬甲,內搭白色襯衫,下身一條深色長褲,戴著絲綢禮帽,手裡拿著一根手杖,隨身還帶著一塊懷表。
來到櫃檯前,他摘下帽子,禮貌地朝管理員微微頷首,用他那溫和而略帶書卷氣的聲音開口:
「您好,我想借閱那本《安提哥努斯筆記》。」
「就是羊皮封面、燙有紅銅紋章、據說是第四紀那位瘋狂家族遺留下來的手稿。我聽說館裡有一份經過封印處理的副本,編號在『禁區典籍』那一欄。」
管理員的工作流程,是「有人來借書,先跑去把書從書架上取下來,再核對借書人的證件」。
於是,管理員就去把那本《安提哥努斯筆記》拿了過來。
然後,回到櫃檯,把那本燙著紅銅紋章的羊皮手稿放在桌面上,雙手按住書封,抬起頭,正式端詳起面前這位紳士。
「先生,請出示您的借閱證。」
克萊恩的表情出現了一絲恰到好處的遲疑。
他把手伸進馬甲內袋,摸了摸,又摸了摸外套內側的口袋,甚至微微側身翻了一下褲袋,然後帶著歉意的微笑重新抬起頭來。
「實在抱歉。我出門時換了一件外套,證件忘在另一件衣服里了。」
他語氣誠摯,表情溫和,把一個健忘的學者形象演繹恰到好處。
管理員搖頭,「先生,按照圖書館的規矩,沒有借書證,無法將這本書借給你。」
「這樣啊,」克萊恩的語氣有一絲失落,「那麼,打擾了。」
他重新戴上絲綢禮帽,手杖在地面上輕點了一下,轉身朝門口走去。
靴子踩在木地板上,發出均勻而有節奏的聲響。
請收「藏「」「」小」說」唯」一「網」址」:「「」」.」」「」」」」.」「」」,「站」「長」只「有這一個網「站,其它網「站隨「時斷「更。」
走到門口時,他停了一步,微微側過頭來,用那種溫和的、帶著書卷氣的聲音說了一句:
「對了,那本書的第三章第七頁,右下角有一處批註,寫的是『祂在注視』。我聽說那行字不是原作者的筆跡,也不知道是誰寫上去的。您有空的話,可以看一看。」
說完,他推開玻璃門走了出去,身影消失在街角。
管理員怔怔地望著那扇關上的門,又低頭看了看桌上的筆記。
他的手指不受控制地翻開了第三章,第七頁,右下角——果然有一行細小的、用暗紅色墨水寫成的字:
「祂在注視。」
管理員渾身一顫,猛地合上書頁,像被燙到了一樣把手縮了回來。
他下意識地把筆記鎖回黑鐵柜子里,又檢查了兩遍鎖扣是否扣緊,才長長地吐出一口氣。
可他不知道的是,就在他剛才抱著那本書從藏書室最深處走到櫃檯前的那段路上,在他把書翻開、確認版本、又合上放好的一整套流程中,書里某一頁的內容,早已經被「讀取」了。
不是被眼睛,不是被記憶,而是被一種更底層、更隱秘的方式。
像是一團灰色的影子。
圖書館外
克萊恩走在街上,手杖敲擊著石板路,帽檐下的嘴角微微一勾。
他兜里的那本隨身筆記本上,剛剛多出了一行自己沒寫過的字——那是他在管理員取出筆記的瞬間,用「愚者」的權限,在灰霧之上「看到」的內容。
他根本沒有碰到那本書。
但那本書的信息,已經在他腦子裡了。
身為館長的你,這時候也回來了。
你按照慣例,問圖書管理員,有沒有什麼發生事。
圖書管理員說「沒有」,也沒有提那位莫里亞蒂先生的事——圖書館每天借書的人太多了,忘帶證件的人也太多了,這是一件不必被記錄的事。
你又核對了一下借書單和庫存,沒有錯漏。
書沒錯,管理員也正常,門口也沒有亂七八糟的腳印,一切都正常。
所以,管理員不知道發生了什麼,身為館長的你,也不知道發生了什麼,圖書館還是那麼安全,固若金湯。
但是消息,已經被泄露到了灰霧之上。
……
「這下真讚美愚者了。」
沈亢喃喃自語。
幽靈\\/熔斷的公布,也開啟了一個新的時代。
在2018年、幽靈\\/熔斷被公布之前,安全研究主要集中在軟體層面和密碼學算法上,硬體被認為是「可信的根基」。
而在幽靈\\/熔斷被公布之後,人們發現了新大陸。
英雄好漢,層出不窮。
預兆,(fha),
輻射,(fallut),
隕落,(nfall),
騎士,(vltjcky),
盜夢空間,(ncptn),
幽靈下一代,(pct-n),
幽靈競態,(htac)……
這種情況,就有點像《海賊王》的開篇——想要我的財寶嗎?想要的話可以全部給你,去找吧!我把所有財寶都放在那裡。這句話讓全世界的人都湧向了大海,由此開啟了大海賊時代。
放在計算機行業,就是:
想要越過作業系統與虛擬機的至高隔離牆嗎?
想要跨越用戶態與內核態的絕對權限鴻溝嗎?
我沒有抹去預測執行留下的任何物理痕跡——即便指令已被邏輯拋棄,緩存依然銘記,緩衝區依然迴響。
你想要的那把王權之鑰,就藏在這些瞬態執行的餘燼之中。
去找吧。
我把穿越一切安全邊界的高權限之門,放在了cpu的微架構深處。
於是,全世界的安全研究員紛紛湧入這個曾經被視為「不可能存在漏洞」的硬體底層。
自此,微架構攻擊的「大探索時代」,正式開啟。
但那是在2018年。
而現在,是2009年。
這還是一個「天翼3太快了!」的時代。
英特爾的最強處理器還是7-965,採用極為先進的45納米工藝,4核8線程,主頻高達3.2hz,倍頻未鎖定,用液氮可超頻到恐怖的5.5hz,僅售7999元!
沈亢會在炎熱的夏天,給何秋竹買上一根五毛錢的小布丁,看她吃津津有味。
諾基亞的經典鈴聲在自習室此起彼伏,手機一震,全教室的人都低頭看。
宿舍里,有人用「快播」看片,有人用「電驢」下梅劇,學校里的公用電話還活著,投幣5毛,能打三分鐘。
安全圈裡的大神都在玩l注入、和木馬免殺,拿到一個bhll就能吹三天。沒有人看cpu,沒有人看緩存,沒有人覺硬體也會撒謊。
整個世界都還沉浸在一種樸素而天真的技術秩序里,像一艘沒有雷達的船,安安穩穩地漂在暴風雨前的海面上。
這就是2009年。
距離2018年,還有9年。
在漏洞被發現之前的,這9年裡、也或者是8年裡,幽靈\\/熔斷,就是一個無人知曉、但是實際存在於所有計算機中的無解「後門」。
這意味著什麼?
這意味著,這是一把打開這個世界的鑰匙。
因為這是一個資訊時代。
華爾街的交易系統,每秒處理數百萬筆訂單,每一筆都經過cpu;梅聯儲的清算網絡,跨國銀行的ft報文,股票市場的撮合引擎,全部跑在晶片上;世界各地的atm機,吐出鈔票之前,cpu已經完成了幾十次加密運算、餘額校驗、身份比對。
光纜穿過太平洋底,路由器日夜不停地轉發數據包,而每一個數據包從進入網卡到離開網線,中間要經過無數次處理——都是cpu;天上的p衛星在計算星曆,地面的接收機在解算位置,飛彈的制導系統在修正軌跡;醫院的ct機在重建圖像,血液分析儀在匹配指標,電子病歷資料庫在幾毫秒內調出一個人的全部病史。
發電廠的c系統監控著鍋爐溫度,鐵路調度中心的計算機自動排列進路,民航客機的飛行管理系統在巡航高度上不停地計算油量與速度。
這個時代里,每一個值被記錄的瞬間,幾乎都有一塊晶片在背後靜靜地執行指令。
它不聲張,不越權,不犯錯。
它被視為整個信息世界的基石,一塊一塊地鋪在人類文明的最底層。
人們相信它,像相信地基不會飛走,像相信銀行金庫的鐵門不會被風吹開。於是,全世界所有的秘密都被放心地交給它。
重要公務行程,外交系統的加密通信,跨國公司的核心報價,軍隊的部署數據,醫院的隱私病歷,每一張銀行卡的密碼,每一封電子郵件,每一次深夜的搜索記錄。
數據從鍵盤出發,進入內存,流過總線,最終都要經過cpu的手。
cpu是唯一的、不可繞過的中間人。
它什麼都看見。
只是沒有人問它,看見了什麼。
而現在,有一位高冷男神知道了,可以問它——「喂,小子,你看見了什麼?告訴我。」
如果是十幾年後的cpu,她會忍痛拒絕高冷男神的誘惑,低頭看鞋,說「我不知道,別問我」。
但是現在的cpu,就像是一個從來沒有朋友的孤獨小女生,會眨巴著一雙大眼睛,高興地說出她所知道的一切。
因為十幾年後的cpu,有人教過了。
而現在的cpu,還從來沒有人告訴過她,那些是秘密。
……
當意識到這一點後,沈亢忽然產生了一種怪的感覺。
一種前所未有的,「強大」的感覺。
就算是重生者,就算自己重生以來不停創業,擁有的越來越多,但是沈亢從來沒有過這種「強大」的感覺。
因為他從沒妄想過,自己可以影響ft;他從沒妄想過,自己可以接觸到駐外使館級別的層次;他更加從沒妄想過,自己可以參與到那種影響世界格局的大國博弈中去。
他就是一個普通人。
就算重生了,也依然是一個普通人。
他能多賺點錢,能幫助福利院的夥伴們有一個更好的未來,能讓更多的人因為自己而生活更美好,那已經是非常成功了。
那種太高層面的事,是他這樣一個普通人無法觸及的。
所以,他不「強大」。
可是,現在不同了。
他似乎有機會,影響到ft的運行。
他似乎有機會,看到駐外使館級別的機密。
他似乎有機會,
影響世界格局。
……
蕭伯年注意到,一旁的沈亢半天沒動靜,安靜地異常。
孩子靜悄悄,必定在作妖。
蕭伯年也不知道,自己腦子裡為什麼忽然閃過這句話。
然後他就下意識地扭頭看了過去,就看到沈亢安靜地坐在椅子上,並沒有作妖,只是臉上的表情很怪,前所未見的怪。
「你在想什麼?」
蕭伯年下意識問道。
沈亢也終於因這句話回過神來,遲鈍地扭了下脖子,眼神有些呆滯,像是剛從一場大夢中醒來。
眨巴了兩下眼睛,才恢復了往日的清醒。
隨後,忽而一笑。
「我在想,是『全球計算機水平下降一萬倍』好玩,還是造一桿200米口徑的狙擊槍好玩。」