安卓手機成了遠端竊聽器?查完竟是蘋果的鍋?!

前兩天,世超看到一條新聞。

事兒說大也不大,總的來說就是你的安卓手機,可能成了一個遠端竊聽器。

只要一首歌的功夫,駭客就能黑掉一臺安卓手機。

只要一首歌的功夫,駭客就能黑掉一臺安卓手機

你剛按下播放鍵,對方就已經獲得了你的攝像頭和麥克風許可權。

不僅能竊聽你的通話內容,甚至連你周圍的聲音都能監聽到。。

這事波及範圍還不小,目前全球可能有 37% 的手機,都暴露在這樣的危險之下。

是不是突然有點不敢呼吸了,先別慌,聽世超來解釋一下到底發生了啥。

前兩天,一家以色列的 IT 公司 CHECK POINT,發現高通和聯發科都在使用的一種開源音樂編碼格式,存在一個高危漏洞。

這個漏洞可怕的地方在於,駭客可以通過一段錯誤格式的音訊,實現遠端程式碼執行( RCE )。

啥是遠端程式碼執行,咱先不管。

問題是依靠這個漏洞,駭客可以在你手機裡橫行霸道。不光可以做到開頭說的強制獲取許可權,還可以執行惡意軟體或竊取資料。

這件事真正魔幻的地方在於,倒大黴的安卓這回可能是被蘋果坑了。。

因為高通和聯發科都在用的這個音樂編碼格式,其實是來自蘋果。

一切的糾葛,咱還得從 11 年前的那天說起。

一向喜歡關起門來搞建設的果子哥,在聽歌方面也沒有例外。

2004 年的時候,蘋果弄了一個無損音樂編碼格式 Apple Lossless,又叫做 Apple Lossless Audio Codec( 下面簡稱 ALAC ),只允許自家的設備使用。

別看它名字又臭又長,其實就是一種音訊格式,類似於我們最熟悉的 MP3。

只不過,MP3 是有失真壓縮,而 ALAC 是無失真壓縮,縮小檔案大小的同時,還能保證音質。目前使用比較廣泛的無損格式就 FLAC 和 ALAC。

本來如果一直封閉在蘋果生態裡,就沒安卓這茬子事了。

問題是, 2011 年的時候,為了普適性( 誰能想到,有一天果子哥也會考慮普適性問題 ),果子哥破天荒在 GitHub 上面開放了源程式碼,出了一個開源版 ALAC。

正是這次慷慨開源,很多非蘋果的設備和播放器,都美美用上了無損格式,其中也包括 Windows 播放器。

而這次的主人公高通和聯發科,更是直接將開源版 ALAC 程式碼移植到了自己的音訊解碼器裡。

然後,扯淡的事情就出現了。。

我們知道 ALAC 有兩個版本。蘋果自己使用的專利版,蘋果一直在不斷更新維護。類似的漏洞,蘋果早就修復了。

而提供給其他廠商的開源版,這 11 年來,蘋果作為開發者從來沒有維護更新過它。

更扯的是,不光蘋果懶得去管這個東西,高通和聯發科也都堅定地奉行 「 拿來主義 」,只拿不修。

世超盲猜高通它們可能心裡在想:

「 誰要幫蘋果維護啊,拿來直接用得了。」

ALAC 的開源協議為 Apache,

所有使用者都可以對項目進行更改 ▼

所有使用者都可以對項目進行更改

所以,高通和聯發科都在使用一套 11 年來從沒有更新過的程式碼。

如果高通它們是移植到了相對底層的解碼器中,事情就麻煩了。。只要是使用高通和聯發科晶片的手機,都可能會因為這個漏洞遭到駭客攻擊。

按照這兩個全球最大移動晶片製造商的市場份額來看,2021 年售出的手機裡,有三分之二都暴露在危險中。

2020 年第二季度與 2021 年第二季度

全球智慧手機 AP/SoC 出貨量市場份額 ▼

全球智慧手機 AP/SoC 出貨量市場份額

看到這,你是不是覺得事態相當嚴重,巴不得親自替這些偷懶的廠家上手。

稍安勿躁,還記得世超開頭說的嗎,這事它說大也不大。

這個漏洞帶來的後果確實很嚴重,上百萬臺手機都可能被攻擊。不過,check point 在對外公佈漏洞之前,已經提前告知了兩家晶片廠商。

目前補丁都已經推送了,咱只要留意一下最近廠商推送的系統更新,安裝好,縫縫補補之後,基本上就沒啥問題。

而且,世超去翻了一下發布的補丁。發現這 BUG 雖然很危險,但實現手法還挺常見的,主要是利用了緩衝區溢出。

世超這裡粗糙地解釋一下,這到底啥玩意。

首先要科普的是,程序是怎麼在系統裡跑起來的。

手機裡的各個程序要想跑起來,就得向系統要記憶體來運行,這個大多數人都知道。

分配結束後,一堆程序在各自申請來的記憶體裡跑,井水不犯河水。

這有點像一個施工隊要了個庫房,在裡頭幹活兒的感覺。

但這些程序是咋知道這要來的 「 庫房 」 在哪裡呢?這是因為系統給程序分配記憶體的時候,給了一個叫做記憶體地址的玩意兒。

一般來說這些地址是一串十六進位制的數字 ▼

一般來說這些地址是一串十六進位制的數字

另一個需要科普的概念,是緩衝區。

有的時候,一個程序在運行某些功能時,臨時會需要一些額外的記憶體,用完就還給系統。

這一部分臨時要來的記憶體被稱為緩衝區,它們也有相對應的地址,這就好比是在庫房外賣臨時搭了一個棚。

程序運行的時候,需要的庫房(記憶體)地兒不夠了,它可能會崩潰。

但如果需要的臨時棚(緩衝區)地兒不夠了,它不一定會崩潰,但是這些堆在棚裡的傢伙,在棚裡幹活的人(程式碼)會堆到別的地兒去。

這個情況就是緩衝區溢出。

這個情況就是緩衝區溢出

而溢出的部分,在一些不安全的系統裡是不一定會檢測的。

因此即使是惡意程式碼,也可以通過溢出偷偷執行。

有的駭客故意要一個小一點的臨時棚,然後規模過大的施工隊進去,那他們就容易跑到別的施工現場去,這些地方可能有很重要的程序在跑。

然後這些施工隊手腳還不太乾淨(惡意程式碼),去別的地兒搞破壞,或者偷看一些有的沒的,想辦法傳給駭客。。。

這就是溢出的危險之處。

看完了世超的解釋,你就不難理解,這個事兒聽著挺可怕,實際上原理挺基礎。

也就是說,這並不是很難避免。

人家搭棚子前,你(系統)看看人帶了多大施工隊(檢查緩衝區輸入)來不就行了嗎?

但是,蘋果的這套 ALAC 沒去檢查這件事,同時整整 11 年沒人去維護過這玩意兒。。。

只要我給你塞一段特別大的音訊檔案,然後猥瑣地把惡意程式碼藏在檔案尾端。就能利用溢出,瞞天過海地乾點有的沒的。

不過,更多的技術細節 check point 會專門開個會詳細介紹,感興趣的差友可以關注一下。

事情到這算是圓滿解決了,不過世超想在最後來算算總賬。

這事咱們到底該賴誰呢?

差友們可能會有點難理解,其實這事兩邊都沒錯,但都不太厚道。

先講果子哥。按理來說,開源項目丟出來之後,免費給所有人用,維不維護就全看開發者的心情。

但錯就錯在你可是蘋果。

但錯就錯在你可是蘋果

一般蘋果這種體量的公司,項目的使用人數往往比較多,波及範圍廣,公司都會派人員負責維護。

但果子哥直接當起了甩手掌櫃,多多少少有點不地道。

而高通和聯發科這邊,又一心只想白嫖,能省一點人力維護就省一點。( 畢竟這可是蘋果 )

秉持著極簡的態度,能躺著絕不坐著,能坐著絕不站著。

等大鼻涕流進嘴裡知道甩了,漏洞出現知道有問題了。

畢竟就算真的栽跟頭了,還有爆肝的程式設計師,以及俺們這些隱私洩露得褲衩都不剩的消費者來買單。。

類似的 「 白嫖 」 開源項目還不少,這次只是小毛病,那下次呢?

撰文:四大 編輯:面線、小鑫鑫

圖片、資料來源:

維基百科、 GitHub

https://blog.checkpoint.com/2022/04/21/largest-mobile-chipset-manufacturers-used-vulnerable-audio-decoder-2-3-of-android-users-privacy-around-the-world-were-at-risk/

知乎 @a301 : 淺談緩衝區溢出

如何選擇開源許可證?|阮一峰

如何選擇開源許可證?|阮一峰

相關文章

這家公司只有1個人,年賺一個億

這家公司只有1個人,年賺一個億

金磊 Pine 發自 凹非寺 量子位 | 公眾號 QbitAI 全公司上下僅有1個人,每年竟能賺上1400多萬美元(1億多元)。 這並不是什...