雖然使用第三方軟件庫通常會降低開發的時間,但同時也會增加網站暴露出的攻擊表面,對此我們應有充分的認識。因此需要保持第三方軟件庫的最新版本依賴,以便從安全更新中獲益。即便如此,一份近期研究表明,在Alexa排名前7.5萬名的網站中,有37%的網站至少存在一處漏洞,近10%的網站至少存在兩處漏洞。舉個例子,在導入了jQuery軟件庫的網站中,有36.7%使用的是存在著漏洞的版本;在使用Angular的網站中,有40.1%使用的是存在漏洞的版本,而導入Handlebars和YUI 3的網站中,有超過85%使用的是存在漏洞版本。更令人震撼的是,在Alexa排名前500名的網站中,有26%使用了存在漏洞的軟件庫。
美國東北大學Tobias Lauinger、Abdelberi Chaabane等人領導的研究小組基于Bower和Wappalyzer的統計信息,構建了一個包括全部72個最廣泛采用的開源軟件庫列表,然后著手識別被分析Web網站中使用了哪些庫。此外,研究人員創建了一個Chrome擴展,用于構建一種網站的因果關系樹。該樹有助于展示特定軟件庫的導入原因,是直接包含而來,還是間接地從廣告、跟蹤或社會媒體代碼傳遞而來。研究分析了超過13.3萬個Web網站,其中包括Alexa排名前7.5萬的網站,以及其他隨機從.com域名中選取的7.5萬個網站。這種網站選取方式有助于比較高流量網站與其它較少訪問的網站,進而獲取具有共性的結果。
除了上面提及的37%的網站易受攻擊之外,研究中還給出了如下幾個值得關注的結果:
總體上,Web網站使用第三方軟件庫的版本過期情況令人驚訝。對于Alexa排名前7.5萬的網站,在用軟件庫與最新版本軟件庫之間的平均拖后時間是1177天(三年以上)。 通常,包含存在漏洞的軟件庫的問題是由外部組件所致,例如廣告、跟蹤或社會媒體掛件等。 另一個風險因素來自于對軟件庫的重復包含,從漏洞的角度看,這為不確定行為提供了空間。研究給出的結論是這種現狀難以糾正。原因在于廣泛采用的軟件庫普遍缺乏向后兼容的安全補丁,還在于JavaScript生態系統的組織方式,其中:
……沒有可靠的漏洞數據庫,沒有軟件庫廠商維護的安全郵件列表,發布公告中很少甚至沒有安全問題的細節,通常難于確定具體哪個軟件庫版本受到了已報告的特定漏洞的影響。
縱然如此,這一研究無疑是在正確方向上邁出的第一步,值得所有當前對JavaScript開發有興趣的開發人員一讀。
查看英文原文: Study Shows the Web is Crowded with Outdated, Vulnerable JavaScript Libraries