前兩天,世超看到一條新聞。
事兒說大也不大,總的來說就是你的安卓手機,可能成了一個遠程竊聽器。
只要一首歌的功夫,黑客就能黑掉一台安卓手機。

你剛按下播放鍵,對方就已經獲得了你的攝像頭和麥克風權限。
不僅能竊聽你的通話內容,甚至連你周圍的聲音都能監聽到。。
這事波及範圍還不小,目前全球可能有 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出貨量市場份額▼
看到這,你是不是覺得事態相當嚴重,巴不得親自替這些偷懶的廠家上手。
稍安勿躁,還記得世超開頭說的嗎,這事它說大也不大。
這個漏洞帶來的後果確實很嚴重,上百萬台手機都可能被攻擊。不過,check point 在對外公布漏洞之前,已經提前告知了兩家芯片廠商。
目前補丁都已經推送了,咱只要留意一下最近廠商推送的系統更新,安裝好,縫縫補補之後,基本上就沒啥問題。


而溢出的部分,在一些不安全的系統里是不一定會檢測的。
因此即使是惡意代碼,也可以通過溢出偷偷執行。
有的黑客故意要一個小一點的臨時棚,然後規模過大的施工隊進去,那他們就容易跑到別的施工現場去,這些地方可能有很重要的程序在跑。
然後這些施工隊手腳還不太乾淨(惡意代碼),去別的地兒搞破壞,或者偷看一些有的沒的,想辦法傳給黑客。。。
這就是溢出的危險之處。
看完了世超的解釋,你就不難理解,這個事兒聽着挺可怕,實際上原理挺基礎。
也就是說,這並不是很難避免。
人家搭棚子前,你(系統)看看人帶了多大施工隊(檢查緩衝區輸入)來不就行了嗎?
但是,蘋果的這套 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:淺談緩衝區溢出
如何選擇開源許可證?|阮一峰
