前言
據外媒報道,美國媒體機構Zenith發布的最新研究報告預測,在2018年,全球智能手機用戶數量將會繼續增長。其中,中國智能手機用戶數量將位居全球第一,達到13億,屆時將人手一部智能手機。而移動市場份額中,谷歌的Android和蘋果的iOS兩個操作系統占據了市場份額的98%左右,而其中Android系統的智能設備由于其較高的性價比占據了絕大部分的市場份額。
由此可見,智能終端設備已經占據了人們生活的方方面面。日常生活中,幾乎每個人都會接觸到智能設備,包括手機、平板、智能手表、智能電視等,其中又以Android系統為主。
移動端應用的開發涉及到許多第三方SDK,而第三方SDK的安全性很難保證。移動端應用的開發為節約成本、快速成型,一般都會使用多種第三方的SDK,包括支付、統計、廣告、社交、推送、地圖類的第三方SDK。下圖所示為經360顯危鏡后臺查詢的幾款常用SDK使用情況統計數據,從圖中可以看出使用了該SDK開發的APP非常多。
而第三方的SDK開發側重于功能性的完善,在安全性方面的投入較少,導致了今年來由第三方SDK引起的安全事件頻發。
第三方SDK安全威脅
近兩年已被爆出有安全漏洞的第三方SDK主要有FFmpeg、SQLite、pdfium、個信sdk、chrome內核等,且由于其被廣泛使用到大量的APP中,造成漏洞的影響范圍非常大。
FFmpeg漏洞概況
FFmpeg的是一款全球領先的多媒體框架,支持解碼、編碼、轉碼、復用、解復用、流媒體、過濾器和播放幾乎任何格式的多媒體文件。
2017年6月,neex向Hackerone平臺提交了俄羅斯最大社交網站VK.com的ffmpeg的遠程任意文件讀取漏洞。該漏洞利用了FFmpeg可以處理HLS播放列表的特性,而播放列表(Playlist)中可以引用外部文件。通過在播放列表中添加本地任意文件的引用,并將該文件上傳到視頻網站,可以觸發本地文件讀取從來獲得服務器文件內容。同時,該漏洞亦可觸發SSRF漏洞,造成非常大的危害。
此外,360GearTeam發現的編號CVE-2016-6671漏洞,FFmpeg在對SWF文件解碼時,在計算解碼后數據大小時可導致寫入數據超過申請內存空間的大小,從而造成緩沖區溢出。編號CVE-2016-10190漏洞中發現FFmpeg在處理chunk數據時由于有符號整數到無符號整數類型轉換引起的堆緩沖區溢出。
當然,FFmpeg被爆出的漏洞不止上述幾種。下圖所示為FFmpeg官方的修復記錄,從中可以看到每一版本均修復了大量的已分配CVE編號的漏洞,新版本同樣會有許多未發掘出的漏洞等待修復。
在360顯危鏡后臺根據該第三方庫的特征規則搜索查詢,在庫中40萬多個APP中,有月6萬多個APP使用了FFmpeg的第三方開源庫的代碼,如下圖所示約占15%。主流的一些視頻應用幾乎都采用了該開源庫用于對多媒體文件的處理。從圖中可以看出,該第三方庫的使用范圍是非常大的,一旦被爆安全漏洞,影響范圍將是無法估量的。
SQLite安全現狀
SQLite是遵守ACID的關系數據庫管理系統,實現了大多數SQL標準。它使用動態的、弱類型的SQL語法,包含在一個相對小的C庫中。作為一款嵌入式數據庫,它因占用的資源非常低,數據處理速度快等優點被Andriod、iOS、WebKit等流行軟件采用。
2017年Black大會上來自長亭科技的議題介紹了基于Memory Corruption的SQLite漏洞。基于該漏洞,可以攻擊常見的使用了SQLite的瀏覽器,包括Safari、Chrome、Opera等。同時,由于大部分應用本地數據庫的存儲幾乎都采用了SQLite實現,這些應用同樣受到該漏洞的影響。基于該漏洞可以造成大范圍的用戶信息泄露,包括用戶在瀏覽器中填寫的用戶名、密碼、身份證、銀行卡等敏感信息。另外,基于該漏洞可以實現遠程代碼執行,從而控制用戶終端設備,危害是非常大的。
此外,SQLite也有許多影響嚴重的漏洞常常被爆出。SQLite從3.3.6提供了支持擴展的能力,通過sqlite_load_extension API(或者load_extension SQL語句)開發者可以在不改動SQLite源碼的情況下,通過加載動態庫來擴展SQLite的能力。然而該功能被黑客利用,通過SQL注入漏洞加載預制的符合SQLite擴展規范的動態庫,從而實現了遠程代碼執行,危害非常嚴重。
當然,SQLite的漏洞并不僅限于這幾個。隨著版本更新,在功能升級的過程中,每一版本均會被爆出大量的不同級別的漏洞。每一版本均會在上一版本基礎上修改一些bug和漏洞,并可能會添加新的功能。由于精力有限,無法保證對每一行代碼都經過安全審核,新發布的版本中很可能存在未被發現的漏洞。在現有技術體系下,產品漏洞挖掘的過程將會是長期存在的狀況。
在Android應用中,只要有本地存儲數據的需求,一般均會采用SQLite數據庫存儲。因此,一旦SQLite被爆安全漏洞,將影響數以萬計的Android應用。同時,在某一Android設備中,一般都會預裝許多應用或日常使用中安裝了許多需要的應用,而這些應用中總會有一款應用使用了SQLite數據庫。因此,SQLite的安全漏洞幾乎總會影響的該設備。
Chromium威脅分析
Chromium是一個由Google主導開發的網頁瀏覽器,以BSD許可證等多重自由版權發行并開放源代碼。Chromium是Google的Chrome瀏覽器背后的引擎,其目的是為了創建一個安全、穩定和快速的通用瀏覽器。
目前,有許多瀏覽器是基于Chromium開發的,且提供了Windows、macOS和Android版本的瀏覽器。國內的主流瀏覽器均采用了Chromium內核,包括360瀏覽器、獵豹瀏覽器、遨游瀏覽器等。由于終端用戶對瀏覽器均會有硬性需求,PC和移動設備中均會安裝各種各樣的瀏覽器,總有一款是基于Chrome內核的。
雖然Chrome是Google開發和維護的,但是也被爆出許多漏洞,影響了基于相當內核版本的其他瀏覽器。微軟于2017年10月18日公布了一款藏匿于Google Chrome的瀏覽器安全漏洞,編號為CVE-2017-5121。該問題是由V8 JavaScript引擎引起的,通過引起應用崩潰導致攻擊者可以在內存地址中放置任意的數據。通過精心構造的攻擊,該漏洞可以達到遠程代碼執行(RCE),影響幾乎所有基于Chrome內核的瀏覽器。Google已于今年9月份中旬在Chrome 61版本修復了相關漏洞。
每年Chrome瀏覽器都會被爆出許多安全漏洞。如下圖所示,每年Chrome均會被爆出大量的多種類型的安全漏洞,影響幾乎所有Chrome內核的瀏覽器。此外,由于漏洞報給Google修復,其他基于Chrome內核的瀏覽器修復該漏洞需要較長的周期,漏洞的危害還是存在的。同時,其他廠商的瀏覽器很難跟上Chrome內核的更新速度,以至于很多瀏覽器還是很久之前的舊版本內核,導致該版本還受以往歷史漏洞的影響。
由于許多瀏覽器是基于Chrome內核開發的,且Android上許多應用中均會使用到瀏覽器的功能,一旦被爆漏洞影響將是非常大范圍的。
Android系統安全趨勢
Android是一種基于Linux的自由及開放源代碼的操作系統,由Google公司和開放手機聯盟領導及開發,主要設計用于觸控熒幕移動設備如智能手機和平板電腦。目前,Android系統已經成為現今最流行的智能設備操作系統。
Android系統中,也使用了大量的第三方SDK組件用于其系統底層的基礎服務功能,例如藍牙協議棧實現、HTTPS協議實現、音視頻編解碼等。然而,Google使用的這些第三方組件也時常會被爆出有高危漏洞,且鑒于Android系統的廣泛流行性,影響也是巨大的。
下圖所示內容為統計的2017年1月份至11月份Android系統中修復的第三方組件中的漏洞數量情況。從圖中可以看出,第三方組件的安全性嚴重威脅到了Android系統的安全性。
下圖所示為2017年1月份至11月份每月Android系統修復的第三方組件漏洞數量,平均每月約有80個漏洞影響Android系統的安全性。
總結
在軟件開發過程中,大量復用第三方SDK加速產品成型成為普遍現狀,而第三方SDK的安全漏洞也將影響這些產品。如FFmpeg、SQLite、Chromium、PDFium等開源庫,均在安全漏洞的挖掘上投入了非常多的精力,尚且會被爆出許多高危漏洞影響巨大。也有許多優秀的開源產品,重點將精力投入到功能的開發與完善上,而未經過任何的安全審核。這些開源產品中,代碼中很難避免地留有大量的安全漏洞,一旦被惡意攻擊者利用將對用戶造成巨大損失。
目前,國內存在許多提供給第三方用于快速接入的SDK庫,然而其安全現狀卻令人堪憂。絕大部分第三方SDK均缺乏安全審核環節,造成代碼存有大量安全漏洞,影響會接入該SDK的應用的安全性。對于缺乏安全審核能力的廠商,我們推薦使用360顯危鏡對Android應用進行線上漏洞掃描,掃描結果報告中將列出風險點供廠商評估修復。同時,針對Android應用中存在較多漏洞,且修復難度較大的問題,360Vulpecker在業內首創了安全SDK。在應用發布時接入該SDK,基于運行時修復技術可以在應用中修復絕大多數常見的通用型漏洞,致力于為缺乏Android應用漏洞修復能力的廠商提供簡單通用的漏洞處理方案,使其不再受到常規漏洞的侵擾。
作者:360 Vulpecker Team