WhiteSource 公司基于 NVD、安全公告和開源項目問題追蹤工具等回顧了2020年出現(xiàn)的十大開源漏洞。如下:
1、Lodash
CVE-2020-8203:CVSS 評分:7.4,高危,受影響版本:4.17.2之前版本
易受攻擊的 Lodash 版本在使用 _.zipObjectDeep 時,存在一個原型污染漏洞。HackerOne 發(fā)布的原始報告指出,該漏洞可被用于在 Object.prototype 中注入屬性,從而導致敏感信息暴露、數(shù)據(jù)增加或修改或者拒絕服務。該報告提供了復現(xiàn)步驟:
通過 lodash 的 “zipObjectDeep” 函數(shù)構建一個對象:
Lodash 是一個 JavaScript 工具庫,文檔指出,Lodash 通過簡化和數(shù)組、數(shù)字、對象、字符串等的工作,使得 JavaScript 更易于處理。這也是為何很多開發(fā)人員喜歡用這個開源庫迭代數(shù)組、對象和字符串;操縱和測試值;以及創(chuàng)建復合函數(shù)的原因所在。
2、FasterXML jackson-databind
CVE-2020-24616:CVSS評分8.1,高危,影響 2.9.10.6 之前的 2.x 版本
易受攻擊的 FasterXML Jackson-databind 錯誤地處理了和 br.com.anteros.dbcp.AnterosDBCPDataSource (即 Anteros-DBCP)之間存在關系的序列化小工具和鍵入之間的交互。
序列化是Java 開發(fā)人員的常見實踐。多年來,Java 序列化框架和庫中都出現(xiàn)了很多序列化問題。因 JSON 庫而聞名的一名開源開發(fā)人員 @cowtowncoder 指出,“序列化小工具”的負面作用是能夠執(zhí)行惡意操作,造成遠程代碼執(zhí)行、拒絕服務或敏感數(shù)據(jù)泄露等攻擊。雖然這種 exploit 類型可能會造成實際后果,但該開發(fā)員表示這些攻擊不易執(zhí)行且要求具備很多前提條件。
多年來,得益于它翻譯流行數(shù)據(jù)交換轉換器 JSON 和 Java 的方式,jackson-databind 都是人們的最愛,是開發(fā)人員運行 API 的必選。如果你也是 Java 開發(fā),請務必保證 Jackson-databind 是最新版本。
3、HtmLUnit
CVE-2020-5529:CVSS 8.1分,高危,影響2.37.0之前的版本
易受攻擊的 HtmlUnit 中存在代碼執(zhí)行問題。從NVD 中可看到,當 HtmlUnit 不正確地初始化 Rhino 引擎時,惡意 JavaScript 代碼可在應用程序中執(zhí)行任意 Java 代碼。當被嵌入安卓應用程序中時,由于對 Rhino 引擎的初始化未正確執(zhí)行,惡意 JavaScript 代碼可在應用上執(zhí)行任意 Java 代碼。
從文檔可知,HtmlUnit 是 “Java 程序的 GUI-Less 瀏覽器”,同時支持 JavaScript 和 AJAX 庫。它為 HTML 文檔建模,并提供 API 供用戶調用頁面、填寫表單、單擊鏈接等。該開源項目通常用于測試或從網(wǎng)站檢索信息。
4、Handlebars
CVE-2019-20920,CVSS 評分8.1,高危,影響3.0.8之前的版本以及4.5.3之前的 4.x 版本。
NPM 安全公告指出,易受攻擊的 Handlebars 中存在一個任意代碼執(zhí)行問題。該安全公告解釋稱,該包的 lookup 助手未正確驗證模板,使得惡意人員能夠提交在系統(tǒng)中執(zhí)行任意 JavaScript 的模板。該漏洞可用于在服務器處理 Handlebars 模板中或者在受害者瀏覽器中運行任意代碼。該漏洞之前漏洞的修復方案不完整導致的。
Handlebars 是 Mustache 模板語言的一個擴展,是一種“無邏輯的模板語言,使查看和代碼分離”更容易。目前從 npm 每周的下載超過700萬次,它是一個極其熱門的開源項目,由認真負責的社區(qū)支持和維護。
5、http-proxy
CVE 編號尚未分配:影響1.18.1之前的版本
某些 http-proxy 版本易受拒絕服務攻擊。主體部分較長的HTTP 請求能夠觸發(fā) ERR_HTTP_HEADERS_SENT 未被處理的異常,從而使代理服務器崩潰。只有當代理服務器通過使用 proxyReq.setHeader 函數(shù)在代理請求中設置標頭時,才會發(fā)生這種情況。
Http-proxy 是一種 HTTP 可編程代理庫,支持 websocket 并有助于實現(xiàn)多個組件如反向代理和負載平衡器之類的組件。它是一個非常受歡迎的開源庫,目前每周的 NPM 下載量接近1200萬,而且支持2000多個依賴。鑒于此,用戶有必要確保使用的是最新版本 1.18.1。
6、decompress
CVE-2020-12265,CVSS 評分9.8,嚴重,影響 4.2.1 以前的版本
NPM 安全公告指出,受影響的 decompress 版本易受任意文件寫入漏洞影響。惡意人員可通過包含含有 / 的文件名稱寫入任意文件夾,因為該軟件包不會通過相對路徑阻止文件提取。
Decompress 是一個致力于輕松提取文檔的開源項目。它說明了相對小型項目中的漏洞,很多人通過它執(zhí)行簡單的任務,如果漏洞未得到修復可為用戶造成巨大損害。Decompress 等項目讓編程更容易,但雖然它們執(zhí)行的任務看似簡單,但不能因此忽視對開源漏洞的管理工作。
安全公告建議更新至版本 4.2.1 或后續(xù)版本。
7、XStream
CVE-2020-26217,CVSS評分8.8,高危,影響1.4.14之前版本
易受攻擊的 XStream 中存在一個遠程代碼執(zhí)行漏洞。XStream 解釋稱,“在解組時處理的流包括重構之前寫入對象的類型信息。因此,XStream 基于這些類型信息創(chuàng)建新的實例。攻擊者能夠操縱處理后的輸入流,并替換或注入可以執(zhí)行任意 shell 命令的對象?!?/p>
GitHub 安全公告建議依賴 XStream 的用戶將安全框架的默認黑名單更新到 1.4.14 或后續(xù)版本。遵循建議通過白名單設置 XStream 的 Security Framework 的用戶不受影響。
XStream 是一個開源庫,執(zhí)行從 Java 到 XML 的序列化,然后再返回。文檔列出了傳輸、持久性、配置和單元測試的典型用法。由于它是許多開源 Java Web 應用程序所使用的非常流行的庫,因此確保正在使用最新版本并遵循建議非常重要。
8、Netty
CVE-2020-11612,CVSS 評分9.8,影響 4.1.46 之前的 4.1.x 版本。
ZlibDecoders 易受攻擊的 Netty 版本在解碼 ZlibEncoded 字節(jié)流時,可導致無限制的內(nèi)存分配。惡意人員可利用該漏洞向 Netty 服務器發(fā)送較大的 ZlibEncoded 字節(jié)流,從而迫使服務器將所有可用內(nèi)存分配給單個解碼器。
Netty 是一個異步事件驅動的網(wǎng)絡應用程序框架,旨在快速開發(fā)可維護的高性能協(xié)議服務器和客戶端。該項目的文檔指出,此 NIO 客戶端/服務器框架有助于簡化和梳理 TCP 和 UDP 套接字服務器等網(wǎng)絡編程。
9、Spring Framework
CVE-2020-5398,CVSS 評分7.5,影響版本包括:5.2.3之前的 5.2.x 版本、5.1.13 之前的 5.1.x 版本以及5.0.16之前的5.0.x版本。
在受影響的 Spring Framework 版本中,當應用程序在響應(文件名稱屬性是由用戶提供的衍生輸入)中設置 “Content-Disposition” 標頭時,應用程序易受反射型文件下載 (RFD) 攻擊的影響。
如果你正在使用 Java,很可能會遇到 Spring。它是極其流行的 Java 應用開發(fā)框架,得益于其模塊化和輕量的特點,可使開發(fā)人員輕松創(chuàng)建出強大的應用程序。眾所周知,它顛覆了控制設計原理(結合了分層、輕量級容器以及可在接口上編程的能力)。
10、PyYAML
CVE-2020-1747,CVSS 評分9.8,影響 5.3.1 之前的版本。
當不受信任的 YAML 文件通過 full_load 方法或通過 FullLoader 負載器處理時,易受攻擊的 PyYAML 庫易受任意代碼執(zhí)行漏洞的影響。攻擊者可利用該漏洞通過濫用 python/object/new 構建器在系統(tǒng)上濫用任意代碼。
PyYAML 是一款極其流行的針對 Python 的 YAML 解析器和發(fā)射器。由于近年來 Python 的熱度高居不下,因此用戶最好確保使用的是 PyYAML 的更新版本。