資訊安全 漏洞 惡意程式 駭客

行動工作時代手機恐成資安破口 更新修補不容輕忽

獨力完成iOS零接觸攻擊 駭客示範利用漏洞技巧

2021-02-17
研究人員Ian Beer發現一個重大漏洞,讓攻擊者能夠入侵附近的iPhone並竊取個人資料,只須使用無線連線,無辜受害者不用點按iPhone,也不會看到警告。事後,Ian Beer透過Google及時回報了原始錯誤,並提出了有效防制的辦法。

 

知名的Google Project Zero研究人員Ian Beer最近發表一篇部落格文章,吸引了眾多媒體的注意。文章本身的標題非常準確又有趣:「一個iOS零接觸無線電近接漏洞的大冒險」。

但是,就如同這裡使用的標題「如何從對街某人的iPhone裡竊取相片」一樣,它精準地抓住了Beer發現的問題。

他發現的漏洞利用程序確實可以讓攻擊者入侵附近的iPhone並竊取個人資料,只要使用無線連線,無辜的使用者不用點按iPhone,也不會看到警告。

Beer的文章用一個短片做結論,展示他使用安裝在隔壁房間裡的駭客工具,自動從自己的手機上竊取了一張相片。

從iPhone裡竊取相片

一開始,他在一個房間裡使用iPhone拍攝了一張包含私密資訊的相片。然後,他讓手機的「使用者」(一隻巨大的粉紅色泰迪熊)高興地坐著觀看YouTube影片。

接著,他走到隔壁,開始利用手機上的核心錯誤進行自動空中攻擊。該漏洞將惡意軟體程式碼輕鬆地上傳到手機,授予自己存取Photo應用程式資料目錄的權限,接著讀取包含私密資訊的相片檔,之後神不知鬼不覺地上傳到隔壁的筆記型電腦。

在整個過程中,手機繼續正常工作,沒有出現警告、彈出視窗或任何可能讓使用者警覺到被駭客入侵的跡象。那真是個壞消息!

好消息是,Beer使用的核心漏洞是他本人幾個月前發現的,已經向Apple公司回報並且已經被修補。據Beer的說法:「這個特定問題已在2020年5月iOS 13.5啟動隱私保護連絡人追蹤功能之前就已經修正。」因此,如果已經在過去幾個月中更新過iPhone,那麼應該可以躲過這種特殊攻擊。

另一個好消息是,Beer本人承認自己花了六個月詳細而專注的努力,才弄清楚如何攻擊自己發現的這個錯誤。

為了讓大家了解Beer費了多大工夫才完成這一個5分鐘長的「泰迪熊資料被竊大冒險」影片,或是真的想仔細拜讀Beer這一篇優秀的文章,貼心提醒你,他這一篇部落格貼文字數超過30,000個字,比喬治•歐威爾(George Orwell)的小說《動物農莊》(Animal Farm)或查爾斯•狄更斯(Charles Dickens)的《小氣財神》(A Christmas Carol)更長。

當然,大家可能會想知道,為什麼Beer要使用一個他已經發現並回報的錯誤,又花很多工夫將其武器化(用一個網路安全中常見的準軍事術語來說)。Beer在文章(https://googleprojectzero.blogspot.com/2020/12/an-ios-zero-click-radio-proximity.html)一開頭時就親自給出答案:這個專案的結論不應該是「沒有人會花六個月的時間來破解我的手機,我沒事!」

相反地,結論應該是:「一個人在自己的房間裡獨自作業,就可以創造出一種能力,能夠嚴重危害鄰近的iPhone使用者。」

明確地說,Beer的確透過Google及時回報了原始錯誤,而且據我們所知,沒有人比他更早發現這個問題。因此,沒有任何跡象表明在現實生活中已經有任何人利用過這個錯誤。

但重點在於,可以合理地假設,一旦核心層級的緩衝區溢位錯誤被發現,即使已經出現了最新和最強大的漏洞利用防禦措施,鍥而不捨的攻擊者也可能會利用它發動危險的漏洞攻擊。

即使位址空間配置隨機化(ASLR)和指標驗證碼(PAC)等安全控制大幅提高了網路安全性,但它們並不是萬靈丹。

正如Mozilla在修復Firefox記憶體管理缺陷時所言,甚至是開發團隊也無法或不知道如何利用自身的微小或鮮為人知的錯誤:「其中一些錯誤顯示記憶體有被破壞的跡象,在花一些工夫之後,某些漏洞可能已經被利用來執行任意程式碼。」

簡而言之,找出錯誤不可少、修補它們最關鍵、從錯誤中學習很重要;但是,仍然必須持之以恆地發展自身的網路安全防護。

Beer的進攻之路

三言兩語很難描述出Beer的大工程,這裡簡要描述他使用的某些駭客技巧(或許簡化到有點過頭了):

‧發現一個聽起來有些危險的核心變數名稱。這個很炫的名稱是IO80211AWDLPeer::parseAwdlSyncTreeTLV,其中TLV代表type-length-value,一種在一端打包複雜資料,在另一端進行解構(解譯)的方法,而AWDL則是Apple Wireless Direct Link的縮寫,這是Apple專有的無線網狀網路功能,例如用於AirDrop。這個函式名稱表示其中包含複雜的核心層級程式碼,但外部裝置傳送過來的未受信任資料可以直接使用這些程式碼。這類程式碼通常出自於危險的程式編寫錯誤。

‧發現TLV資料處理程式碼中的錯誤。Beer注意到一點,在此情況下,TLV資料物件被限制為只有60個位元組(最多10個MAC地址)的記憶體緩衝區,但被誤以一般的1,024位元組安全限制進行了長度檢查,而不是可用緩衝區的實際大小。

‧建立一個AWDL網路驅動程式堆疊以產生有問題的封包。諷刺的是,Beer一開始是參與一個現有的開放原始碼專案,該專案的目的是與Apple公司的專屬程式碼相容,但是卻沒辦法產生出他想要的結果。因此,他最後開發了自己的版本。

‧他找到一種方法,讓緩衝區溢出封包可以順利通過其他地方的安全檢查。雖然主要的核心程式碼有缺陷,並且沒有正確地進行最終錯誤檢查,但是一些局部前導檢查仍使攻擊非常不易得手。順道一提,就像Beer指出的,在低階程式碼中(尤其是對效能非常重要的情況下),假設「不可信任的資料都已經清乾淨」誘因不小,因此在最重要的地方常跳過錯誤程式碼檢查。千萬不要這樣做,尤其當關鍵程式碼是在核心時!

‧了解如何將緩衝區溢出變成可控的堆積損毀。如此一來,就有一種可預測和可利用的方法,使用AWDL封包強制未經授權讀取和寫入核心記憶體。

‧Beer一共試了13種不同的Wi-Fi網路介面卡,以找到發動攻擊的平台。Beer希望能夠在當今廣泛使用的5GHz Wi-Fi頻道上發送有毒的AWDL封包,因此他必須找到一個可以重新設定以滿足需求的網路介面卡。

到此時,Beer其實已經達到概念驗證的目的,其他大部分人都會就此止步。

只要啟用AWDL網路連線,他就可以利用核心的讀寫能力由遠端強制叫出其他人手機上的計算機(Calc)App,例如在照片(Photos)App中使用「分享」圖示,然後利用AirDrop傳送自己的檔案的時候。

儘管如此,他還是決定將這個成果提升到所謂的零接觸攻擊,在這種攻擊中,受害者什麼事都不用做,只要「正在使用手機」就可以。

可以想像,零接觸攻擊的危險性要大得多,因為即使是警覺性高的使用者也不會事先看到任何警告跡象,警覺到即將發生的麻煩。

因此,Beer還想出了以下技術:

‧冒充附近想透過AirDrop提供檔案分享的裝置。如果你的手機認為附近的裝置可能是你的連絡人之一,則根據它傳輸的藍牙資料,它將暫時啟動AWDL並檢查其身分。如果對方不是你的連絡人之一,你不會看到任何彈出視窗或是其他的警告,但自動啟動的AWDL子系統,將會短暫暴露這一個可以被利用的AWDL錯誤。

攻擊者利用程序入侵附近的iPhone並竊取個人資料。

‧繼續發展下去,我們能做到的不只是彈出如計算機等現有的App。Beer想出如何使用初始漏洞發展成一個詳細的攻擊鏈,可以讀取裝置上的任意檔案並竊取它們。

在影片中,攻擊已經接管了一個開始運作的App(還記得嗎?泰迪熊正在觀看YouTube);從核心內部將App排除在「沙箱檢查」外,因此它不再只能使用自己的資料;使用該App存取照片(Photos)App所屬的DCIM(相機)目錄;竊取最新的照片檔案;然後使用看似無辜的TCP連線把它偷出來。

依循四秘訣做好防護

如此一來,那該怎麼辦呢?

秘訣1:請確保已經使用最新的安全修正程式,因為Beer最初發現並公開了這個Beer攻擊鏈中核心的錯誤,因此該漏洞已被修補。請前往「設定」→「一般」→「軟體更新」。

秘訣2:不需要時關閉藍牙。Beer的攻擊提醒了「少即是多」這一點,因為他需要藍牙才能將其轉變為真正零接觸攻擊。

秘訣3:永遠不要假設因為錯誤看似「很難用」,就永遠不會被利用。Beer承認,這個錯誤很難(非常難)被利用,但並非完全不可能。

秘訣4:如果你是程式設計人員,請嚴格處理資料。仔細進行錯誤檢查,絕對有用。

呼籲所有設計人員:抱持樂觀,希望所有呼叫你的程式碼的人都至少檢查過一次錯誤;但要做最壞的打算,意思是假設他們沒有。

<本文作者:Paul Ducklin是一位熱情的安全推廣大使,就像是個技術佈道者,猶有過之!他將電腦安全視為生命,並很樂意看到您也這樣做。>

 


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!