Facebook 的隱私和安全跟蹤記錄算不上好,尤其是考慮到其很多重大過失都是本可避免的情況下。但要守護(hù)數(shù)億用戶和巨大的平臺(tái),要從該公司上億行代碼中找出每個(gè)漏洞真不是件容易的事。因此,F(xiàn)acebook 的工程師從四年前就開始構(gòu)建定制評(píng)估工具,不僅檢查已知漏洞類型,還可在 30 分鐘內(nèi)完全掃描整個(gè)代碼庫(kù),幫助工程師在正式上線前找出各種調(diào)整、修改或主要新功能中的問題。
該平臺(tái)名為 Zoncolan,是一款靜態(tài)分析工具,能夠映射代碼庫(kù)行為與函數(shù),查找單個(gè)分支及程序不同路徑互操作中的潛在問題。這么大規(guī)模的代碼庫(kù),純靠人工審查那無盡的代碼修改是不現(xiàn)實(shí)的。但靜態(tài)分析伸縮性絕佳,因?yàn)槠淠茉O(shè)置關(guān)于不良架構(gòu)或代碼行為的 “規(guī)則”,自動(dòng)掃描系統(tǒng)以找出此類漏洞??胺Q一勞永逸。理想狀態(tài)下,該系統(tǒng)不僅標(biāo)記潛在問題,還能為工程師提供實(shí)時(shí)反饋,幫助他們學(xué)習(xí)如何消除隱患。
Facebook 安全工程經(jīng)理 Pieter Hooimeijer 稱:工程師每提交一次代碼庫(kù)修改,Zoncolan 都會(huì)在后臺(tái)執(zhí)行掃描,掃描結(jié)果要么直接報(bào)告給提交修改的工程師,要么標(biāo)記問題并報(bào)告給當(dāng)班安全工程師。所以,基本上該系統(tǒng)每天都會(huì)執(zhí)行數(shù)千次,2018 年里共發(fā)現(xiàn)了約 1,500 個(gè)問題。
這是迄今為止已知暴露識(shí)別中最有價(jià)值的東西。但仍未覆蓋全部。
——David Kennedy,TrustedSec
靜態(tài)分析工具本身并不能發(fā)現(xiàn)新型漏洞,只能根據(jù)已設(shè)定規(guī)則捕獲已知漏洞。但他們?cè)诔掷m(xù)捕獲同類型錯(cuò)誤上堪稱盡職盡責(zé)老黃牛,還能從單條新規(guī)則回溯查找出一系列漏洞。而且不止 Facebook 在用靜態(tài)分析,安全社區(qū)和更廣大的開發(fā)產(chǎn)業(yè)也廣泛使用靜態(tài)分析工具。但 Hooimeijer 指出,Zoncolan 因定制用于全面映射 Facebook 特定代碼而尤其有效。Hooimeijer 稱,3 月份 Facebook 披露自身意外明文存儲(chǔ)了數(shù)億用戶密碼,在此之前,該公司已向 Zoncolan 饋送了一條關(guān)于該漏洞的規(guī)則,掃描代碼庫(kù)以查找潛在類似問題。還真找到了一些。
關(guān)于此事件,Hooimeijer 評(píng)論道:
要是發(fā)生在四年前,我們就不得不馬上組織一大批安全工程師,人工梳理代碼,查找其他問題?,F(xiàn)在,我們用 Zoncolan 確保代碼庫(kù)里沒有其他類似問題。在此事件中,我們創(chuàng)建的新規(guī)則切實(shí)找出了類似問題。
其中,擴(kuò)展了 Zoncolan 檢測(cè)能力的新規(guī)則,源自 Facebook 內(nèi)部資源,包括該公司的漏洞獎(jiǎng)勵(lì)項(xiàng)目。
與查找普通設(shè)計(jì)及性能漏洞的通用靜態(tài)分析工具不同,Zoncolan 擁有專為追捕安全漏洞而特別定制的方法。該工具還專注可識(shí)別數(shù)據(jù)流及數(shù)據(jù)模式,作為削減靜態(tài)分析典型誤報(bào)的一種方式。另外,F(xiàn)acebook 按自己意愿定制系統(tǒng)的做法也不是僅此一家;谷歌也有自己的定制靜態(tài)分析工具,評(píng)估本公司那巨大的 20 億行代碼庫(kù)。
企業(yè)事件響應(yīng)咨詢公司 TrustedSec 首席執(zhí)行官 David Kennedy 稱,擁有良好軟件開發(fā)生命周期的公司都有源代碼分析器,確保能夠在投入生產(chǎn)之前篩查出暴露。大多數(shù)成熟的公司都會(huì)利用靜態(tài)代碼分析器,因?yàn)檫@是目前為止在已知暴露識(shí)別中最有價(jià)值的。但靜態(tài)代碼分析器仍未覆蓋全部。
Kennedy 指出,Zoncolan 這樣的工具無法發(fā)現(xiàn)導(dǎo)致 9 月 Facebook 3,000 萬賬戶數(shù)據(jù)泄露的權(quán)限問題。
源代碼分析器發(fā)現(xiàn)不了這樣的問題。
過去幾年來 Facebook 曝出的很多重大問題都是策略性隱私問題,與偶然的代碼漏洞無關(guān)。
Hooimeijer 也認(rèn)為 Zoncolan 不是萬靈丹。但他表示,鑒于 Facebook 對(duì)該平臺(tái)的投入,希望此工具的某個(gè)版本終將開源,供其他公司企業(yè)使用。令 Zoncolan 可高效搜尋 Facebook 代碼漏洞的特性,可以通用化,用于打造適用面更廣的工具。但想要適用 Facebook 之外的多樣化環(huán)境,開源版本還需置入靈活性。
Facebook 于 2018 年開源的 Python 代碼檢查器 Pyre,就是邁向此目標(biāo)的一步。該工具不具備 Zoncolan 的完整視野和安全焦點(diǎn),但確實(shí)可以代表 Facebook 計(jì)劃發(fā)布的那類資源。
我們?yōu)榇送度肓级?,其軌跡就是:Python 版 Zoncolan。我們想在 Facebook 之外分享其令人驚嘆的能力。
安全社區(qū)總是歡迎更多高品質(zhì)開源工具涌現(xiàn)的。但 Facebook 先得動(dòng)用這種防御手段捕獲用戶安全問題。