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