不容小覷:過時的第三方庫對手機應用安全的影響

筆者最近在ACM CCS 2017錄用的論文中讀到一篇很有趣的文章[1],作者是德國薩爾蘭大學和萊布尼茨大學的幾名學者。文章研究了Android應用依賴的第三方庫的老舊情況及其對應用安全的影響。讀完有點後背發涼的感覺(蘋果黨也別開心,估計問題也存在)。這裡貼出幾組數據,希望看到這篇文章的應用開發者們也審視一下自己產品中的第三方庫老舊可能帶來的問題(請不要置人民群眾的使用體驗和信息安全於不顧,么么)。

開發者並不經常更新第三方庫

首先,作者採訪了203個頗具代表性的在Google Play上發布應用(app)的開發者。結果發現:(1)只有22%的開發者會定期更新自己的產品,(2)只有20%的人會時不時地升級一下自己產品所依賴的第三方庫,30%的人從不升級第三方庫,(3)很多開發者其實不會去關注第三方庫更新時發布的更新日誌或者通知。

安全不是開發者更新第三方庫的首要原因

那麼,開發者為什麼不及時更新第三方庫呢。作者又接著調查,發現大部分開發者更新第三方庫的主要原因是這些庫在使用過程中出現bug,但是新版本修復了(于是之前用不起來的庫又可以愉快地用起來了)。而安全和新特性只是次要的原因,而且兩者的重要性也不相上下。好吧,看來安全可能只是個二等公民。。。

第三方庫開發者的不良習慣也會導致開發者不願更新

應用的第三方庫得不到及時更新是不是都得應用開發者背鍋呢?這也未必,作者繼續深入分析了89個被廣泛使用的庫(總共分析了約2000個發布的版本),發現原來在第三方庫不能被及時更新這個問題上,應用開發者和庫開發者也許應該各打50大板。為什麼?首先,作者發現不少庫在修復安全問題之後,並沒有單獨發打過補丁的版本。比如Facebook安卓庫的賬號劫持問題[2]被修復之後,開發者並沒有及時單獨發布補丁版,而是把這個補丁和其他新特性混雜在一起發布了一個大版本的更新(某些API這時可能會改變或被捨棄)。這種時候,開發者可能為了避免工程上的麻煩或者兼容性問題而選擇忽略更新。其次,也有不少庫開發者在修復安全問題發布更新版的時候在日誌里並不提修復的安全問題(比如修復了哪個CVE),那麼用到這些庫的應用開發者們也就無從得知是否某些安全問題已經得到修復。既然現有的庫版本也沒其他問題,那就湊合著用唄,反正用戶也不一定會有啥損失(用戶說:為啥受傷的總是我。。。此處省略一萬字的吐槽)。

大量存在安全漏洞的第三方庫依然被各類應用廣泛使用著

最後,作者又分析了Google Play上的100多萬個應用,看看它們使用到的第三方庫能否被更新。結果甚是嚇人:(1)85.6%的庫可以在不更改應用代碼的情況下被升級至少一個版本(48.2%的庫甚至可以直接被升級到最新版),(2)有16837個存在已知安全漏洞的第三方庫仍然被廣泛使用著,而其中97.8%可以被非常容易地升級到打過補丁的版本(簡單替換新版本即可)

References:

  1. Erik Derr, Sven Bugiel, Sascha Fahl, Yasemin Acar, Michael Backes. "Keep me Updated: An Empirical Study of Third-Party Library Updatability on Android". In Proceedings of ACM CCS 2017.
  2. Michael Backes, Sven Bugiel, and Erik Derr. "Reliable Third-Party Library Detection in Android and its Security Applications". In Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security (CCS 16).

註:題圖來自Android Mobile Security: Top 5 things you need to know


推薦閱讀:

無需Ptrace就能實現Linux進程間代碼注入
動手教程:DIY一個OpenWRT的滲透工具
iPhone X絕對安全?看我如何挫敗 iPhone X 的 Face ID
為什麼人們會在乎自己的信息被泄露?

TAG:信息安全 | 移动应用 | 软件开发 |