美國東部時間 6 號下午6:30開始,有不少 iOS 開發者在推上發文稱應用崩潰量突然上升,追蹤原因後發現是臉書 SDK 引發的問題。該 SDK 是開發人員用來將第三方應用程式與社交網絡集成的工具,允許用戶使用 臉書 帳戶登錄。而此次的問題是,該 SDK 導致在應用啟動時就會崩潰。
9to5 等媒體對此次事件做了報導
• PSA: Facebook SDK bug causing several popular apps to crash right now [Update: Fixed] https://9to5mac.com/2020/05/06/psa-facebook-sdk-bug-causing-several-popular-apps-to-crash-right-now/
• Facebook SDK Issue Causing Some iOS Apps to Crash https://www.macrumors.com/2020/05/06/facebook-sdk-issue-causing-some-ios-apps-to-crash/
而在 github 上,與此相關的 issue 的討論也不少
• Crash in FBSDKRestrictiveDataFilterManager.m line 80 https://github.com/facebook/facebook-ios-sdk/issues/1374
• Suddenly FBSDKRestrictiveDataFilterManager.m - Line 71 started to crash https://github.com/facebook/facebook-ios-sdk/issues/1373
有些開發者還貼出了崩潰的詳細的數據
由此可見,受影響的 App 不少。據稱像谷歌的Waze、Pinterest、Spotify、Adobe Spark、Quora、TikTok、IMDB,這樣備受矚目的應用程式也未能倖免。
經開發者測試,單純地注釋 SDK 的調用代碼並不能解決問題,也就是說只要包含了 SDK,在啟動時就會運行隱藏代碼。部分開發者發現在路由器的 DNS 設置中屏蔽 facebook.com 域名後,應用不再崩潰,以此判斷是 臉書 伺服器的設置導致此次問題。
臉書也在第一時間做了處理。在 Github 上一位似乎是臉書的工程師聲稱是伺服器配置的更新導致了此次問題,他們已還原了導致問題的配置。
一些開發者提出質疑:
• SDK 遠程控制了哪些功能?
• 為什麼在啟動時去加載這些功能?
• 所有這些都記錄在哪裡?
• 類似控制是否會被用作第三方應用程式的終止開關嗎?
• 開發者可以關閉這些控制麼嗎?
也有一些開發者向 Apple 提議,可以尋找一種方法,以從主應用程式二進位文件中「沙盒化」這些類型的SDK,以防止出現此類問題(以及將用戶數據洩露給第三方)。
作為開發者,或許都遇到過這種問題,使用第三方 SDK 或者框架時,如果這些 SDK 或框架出現問題,應該如何去處理,正如之前 AFNetworking 某幾個版本的 heartbleed 漏洞?特別是如果這些庫停止更新後,又該怎麼辦?使用第三方 SDK 能為我們的開發帶來很大的便利,但同時也會有一定的風險。
就差您點一下了 👇👇👇