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

評論