越來越多的嵌入式設(shè)備存在互聯(lián)需求,在安全應(yīng)用開發(fā)中,除功能安全外,應(yīng)用還需考慮信息安全。
功能安全軟件需要很長(zhǎng)時(shí)間來開發(fā)和驗(yàn)證,確保其穩(wěn)健可靠,因此很少更新。相比之下,安全威脅在不斷演變,隨著黑客的學(xué)習(xí)和發(fā)展,攻擊變得越來越復(fù)雜。
本文提供了一個(gè)簡(jiǎn)短的威脅示例列表,以幫助了解為什么信息安全對(duì)于嵌入式系統(tǒng)的開發(fā)非常重要。
偽造消息
可以訪問通信通道(如以太網(wǎng)、CAN、SPI、UART等)的攻擊者偽造一個(gè)有效的消息。
例如:在帶有指紋識(shí)別的電子門鎖系統(tǒng)中,攻擊者繞過指紋識(shí)別器直接向門鎖發(fā)送“開門”信息。
可以通過對(duì)所有消息進(jìn)行身份驗(yàn)證來防止這種攻擊。例如,門鎖檢查電子簽名或消息認(rèn)證碼,以確保接收到的消息來自指紋識(shí)別器。
重放攻擊
攻擊者在指紋認(rèn)證期間記錄有效的消息,并在稍后的時(shí)間點(diǎn)注入該消息開門。
可以嘗試使用不斷增加的簡(jiǎn)單消息計(jì)數(shù)器來防止這種攻擊。如果收到一個(gè)與前一個(gè)消息相同或更低的計(jì)數(shù)值,門鎖就會(huì)檢測(cè)到偽造的信息。
如果攻擊者能夠阻止原始消息到達(dá)接收方,則計(jì)數(shù)器方法不再起作用。可以使用每次傳輸消息時(shí)包含時(shí)間戳的方法,并且所有系統(tǒng)都需要具有同步時(shí)鐘。
通過除零錯(cuò)誤拒絕服務(wù)
假設(shè)協(xié)議定義有一個(gè)整數(shù)字段,其值不包括零。攻擊者在這樣的協(xié)議消息中發(fā)送一個(gè)0值。如果不檢查接收的值并將其用于除法運(yùn)算,則會(huì)觸發(fā)CPU異常。此時(shí)系統(tǒng)進(jìn)入安全狀態(tài),停止響應(yīng)。
緩沖區(qū)過讀導(dǎo)致的信息丟失
2014年,Heartbleed心臟滴血漏洞(CVE?2014?0160)被發(fā)現(xiàn)。攻擊者將長(zhǎng)度字段設(shè)置為高于協(xié)議允許的數(shù)字,利用該漏洞獲取信息。
在OpenSSL相應(yīng)版本實(shí)現(xiàn)中缺少長(zhǎng)度檢查,導(dǎo)致從堆緩沖區(qū)中讀取并向攻擊者發(fā)送更多的字節(jié)數(shù)據(jù),從而泄漏了內(nèi)存中的敏感信息。
通過緩沖區(qū)溢出執(zhí)行遠(yuǎn)程代碼
CPU將函數(shù)調(diào)用的返回地址存儲(chǔ)在堆棧上,并通過降序方式使用堆棧(如ARM或x86)。
假設(shè)調(diào)用了一個(gè)函數(shù),并在堆棧上分配了一個(gè)固定大小的通信緩沖區(qū),通信緩沖區(qū)的地址低于存儲(chǔ)的函數(shù)返回地址。
有缺陷的協(xié)議實(shí)現(xiàn)將接收的消息復(fù)制到該緩沖區(qū)時(shí),不驗(yàn)證消息的長(zhǎng)度。因此,如果接收的消息長(zhǎng)度大于分配的緩沖區(qū),則函數(shù)返回地址將被消息內(nèi)容覆蓋。
在函數(shù)返回時(shí),將被覆蓋的返回地址從堆棧中加載執(zhí)行。通過猜測(cè)或分析固件,攻擊者使CPU執(zhí)行其發(fā)送的指令。
針對(duì)RSA的定時(shí)攻擊
一種容易理解的針對(duì)私鑰操作(生成簽名或解密消息)的不良實(shí)現(xiàn)的攻擊。在算法實(shí)現(xiàn)中,有一個(gè)提升消息數(shù)據(jù)私鑰的冪操作步驟:
下面的算法有效地實(shí)現(xiàn)了這個(gè)冪運(yùn)算:
此操作完成所需的時(shí)間與私鑰中1的位數(shù)成正比。攻擊者可以在搜索密鑰時(shí)使用此時(shí)間信息。
故意關(guān)閉電源
不可靠的更新機(jī)制接收更新文件后,將更新文件保存在flash中,并驗(yàn)證其簽名。如果簽名無效,更新機(jī)制會(huì)重新擦除flash內(nèi)存。
在更新機(jī)制擦除flash之前,攻擊者可以在驗(yàn)證程序檢查簽名時(shí)切斷電源。下次啟動(dòng)時(shí),不安全的軟件將被執(zhí)行。
濫用非標(biāo)準(zhǔn)編碼
在unicode中,正斜杠(/)的編碼為U+002F。在UTF-8中,編碼為0x2F。簡(jiǎn)單的UTF-8解碼器也可能將兩字節(jié)序列0xC0 0xAF解碼為正斜杠。這被稱為過長(zhǎng)編碼,根據(jù)RFC 3629(2003年發(fā)布,在RFC 2269中沒有這樣的要求),解碼器不應(yīng)該接受這樣的字節(jié)序列。
假設(shè)有一個(gè)系統(tǒng)為文件系統(tǒng)中的一些文件提供服務(wù),只能接收來自一個(gè)目錄的文件,文件名使用UTF-8編碼。為了減少計(jì)算時(shí)間和軟件復(fù)雜性,它不會(huì)檢查過長(zhǎng)的編碼。
為了強(qiáng)制要求所有請(qǐng)求的文件來自某個(gè)特定目錄,通信端點(diǎn)拒絕文件名包含正斜杠的所有請(qǐng)求,通過掃描字節(jié)0x2F來實(shí)現(xiàn),任何不包含此字節(jié)的請(qǐng)求都被接受。
由于通信端點(diǎn)和文件系統(tǒng)在API接口上沒有精確地達(dá)成一致,攻擊者可以使用字節(jié)序列‘0xC0 0xAF’將斜杠通過協(xié)議驗(yàn)證進(jìn)入文件系統(tǒng),并訪問文件系統(tǒng)上的任何文件。
在Apache Tomcat中發(fā)現(xiàn)了一個(gè)類似的錯(cuò)誤(CVE?2008?2938)。
如今,公司很少對(duì)嵌入式軟件開發(fā)人員進(jìn)行IT安全方面的培訓(xùn),開發(fā)人員很難想象攻擊者在為檢測(cè)和利用系統(tǒng)中的弱點(diǎn)所做的常規(guī)工作。這種知識(shí)的缺失導(dǎo)致他們低估了即使是看似微不足道的錯(cuò)誤也可能產(chǎn)生的影響。文中列舉了嵌入式應(yīng)用中常見的安全危險(xiǎn),通過這些例子提高人們的安全意識(shí)。
-
嵌入式
+關(guān)注
關(guān)注
5143文章
19569瀏覽量
315661 -
以太網(wǎng)
+關(guān)注
關(guān)注
40文章
5597瀏覽量
175065 -
信息安全
+關(guān)注
關(guān)注
5文章
677瀏覽量
39620 -
安全威脅
+關(guān)注
關(guān)注
0文章
12瀏覽量
3095
原文標(biāo)題:嵌入式應(yīng)用中常見的安全威脅
文章出處:【微信號(hào):麥克泰技術(shù),微信公眾號(hào):麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
嵌入式系統(tǒng)面臨嚴(yán)重的安全威脅
嵌入式設(shè)備安全的關(guān)鍵是什么
嵌入式軟件安全方案可以抵御什么攻擊?
嵌入式系統(tǒng)有什么安全技巧?
嵌入式測(cè)控系統(tǒng)中常見的數(shù)字濾波算法有哪些?
嵌入式C語(yǔ)言中常見不常用的語(yǔ)法有哪些
總結(jié)嵌入式系統(tǒng)開發(fā)中常見的存儲(chǔ)器及其特點(diǎn)
Synopsys已解決了嵌入式應(yīng)用程序面臨的安全威脅
嵌入式系統(tǒng)用什么語(yǔ)言_生活中常見的嵌入式系統(tǒng)
防護(hù)嵌入式安全的方法有哪些
嵌入式安全威脅就在眼前,對(duì)策你想好了嗎?

評(píng)論