最近,虹科工業(yè)物聯(lián)網(wǎng)團(tuán)隊(duì)在調(diào)查客戶設(shè)備固件出現(xiàn)的常規(guī)CVE(CVE-2018-1000500)時(shí)發(fā)現(xiàn)了一個(gè)問(wèn)題:通常情況下,當(dāng)檢測(cè)到一個(gè)會(huì)對(duì)設(shè)備產(chǎn)生嚴(yán)重破壞的CVE時(shí),我們會(huì)建議客戶對(duì)該組件進(jìn)行升級(jí)或使用補(bǔ)丁。但是CVE早在2018年就已經(jīng)發(fā)布,盡管具有8.1的高評(píng)分,卻一直沒有被修復(fù),這引起了虹科研究人員的注意。
深入研究后,我們發(fā)現(xiàn)最初發(fā)布 CVE 的研究人員向維護(hù)人員提交過(guò)一個(gè)代碼補(bǔ)丁,但是由于補(bǔ)丁存在破壞現(xiàn)有的功能的風(fēng)險(xiǎn),該補(bǔ)丁被拒絕了。下面虹科工業(yè)物聯(lián)網(wǎng)團(tuán)隊(duì)將會(huì)對(duì)這個(gè)問(wèn)題進(jìn)行詳細(xì)闡述,首先讓我們簡(jiǎn)要回顧一下 BusyBox和受影響的組件BusyBox Wget。
漏洞介紹
BusyBox 工具包在單個(gè)可執(zhí)行文件中實(shí)現(xiàn)了大量 Linux 性能,甚至可以替代 Linux init 系統(tǒng)。體積小且具有靈活性的特點(diǎn)使得它在嵌入式設(shè)備中很受歡迎。最初的 Wget 是一個(gè)應(yīng)用廣泛的 GNU 實(shí)用程序,用于使用命令從Internet服務(wù)器中檢索文件,經(jīng)常用于系統(tǒng)腳本,包括用于軟件更新等。
BusyBox 因?yàn)槠渚o湊的特點(diǎn)取代了 Wget,但它并不支持所有的安全功能和選項(xiàng)。特別是當(dāng)與不具備有效 TLS 證書的服務(wù)器連接時(shí),BusyBox 版本的 Wget 不會(huì)對(duì)其進(jìn)行中止,而只會(huì)打印錯(cuò)誤消息并繼續(xù)下載。下面是對(duì)常規(guī) Wget 和 BusyBox Wget 會(huì)產(chǎn)生不同行為的舉例說(shuō)明:
事實(shí)上,BusyBox的 TLS 庫(kù)并不支持證書驗(yàn)證。原始的 Wget 可以支持,并且必須使用一個(gè)明顯的命令行開關(guān)(-- no-check-certificate)來(lái)進(jìn)行啟動(dòng),以防跳過(guò)證書驗(yàn)證。
這就是BusyBox的漏洞所在。攻擊者可以通過(guò)模擬服務(wù)器來(lái)攔截 Wget的 HTTPS 請(qǐng)求,或者使用 DNS/ARP 病毒將請(qǐng)求重定向到攻擊者控制的服務(wù)器,或者直接進(jìn)行網(wǎng)絡(luò)流量攔截。因?yàn)楣粽卟⒉恍枰行У?TLS 證書,所以他們可以用任意文件來(lái)替換請(qǐng)求的下載。
如果被替代的下載包中含有軟件模塊或更新項(xiàng),這可能會(huì)直接導(dǎo)致惡意代碼執(zhí)行。如果下載包含配置或數(shù)據(jù),攻擊者可能惡意影響設(shè)備的功能。即使客戶端在安裝或執(zhí)行之前檢查了下載文件的完整性和真實(shí)性,攻擊者仍然可能會(huì)通過(guò)讓客戶端下載無(wú)效的多GB文件或者連接非法服務(wù)器而導(dǎo)致拒絕服務(wù)。
BusyBox團(tuán)隊(duì)處理方式
BusyBox的維護(hù)人員認(rèn)為,修復(fù)Wget并讓設(shè)備維持不具備有效TLS證書的情況會(huì)堿壞設(shè)備的重要功能。這是安全員和工程師之間的常見沖突:安全研究人員將更加愿意為了保障設(shè)備安全性而犧牲一些設(shè)備現(xiàn)有功能的發(fā)揮,而工程師則更傾向于維持設(shè)備的功能運(yùn)作,特別是替代方案會(huì)對(duì)已經(jīng)部署在現(xiàn)場(chǎng)的設(shè)備功能造成堿壞的情況。
唯一的變化是當(dāng)檢測(cè)到無(wú)效的 TLS 證書時(shí),1.29.0版本會(huì)添加一條錯(cuò)誤信息。該錯(cuò)誤信息會(huì)被打印到標(biāo)準(zhǔn)輸出中,但不會(huì)在系統(tǒng)日志中留下長(zhǎng)久的痕跡,這意味著錯(cuò)誤可能隨時(shí)發(fā)生,攻擊者可以利用該設(shè)備,而不會(huì)被管理員發(fā)現(xiàn)。
虹科建議
到目前為止,BusyBox Wget 支持在子進(jìn)程中啟動(dòng) OpenSSL 客戶機(jī)來(lái)執(zhí)行 TLS 操作。此客戶端完全支持證書驗(yàn)證邏輯,該邏輯由命令行選項(xiàng)來(lái)控制。因此,虹科建議應(yīng)用下面的補(bǔ)丁,以便明確地將證書檢查添加到 BusyBox Wget 中。首先,確保設(shè)置以下配置標(biāo)志,這將使BusyBox 使用OpenSSL 的TLS/SSL 客戶端。
CONFIG_FEATURE_WGET_OPENSSL=y
然后應(yīng)用以下補(bǔ)丁:
index f2fc9e215..6bcc24421 100644--- a/networking/wget.c+++ b/networking/wget.c@@ -662,7 +662,7 @@ static int spawn_https_helper_openssl(const char *host, unsigned port) pid = xvfork(); if (pid == 0) { /* Child */- char *argv[8];+ char *argv[11]; close(sp[0]); xmove_fd(sp[1], 0);
@@ -690,6 +690,11 @@ static int spawn_https_helper_openssl(const char *host, unsigned port) argv[6] = (char*)servername;
} + /* Abort on bad server certificate */+ argv[7] = (char*)“-verify”;+ argv[8] = (char*)“100”;+ argv[9] = (char*)“-verify_return_error”;+ BB_EXECVP(argv[0], argv); xmove_fd(3, 2); # if ENABLE_FEATURE_WGET_HTTPS
應(yīng)用該補(bǔ)丁后,BusyBox Wget 目前展示正確,在一個(gè)無(wú)效的證書上停止(盡管帶有一個(gè)通用的錯(cuò)誤消息) :
虹科總結(jié)
在這個(gè)時(shí)代,使用嵌入式設(shè)備時(shí)我們都應(yīng)該明白,為了功能而犧牲設(shè)備安全并向字段發(fā)布不安全的代碼是不可行的。
這種做法在很大程度直接導(dǎo)致了物聯(lián)網(wǎng)設(shè)備市場(chǎng)安全狀況不佳。當(dāng)然,高等級(jí)、多層次、硬件支持的安全性并不適用于每個(gè)產(chǎn)品,因?yàn)檫@涉及到成本和上市時(shí)間。但供應(yīng)商應(yīng)該期望他們的上游組件,比如像BusyBox的開源代碼維護(hù)者,實(shí)施建立第一道防線所需的合理安全措施。
虹科 Vdoo 物聯(lián)網(wǎng)設(shè)備安全防護(hù)與加固平臺(tái)具有自動(dòng)安全掃描產(chǎn)品可以幫助客戶建立設(shè)備的安全配置文件,包括第三方組件可能引入的任何漏洞。從而慎重選擇其組件供應(yīng)商,而不需要過(guò)多的測(cè)試人員和團(tuán)隊(duì)。
責(zé)任編輯:haq
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2914文章
44955瀏覽量
377245 -
虹科電子
+關(guān)注
關(guān)注
0文章
615瀏覽量
14430
原文標(biāo)題:虹科案例 | BusyBox Wget漏洞:一個(gè)早就應(yīng)該解決的問(wèn)題
文章出處:【微信號(hào):Hongketeam,微信公眾號(hào):廣州虹科電子科技有限公司】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論