文|三易生活
如果有留意過手機廠商的系統(tǒng)更新日志,想必就會發(fā)現(xiàn),“修復漏洞”是一個會高頻率出現(xiàn)的詞。而對于經(jīng)常關(guān)注科技資訊的朋友來說,對于“XX公司被爆在XX軟件上存在漏洞,導致XX人或設(shè)備受到影響”這類消息,應該也是熟悉得不能再熟悉了。
此前在今年夏季,來自谷歌的互聯(lián)網(wǎng)安全團隊ProjectZero發(fā)現(xiàn)了多個來自ARM Mali GPU的漏洞??雌饋磉@只是網(wǎng)絡(luò)安全領(lǐng)域平平無奇的一件小事,但在數(shù)月后的卻引發(fā)了不小的波瀾。
日前,在ProjectZero團隊發(fā)布的最新博客中,將矛頭指向了Android手機廠商,并措辭嚴厲地譴責了這些廠商的偷懶行為,其中甚至就連谷歌自家的Pixel系列機型也沒有放過。而原因其實也很簡單,因此Android手機廠商并沒有嚴肅對待這一系列的漏洞,在安全更新上“偷奸耍滑”了。
此前,ProjectZero團隊陸續(xù)發(fā)現(xiàn)了5個有關(guān)ARM處理器中Mali GPU的漏洞,其中編號為CVE-2022-36449的漏洞可以讓非特權(quán)用戶獲得對只讀存儲器的寫入權(quán)限。用相關(guān)研究人員的話來說,成功利用該漏洞可以允許攻擊者獲得執(zhí)行本機代碼的權(quán)限,進而獲得對系統(tǒng)的完全訪問,并繞過Android的權(quán)限模型,允許更廣泛的訪問用戶數(shù)據(jù)。
在收到了來自ProjectZero的漏洞報告后,ARM方面在今年7-8月期間修復了這些問題,發(fā)布了安全公告、并公布了修復的源代碼。然而在ARM做到了應該做的事情后,手機廠商卻幾乎都無動于衷。Project Zero團隊日前表示,在ARM修復了這些漏洞幾個月后,他們使用搭載了Mali GPU的測試設(shè)備仍然會受到這些問題的影響,CVE-2022-36449在幾乎任何手機廠商的安全公告中都沒有被提到。
要知道,CVE-2022-36449漏洞影響的是ARM過去三代的Mali GPU架構(gòu)(Midgard、Bifrost,以及Valhall),其范圍覆蓋了從目前出貨的谷歌Pixel 7系列,一直可以向前追溯到2016年的三星Galaxy S7,除了使用自研GPU的高通外,其他面向Android手機廠商供貨的芯片廠商均牽涉其中。換而言之,幾乎每一個Android手機廠商旗下可能都有數(shù)以百萬量級的受影響設(shè)備存在。
如此看來,這次的事件不就是Android手機廠商將用戶設(shè)備的安全當作兒戲嗎。但其實谷歌估計也很無奈,目前Android系統(tǒng)的安全補丁更新是以月為單位,并且Android的月度安全更新也是公開發(fā)布的。然而Android手機廠商也有話要說,月度安全更新歸更新,但將安全更新應用到自家的產(chǎn)品上則又是另外一回事。
事實上,系統(tǒng)更新一直以來都是Android生態(tài)中的一個痛點,核心原因就是相比于封閉的蘋果iOS體系,Android陣營的參與者要多得多,這既是當年Android得以快速鋪開的優(yōu)勢,也是如今限制Android機型及時更新的問題所在。拋開雙方都要面對的開發(fā)者適配應用問題,Android陣營在系統(tǒng)更新上就有谷歌、芯片廠商,以及手機廠商三方加入,并且后面兩者的產(chǎn)品線都相當復雜,所以也造成了Android大版本更新的難度要遠勝過iOS。
盡管谷歌多年前就開始著手提升Android機型的系統(tǒng)更新速度,從Android 8開始,新增的Project Treble就將硬件驅(qū)動與系統(tǒng)分離,從此手機廠商可以為手機單獨推送新的Android版本、而不需要重新適配驅(qū)動。而在Android 10中引入的Project Mainline更是將系統(tǒng)功能模塊化,讓更上游的供應商可以更細化地提供具體的功能更新。
索尼方面在Android 8發(fā)布后就繪制了Android系統(tǒng)升級的流程圖,并強調(diào)Project Treble能夠?qū)⑾到y(tǒng)升級推送的流程再減少3-4步。但他們沒有告訴用戶的是,即便減少了這幾步,Android系統(tǒng)更新的流程依然十分復雜。就以此次的ARM驅(qū)動為例,在ARM完成了漏洞修復、并公開源代碼后,手機廠商并不能像我們接收系統(tǒng)OTA更新那樣簡單的進行修復,而是需要調(diào)試驅(qū)動以適配自己修改過的ROM。
畢竟Project Treble也只是讓手機廠商可以為手機單獨推送新的Android版本,而不需要重新適配驅(qū)動,可這一次恰恰是驅(qū)動出了問題。涉及到GPU驅(qū)動這樣底層的功能,Android手機廠商是需要調(diào)試BSP(板級支持包)的,這是因為Android系統(tǒng)的HAL(硬件抽象)層需要加載BootLoader,而加載BootLoader則依賴于BSP。但需要注意的是,HAL中關(guān)于各硬件的參數(shù)是十分重要的商業(yè)機密,所以也導致HAL往往存在于User Space中,而非在內(nèi)核中。
更為遺憾的是,在解耦硬件驅(qū)動與系統(tǒng)的Project Treble擴展項目上,谷歌方面選擇了與高通合作、而非聯(lián)發(fā)科。Project Treble的“無追溯性原則”目前只能影響到高通驍龍移動平臺,為此高通開發(fā)了自己的通用系統(tǒng)映像系統(tǒng)“QSSI”,其能夠與谷歌的AOSPGSI一樣與不同的SoC兼容。換而言之,如果此次是高通SoC的Adreno GPU出現(xiàn)漏洞,可能情況都要好得多。
除此之外,就算是同型號機型往往還會有不同的版本,例如三星的Galaxy S系列在中國、日本、美國和南美是使用高通驍龍平臺,但在歐洲和韓國則使用的是自家的Exynos主控。再加上運營商定制版本的存在,僅僅一款設(shè)備就足以讓手機廠商的運維團隊焦頭爛額,更別提此次Mali GPU影響的是過去整整5年間的產(chǎn)品,如此大的規(guī)模也足以讓手機廠商感到絕望。
所以只能說,如此龐大的工作量讓手機廠商不得不選擇“擺爛”。而想要杜絕類似的事件再次發(fā)生,只能是谷歌與ARM方面加強合作,效仿高通來建立一個自己的通用鏡像系統(tǒng),以此來加快更新的部署才行。