0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

嵌入式系統(tǒng)安全性:C/C++編程與SAST靜態(tài)代碼分析在工業(yè)4.0及物聯(lián)網(wǎng)時(shí)代的新實(shí)踐

龍智DevSecOps ? 2024-08-19 13:41 ? 次閱讀

工業(yè)4.0時(shí)代,您需要了解的嵌入式系統(tǒng)網(wǎng)絡(luò)安全知識(shí)


當(dāng)前,技術(shù)的發(fā)展比以往任何時(shí)候都要迅猛,每天都有針對(duì)各種難以想象的任務(wù)的新產(chǎn)品和新功能問世。現(xiàn)在不僅僅關(guān)乎移動(dòng)應(yīng)用和計(jì)算機(jī)了,而是關(guān)乎嵌入式系統(tǒng)和物聯(lián)網(wǎng)IoT)設(shè)備。無論是在我們的日常生活,還是工業(yè)自動(dòng)化等行業(yè)中,這些設(shè)備都已經(jīng)變得非常普遍。

這些設(shè)備似乎無處不在,運(yùn)行的軟件覆蓋了幾乎所有的東西:嬰兒監(jiān)視器、揚(yáng)聲器、健身追蹤器、監(jiān)控?cái)z像頭、恒溫器和汽車等,不一而足。

關(guān)于這個(gè)新世界,建筑師、麻省理工學(xué)院教授和作家Nicholas Negroponte表示:“就像空氣和飲用水一樣,數(shù)字化只有在缺失時(shí)才會(huì)被注意到,而不是在其存在時(shí)?!?就Negroponte的觀點(diǎn)而言,我們已經(jīng)被數(shù)字技術(shù)所包圍,我們甚至沒有注意到它,直到它消失或成為一個(gè)安全問題。

我們所知道的物聯(lián)網(wǎng)設(shè)備(包括嵌入式系統(tǒng))通常配備了處理器、傳感器和其他通過互聯(lián)網(wǎng)連接的功能。當(dāng)說到嵌入式系統(tǒng)時(shí),我們指的是在更大規(guī)模的數(shù)字、機(jī)械電氣系統(tǒng)中執(zhí)行特定功能的處理器。嵌入式系統(tǒng)可以是物聯(lián)網(wǎng)設(shè)備中的固件,也可以是汽車、機(jī)器人、信用卡讀卡器、手機(jī)、小工具、網(wǎng)絡(luò)設(shè)備、醫(yī)療設(shè)備或其他任何設(shè)備中的電子控制單元(ECU)。

對(duì)于企業(yè)而言,工業(yè)4.0正在改變產(chǎn)品的制造和分銷方式。隨著促進(jìn)生產(chǎn)力和創(chuàng)新的嵌入式系統(tǒng)中增加了更多組件,物聯(lián)網(wǎng)安全和工業(yè)4.0網(wǎng)絡(luò)安全面臨的挑戰(zhàn)也與日俱增。再加上云計(jì)算、分析、機(jī)器學(xué)習(xí)人工智能等技術(shù),工業(yè)4.0的環(huán)境變得更加負(fù)責(zé)——不僅涉及多個(gè)設(shè)備和系統(tǒng),而且分布在多個(gè)地點(diǎn)和貢獻(xiàn)者之間。

物聯(lián)網(wǎng)和嵌入式系統(tǒng)的安全管理不能是一個(gè)孤立的過程。相反,組織和開發(fā)團(tuán)隊(duì)?wèi)?yīng)著重關(guān)注物聯(lián)網(wǎng)所依賴的軟件的安全,因?yàn)檐浖?fù)責(zé)每個(gè)設(shè)備的性能,并促進(jìn)設(shè)備和系統(tǒng)之間的通信。

C和C++為何對(duì)嵌入式系統(tǒng)軟件安全至關(guān)重要?


由于尺寸和成本的限制,嵌入式系統(tǒng)中的軟件在處理、內(nèi)存和電源方面只能使用有限的計(jì)算機(jī)資源。由于需要輕量級(jí)的軟件,像C和C++這樣的編程語言在嵌入式系統(tǒng)中占據(jù)主導(dǎo)地位,就像它們目前在運(yùn)行大多數(shù)云服務(wù)器中的Linux內(nèi)核上一樣。雖然C++比C需要更多的計(jì)算資源,但更強(qiáng)大的微處理器的出現(xiàn)使C++成為全球數(shù)百萬嵌入式系統(tǒng)的首選語言。

嵌入式系統(tǒng)中也使用Python等其他編程語言,但C和C++是主要選擇。還有一種嵌入式C++(EC++),它是C++語言的一個(gè)子集,可通過完整C++語言的主要功能提供更大的空間和速度效率?,F(xiàn)在的微處理器可以配備C++編譯器,這使得嵌入式系統(tǒng)的編碼工作變得更加容易。

嵌入式系統(tǒng)的編碼與其他類型的應(yīng)用程序不同。首先,你會(huì)受到資源限制,然后你必須設(shè)計(jì)容錯(cuò)功能、實(shí)時(shí)功能、可靠性,并且大多數(shù)情況下,不能有停機(jī)時(shí)間。但更重要的是,代碼必須安全可靠。想想嵌入式系統(tǒng)和物聯(lián)網(wǎng)設(shè)備在醫(yī)療保健和制藥行業(yè),或汽車和航空航天行業(yè)中的重要性。這種技術(shù)的缺失不僅會(huì)引起注意,而且如果不夠安全,還將成為一個(gè)關(guān)鍵問題。

靜態(tài)分析為何對(duì)嵌入式系統(tǒng)和物聯(lián)網(wǎng)軟件安全至關(guān)重要?


軟件安全漏洞通常是在開發(fā)過程中引入的,因此在編碼過程中盡早主動(dòng)地發(fā)現(xiàn)漏洞,可以預(yù)防安全問題的產(chǎn)生。靜態(tài)分析是確保源代碼不出現(xiàn)可能導(dǎo)致漏洞和攻擊的缺陷的重要工具。靜態(tài)分析也稱為靜態(tài)應(yīng)用程序安全測(cè)試(SAST),它可以掃描應(yīng)用程序的源代碼,包括用于嵌入式系統(tǒng)和工業(yè)4.0網(wǎng)絡(luò)安全應(yīng)用的代碼。這種高度專業(yè)化的代碼掃描可根據(jù)所使用的相應(yīng)編程語言和框架查找特定缺陷。靜態(tài)分析工具(如Perforce Helix QAC 和 Klocwork)還會(huì)報(bào)告是否符合編碼標(biāo)準(zhǔn)。

靜態(tài)分析工具使開發(fā)和安全團(tuán)隊(duì)能夠分析成千上萬甚至數(shù)百萬行的代碼。它們根據(jù)規(guī)則和政策查找代碼中的缺陷,并強(qiáng)制執(zhí)行編碼標(biāo)準(zhǔn)。最重要的是,靜態(tài)分析工具已成為軟件開發(fā)生命周期中不可或缺的一部分,并且是每次代碼更改或新版本發(fā)布前都需要在源代碼上運(yùn)行的常規(guī)步驟。

隨著組織越來越多地使用嵌入式系統(tǒng)和物聯(lián)網(wǎng),安全的重要性也隨之提高,尤其是在各行各業(yè)的關(guān)鍵任務(wù)功能方面。通過靜態(tài)分析發(fā)現(xiàn)安全缺陷,可以防止有缺陷設(shè)備的大規(guī)模生產(chǎn),從而節(jié)省資金和維護(hù)公司聲譽(yù)。

嵌入式設(shè)備的安全性在于減少漏洞的數(shù)量。漏洞的嚴(yán)重程度各不相同,嚴(yán)重程度高的漏洞被利用的風(fēng)險(xiǎn)更高。無論部署在何處,所有軟件都存在幾種常見的漏洞類型,例如,遠(yuǎn)程代碼執(zhí)行和跨站點(diǎn)腳本漏洞。在嵌入式系統(tǒng)和物聯(lián)網(wǎng)設(shè)備中,漏洞大多與內(nèi)存緩沖區(qū)溢出、資源泄漏、訪問控制不當(dāng)、加密問題和代碼注入有關(guān)。這些是靜態(tài)分析掃描在嵌入式系統(tǒng)中發(fā)現(xiàn)的一些最常見的嵌入式安全漏洞。

編碼標(biāo)準(zhǔn)為何對(duì)嵌入式系統(tǒng)和工業(yè)4.0安全性至關(guān)重要?


如前所述,C和C++主要用于嵌入式系統(tǒng)。多年來,實(shí)施工業(yè)4.0和物聯(lián)網(wǎng)的組織已經(jīng)認(rèn)識(shí)到所有代碼中安全的重要性,尤其是對(duì)于嵌入式設(shè)備中的C 和 C++,因?yàn)槭〉拇鷥r(jià)可能不僅僅是經(jīng)濟(jì)上的。為了幫助提高軟件的安全性、可移植性、可靠性和可維護(hù)性,編碼標(biāo)準(zhǔn)不斷被創(chuàng)建和改進(jìn)。靜態(tài)分析除了在源代碼中搜索缺陷和漏洞外,還可以應(yīng)用編碼標(biāo)準(zhǔn)中的規(guī)則和建議。這對(duì)于需要驗(yàn)證是否符合行業(yè)標(biāo)準(zhǔn)的組織尤其有用。嵌入式系統(tǒng)的常見編碼標(biāo)準(zhǔn)示例包括 MISRA、AUTOSAR 和 CERT。

行業(yè)標(biāo)準(zhǔn)在解決工業(yè)4.0網(wǎng)絡(luò)安全方面也發(fā)揮著作用:例如,IEC 62443 解決了自動(dòng)化和控制系統(tǒng)中技術(shù)開發(fā)和運(yùn)營的網(wǎng)絡(luò)安全要求。該標(biāo)準(zhǔn)定義了一個(gè)安全的軟件開發(fā)生命周期,包括設(shè)計(jì)、實(shí)施、驗(yàn)證、確認(rèn)、缺陷管理和產(chǎn)品報(bào)廢。

ISO 27001 等安全標(biāo)準(zhǔn)是一種信息安全標(biāo)準(zhǔn),旨在確保制造工廠內(nèi)使用的設(shè)備安全,為了達(dá)到它們的合規(guī)要求,通常需要使用特定的編碼標(biāo)準(zhǔn)。即使在合規(guī)性之外,使用編碼準(zhǔn)則進(jìn)行軟件開發(fā)也被視為一種良好的實(shí)踐(如上述IEC 62443所要求)。

在嵌入式系統(tǒng)中進(jìn)行編碼時(shí),遵循編碼標(biāo)準(zhǔn),并將靜態(tài)分析作為軟件開發(fā)生命周期的一部分,將使我們的數(shù)字世界更加安全。正如之前所述,“就像空氣和飲用水一樣,數(shù)字化只有在缺失時(shí)才會(huì)被注意到”,在發(fā)生安全漏洞的情況下也是如此。

- END -

作者簡(jiǎn)介:Javier Perez,Perforce開源和安全首席布道師

Javier對(duì)技術(shù)和開源軟件充滿熱情,是Perforce Software的開源和安全首席布道師。負(fù)責(zé)開源和應(yīng)用安全產(chǎn)品組合的技術(shù)思想領(lǐng)導(dǎo)和宣傳。

Javier從事應(yīng)用程序開發(fā)、開源、云計(jì)算、應(yīng)用程序安全、AI、SaaS和移動(dòng)行業(yè)已有20多年,并有機(jī)會(huì)在世界各地的行業(yè)活動(dòng)中發(fā)表演講。Javier擁有計(jì)算機(jī)系統(tǒng)榮譽(yù)學(xué)位和工商管理碩士學(xué)位。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    3593

    瀏覽量

    129473
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2909

    文章

    44635

    瀏覽量

    373361
  • 編碼準(zhǔn)則
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    5469
  • 工業(yè)4.0
    +關(guān)注

    關(guān)注

    48

    文章

    2013

    瀏覽量

    118628
  • 靜態(tài)分析
    +關(guān)注

    關(guān)注

    1

    文章

    40

    瀏覽量

    3891
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    新手怎么學(xué)嵌入式?

    的運(yùn)行機(jī)制。例如,了解數(shù)據(jù)結(jié)構(gòu)中的鏈表、棧和隊(duì)列,對(duì)于嵌入式編程中管理數(shù)據(jù)非常有幫助。 2. 選擇合適的編程語言 嵌入式開發(fā)中常用的
    發(fā)表于 12-12 10:51

    開啟全新AI時(shí)代 智能嵌入式系統(tǒng)快速發(fā)展——“第六屆國產(chǎn)嵌入式操作系統(tǒng)技術(shù)與產(chǎn)業(yè)發(fā)展論壇”圓滿結(jié)束

    第六屆國產(chǎn)嵌入式操作系統(tǒng)技術(shù)與產(chǎn)業(yè)發(fā)展論壇聯(lián)合主辦單位陣容強(qiáng)大,論壇由北京航空航天大學(xué)計(jì)算機(jī)學(xué)院、軟件學(xué)院、中國科學(xué)院軟件所以及物聯(lián)網(wǎng)標(biāo)準(zhǔn)與應(yīng)用
    發(fā)表于 08-30 17:24

    嵌入式系統(tǒng)工業(yè)4.0網(wǎng)絡(luò)安全

    CC++嵌入式系統(tǒng)中占主導(dǎo)地位。多年來,實(shí)施工業(yè)4.0
    的頭像 發(fā)表于 08-12 21:45 ?487次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系統(tǒng)</b>中<b class='flag-5'>工業(yè)</b><b class='flag-5'>4.0</b>網(wǎng)絡(luò)<b class='flag-5'>安全</b>

    嵌入式QT常見開發(fā)方式有哪些?

    嵌入式QT常見開發(fā)方式有哪些? 嵌入式工程師在學(xué)習(xí)和使用Qt進(jìn)行開發(fā)時(shí),常見的幾種開發(fā)方式包括: 1.Qt Widgets編程: 通過C++代碼
    發(fā)表于 08-12 10:05

    嵌入式系統(tǒng)怎么學(xué)?

    、C++或者Python。這些語言嵌入式系統(tǒng)開發(fā)中都被廣泛應(yīng)用。 3、微處理器/微控制器架構(gòu):學(xué)習(xí)常見的微處理器和微控制器架構(gòu),如ARM、AVR、PIC等,了解其特性和應(yīng)用場(chǎng)景。
    發(fā)表于 07-02 10:10

    工業(yè)控制系統(tǒng)安全性分析與對(duì)策

    中斷、設(shè)備損壞、數(shù)據(jù)泄露等嚴(yán)重后果,甚至威脅到國家安全和公共利益。因此,對(duì)工業(yè)控制系統(tǒng)安全性進(jìn)行深入分析,并提出相應(yīng)的對(duì)策,具有重要的現(xiàn)實(shí)
    的頭像 發(fā)表于 06-28 18:07 ?1198次閱讀

    如何提升嵌入式編程能力?

    和使用。 9. 網(wǎng)絡(luò)編程嵌入式設(shè)備越來越多地連接到網(wǎng)絡(luò),因此學(xué)習(xí)TCP/IP、UDP、HTTP等網(wǎng)絡(luò)協(xié)議是必要的。 10. 關(guān)注安全性:了解嵌入式
    發(fā)表于 06-21 10:01

    嵌入式系統(tǒng)中集成Rust和Qt的實(shí)踐

    Rust 擁有豐富的庫生態(tài)系統(tǒng),用于序列化和反序列化、異步操作、解析不安全輸入、線程、靜態(tài)分析等,而 Qt 是一個(gè) C++ 工具包,支持跨各
    發(fā)表于 05-03 10:26 ?1817次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>嵌入式</b><b class='flag-5'>系統(tǒng)</b>中集成Rust和Qt的<b class='flag-5'>實(shí)踐</b>

    如何成為一名嵌入式C語言高手?

    如何成為一名嵌入式C語言高手? 嵌入式系統(tǒng)是當(dāng)今科技領(lǐng)域的核心,而C語言則是嵌入式
    發(fā)表于 04-07 16:03

    如何成為一名嵌入式C語言高手?

    如何成為一名嵌入式C語言高手? 嵌入式系統(tǒng)是當(dāng)今科技領(lǐng)域的核心,而C語言則是嵌入式
    發(fā)表于 03-25 14:12

    嵌入式工程師需要掌握哪些技術(shù)?

    一些必要的技術(shù)能力是至關(guān)重要的。本篇中,我們將討論入行嵌入式所必須的技術(shù)能力。 1.C/C++編程能力:
    發(fā)表于 03-04 16:38

    嵌入式人工智能的就業(yè)方向有哪些?

    操作系統(tǒng)使用及C高級(jí)編程 數(shù)據(jù)結(jié)構(gòu)與算法 二:嵌入式Linux應(yīng)用工程師,Linux網(wǎng)絡(luò)開發(fā)工程師 文件IO 并發(fā)程序設(shè)計(jì) 項(xiàng)目實(shí)戰(zhàn):基于Linux的Flappybird游戲開發(fā) 網(wǎng)絡(luò)
    發(fā)表于 02-26 10:17

    如何使用 DSC 和 MCU 確保嵌入式系統(tǒng)安全

    作者:Stephen Evanczuk 投稿人:DigiKey 北美編輯 隨著向物聯(lián)網(wǎng) (IoT) 的遷移,安全性已不再是嵌入式應(yīng)用中的選配功能,已發(fā)展成為確保系統(tǒng)完整
    的頭像 發(fā)表于 02-13 14:38 ?741次閱讀
    如何使用 DSC 和 MCU 確保<b class='flag-5'>嵌入式</b><b class='flag-5'>系統(tǒng)安全</b>

    c語言,c++,java,python區(qū)別

    操作系統(tǒng)嵌入式系統(tǒng)等對(duì)性能要求較高的場(chǎng)景。C語言的語法相對(duì)簡(jiǎn)單,學(xué)習(xí)曲線較平緩,也是學(xué)習(xí)其他高級(jí)語言的入門語言。 C++
    的頭像 發(fā)表于 02-05 14:11 ?2389次閱讀

    嵌入式學(xué)習(xí)步驟

    開發(fā)。 嵌入式學(xué)習(xí)步驟總結(jié)如下: (1).確定目標(biāo)平臺(tái):選擇適合您要開發(fā)的嵌入式系統(tǒng)的硬件平臺(tái)。這取決于您要控制的設(shè)備以及您需要執(zhí)行的任務(wù)。 (2).選擇編程語言:
    發(fā)表于 02-02 15:24