精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

適用于您應(yīng)用的安全編碼技術(shù)

IAR愛亞系統(tǒng) ? 來源:IAR愛亞系統(tǒng) ? 2023-09-21 17:24 ? 次閱讀

編程語言的現(xiàn)代化和更好的編碼技術(shù)與從機(jī)械計(jì)算機(jī)到現(xiàn)代軟件開發(fā)流程的演變直接相關(guān)。我們已經(jīng)從高度專業(yè)化、主要是數(shù)學(xué)符號的表示法過渡到了更接近人類語法的高級編程語言[1],這一進(jìn)步歸功于編譯器技術(shù)。然而,這也打開了代碼缺陷之門。C和C++ 等高級編程語言,包含大量未定義的行為,而不同的編譯器對這些行為的解釋可能略有不同,這可能會導(dǎo)致未知或不希望的副作用,最終轉(zhuǎn)化為缺陷。

查找和修復(fù)這些缺陷可能占用開發(fā)時(shí)間的高達(dá)80%,具體取決于開發(fā)組織的成熟程度。這引出了一個(gè)明顯的結(jié)論,那就是代碼質(zhì)量是一個(gè)大問題。那么,為什么不盡量避免缺陷,以減少調(diào)試所需的時(shí)間呢?

順便說一句,盡管我們在軟件中仍然使用“錯(cuò)誤”和“調(diào)試”這些概念,但這些詞的起源可以追溯到哈佛大學(xué)的機(jī)械計(jì)算機(jī)。當(dāng)時(shí),一只飛蛾卡在繼電器中,這一事件被記錄為計(jì)算機(jī)歷史上第一個(gè)“錯(cuò)誤”或缺陷。

一次又一次重復(fù)同樣的錯(cuò)誤

眾所周知,在Web、應(yīng)用程序、桌面,甚至嵌入式開發(fā)中,開發(fā)人員傾向于一次又一次地在他們的源代碼中無意間引入相同類型的錯(cuò)誤。這個(gè)結(jié)論來自于多個(gè)備受尊敬的機(jī)構(gòu),如NASA、貝爾實(shí)驗(yàn)室和MITRE,它們進(jìn)行了多項(xiàng)調(diào)查和研究。一些常見陷阱的例子包括在C++代碼(甚至C代碼)中沒有進(jìn)行分配后的釋放,以及使用沒有原型的函數(shù),因此無法在編譯時(shí)進(jìn)行嚴(yán)格的類型檢查。這項(xiàng)研究的結(jié)果列出了最佳編程實(shí)踐或推薦的編程實(shí)踐,可以識別有風(fēng)險(xiǎn)的不良編碼行為。

有許多關(guān)于如何提高代碼質(zhì)量的指南和編碼實(shí)踐,這些指南和編碼實(shí)踐基于常見錯(cuò)誤以及如何在將來避免這些常見錯(cuò)誤。其中一些技巧和實(shí)踐已經(jīng)成為廣泛接受的標(biāo)準(zhǔn)(比如MISRA-C和CERT-C),特別是在像汽車、醫(yī)療和鐵路等關(guān)鍵行業(yè)中,以確保應(yīng)用程序的代碼安全性(safety)和代碼安全性(security)。功能安全標(biāo)準(zhǔn),如IEC 61508[2]、EN 50128[3]和ISO 26262 [4],建議(或高度建議,取決于安全完整性級別(SIL)或汽車安全完整性級別(ASIL))使用靜態(tài)和運(yùn)行時(shí)分析工具,以滿足標(biāo)準(zhǔn)。安全關(guān)鍵系統(tǒng)中的缺陷可能導(dǎo)致嚴(yán)重后果,如人員傷亡或環(huán)境破壞。

關(guān)注可靠性

安全編碼技術(shù)綜合了代碼質(zhì)量、代碼安全性(safety)和代碼安全性(security)。代碼安全性(safety)關(guān)注的是軟件的可靠性,而代碼安全性(security)則旨在防止不必要的活動(dòng),并確保在遭受攻擊時(shí)系統(tǒng)的安全性(security)。這兩者都深刻依賴于代碼質(zhì)量,因?yàn)榇a質(zhì)量是每個(gè)可靠應(yīng)用程序的基礎(chǔ)。

安全編碼技術(shù)和標(biāo)準(zhǔn)的目標(biāo)是推動(dòng)軟件的安全性,以確保所需的可靠性。然而,同樣重要的是提高源代碼的可讀性和可維護(hù)性。更高效、更易讀的代碼意味著未來的源代碼更加健壯,缺陷更少,并有助于實(shí)現(xiàn)代碼的可重用性。

MISRA C是避免常見陷阱和漏洞的最成熟的軟件開發(fā)標(biāo)準(zhǔn)之一,同時(shí)也有其他指南,如CWE和CERT-C編碼標(biāo)準(zhǔn),這些標(biāo)準(zhǔn)在任何嵌入式應(yīng)用程序中都被強(qiáng)烈推薦。讓我們更深入地了解這些編碼標(biāo)準(zhǔn)。

MISRA C標(biāo)準(zhǔn)

MISRA C由汽車行業(yè)軟件可靠性協(xié)會(Motor Industry Software Reliability Association)開發(fā),它的目標(biāo)是提高嵌入式系統(tǒng)中代碼的安全性、可移植性和可靠性,尤其是那些使用ISO C編程的系統(tǒng)。

MISRA C標(biāo)準(zhǔn)的第一版名為《車載軟件C語言開發(fā)指南》,于1998年發(fā)布,正式名稱為MISRA-C:1998。之后于2004年和2012年進(jìn)行更新,添加了更多的規(guī)則。此外,還有基于C++ 2003的MISRA C++ 2008標(biāo)準(zhǔn)。最近,MISRA C:2012的修正案1添加了14條附加的規(guī)則,重點(diǎn)關(guān)注了ISO C安全(Secure)指南中強(qiáng)調(diào)的安全(Security)問題。其中一些規(guī)則解決了在許多嵌入式應(yīng)用程序中已知的安全漏洞之一:與使用不可信數(shù)據(jù)相關(guān)的特定問題。

MISRA規(guī)則可以幫助您在將代碼提交到正式構(gòu)建之前發(fā)現(xiàn)問題,因此通過這種方式發(fā)現(xiàn)的缺陷就好像缺陷從未存在過一樣。MISRA規(guī)則的設(shè)計(jì)是以安全性和可靠性為前提的,同時(shí)也讓代碼更容易移植到其他工具和架構(gòu)上。

CWE and CERT C/C++

CWE,即通用弱點(diǎn)枚舉(Common Weakness Enumeration),是一個(gè)由社區(qū)開發(fā)的有關(guān)軟件弱點(diǎn)的字典。CWE提供了一套統(tǒng)一的、可衡量的軟件弱點(diǎn),以更好地理解和管理它們,并支持能夠找到它們的高效軟件安全工具和服務(wù)。

CERT C/C++安全(Secure)編碼標(biāo)準(zhǔn)是由計(jì)算機(jī)緊急響應(yīng)團(tuán)隊(duì)(CERT)發(fā)布的標(biāo)準(zhǔn),提供了有關(guān)C/C++編程語言中安全(Secure)編碼的規(guī)則和建議。

實(shí)施安全編碼技術(shù)

作為一般建議,每個(gè)嵌入式應(yīng)用程序都應(yīng)遵循MISRA(對于安全關(guān)鍵系統(tǒng),MISRA 是強(qiáng)制性的)、CWE和CERT C/C++標(biāo)準(zhǔn)。

遵循對應(yīng)的編碼標(biāo)準(zhǔn)之后,在運(yùn)行時(shí),您的應(yīng)用程序仍然可能受到算術(shù)問題、緩沖區(qū)溢出、邊界問題、堆完整性和內(nèi)存泄漏等問題的影響。要檢測到這些錯(cuò)誤,可以在可能發(fā)生潛在錯(cuò)誤的所有位置插入特定的檢測代碼或斷言。然而,手動(dòng)添加指令來檢查并在運(yùn)行時(shí)報(bào)告問題是一項(xiàng)非常耗時(shí)的任務(wù)。

要遵守所有這些準(zhǔn)則和標(biāo)準(zhǔn),您需要遵循近700條規(guī)則和要求,同時(shí)還需要在源代碼中添加測試代碼。那么,如何實(shí)施安全編碼技術(shù)并遵循所有這些規(guī)則呢?

使用自動(dòng)化工具

提高軟件質(zhì)量、安全性和可靠性的最佳方法是使用自動(dòng)化工具。這可以通過使用高質(zhì)量的編譯器和鏈接器(最好是經(jīng)過功能安全認(rèn)證的編譯器和鏈接器),以及自動(dòng)化的靜態(tài)分析和運(yùn)行時(shí)分析工具來實(shí)現(xiàn)。

編譯器和鏈接器應(yīng)該支持現(xiàn)代編程語言,比如最新的C(ISO/IEC 9899:2018)和C++(ISO/IEC 14882,也稱為C++17修訂版),這樣它們就會在出現(xiàn)可疑情況或語法問題時(shí)生成警告,例如,volatile內(nèi)存訪問順序可能會影響應(yīng)用程序的邏輯。

編譯器和鏈接器警告(warning)是您的第一步靜態(tài)分析檢查,絕不能忽視,特別是在功能安全環(huán)境中。最佳建議是通過更改編譯器設(shè)置將這些警告視為錯(cuò)誤,這可以,將所有警告轉(zhuǎn)變?yōu)殄e(cuò)誤。這將讓開發(fā)人員修復(fù)代碼中的所有不明確之處,因?yàn)樗袉栴}都將被視為真正的問題。

靜態(tài)分析工具可以幫助您發(fā)現(xiàn)代碼中最常見的缺陷,同時(shí)還可以幫助您找出開發(fā)人員在試圖編寫代碼時(shí)通常不會考慮或擔(dān)心的問題,尤其是當(dāng)他們只是在編寫腳手架代碼以使某些功能正常運(yùn)行時(shí)。這些類型的靜態(tài)分析工具確實(shí)可以幫助您開發(fā)更高質(zhì)量的代碼,因?yàn)樗鼈兛梢詭椭鷮?shí)施編碼標(biāo)準(zhǔn)。此外,還有動(dòng)態(tài)或運(yùn)行時(shí)分析工具可以捕獲僅在運(yùn)行時(shí)出現(xiàn)的代碼缺陷。動(dòng)態(tài)或運(yùn)行時(shí)分析工具可以在通過軟件調(diào)試器中執(zhí)行程序時(shí)發(fā)現(xiàn)代碼中的實(shí)際和潛在錯(cuò)誤。

因此,當(dāng)您查看系統(tǒng)中可能存在的所有缺陷時(shí),靜態(tài)分析工具擅長找到某些類型的缺陷,而運(yùn)行時(shí)分析工具則擅長找到其他類型的缺陷。有時(shí)它們可能會有重疊,但有時(shí)只有一種工具才能檢測到某個(gè)缺陷。要獲得最全面的代碼分析,最好將這兩種工具結(jié)合使用,并將它們與頂尖的構(gòu)建工具集成在一起。以下矩陣最好地展示了在結(jié)合不同工具時(shí)檢測的完整缺陷覆蓋范圍。

40fcfde0-585f-11ee-939d-92fbcf53809c.png

捕獲漏洞

這個(gè)效應(yīng)可以通過下面的圖片很好地解釋,這張圖片來自德國比勒費(fèi)爾德大學(xué)[5],由一位匿名貢獻(xiàn)者拍攝,并在2005年廣泛傳播:

41168170-585f-11ee-939d-92fbcf53809c.jpg

通常,破壞系統(tǒng)最簡單的方法是繞過它而不是戰(zhàn)勝它。這主要是與不安全編碼實(shí)踐相關(guān)的軟件漏洞。上面的圖片很好地闡釋了這一點(diǎn):根據(jù)建議,門已按規(guī)范設(shè)置并正常運(yùn)行。然而,安全措施很容易被繞過,直到運(yùn)行時(shí)分析工具(在本例中是雪)投入使用之前,可能很難發(fā)現(xiàn)安全系統(tǒng)中的漏洞。自動(dòng)化運(yùn)行時(shí)分析工具可以掃描您的代碼以尋找潛在的漏洞,這是檢測此類問題的絕佳方式。

在本例中,安全漏洞通過硬件修復(fù),具體來說,根據(jù)2020年谷歌街景的信息,安裝了混凝土護(hù)柱[6]:

編碼標(biāo)準(zhǔn)有助于讓您的代碼面向未來并易于重用。這意味著代碼質(zhì)量影響了代碼的可重用性,這是成熟組織在開發(fā)新產(chǎn)品時(shí)的文化。實(shí)施安全編碼技術(shù)形成了一個(gè)良性循環(huán),并且它再次驗(yàn)證了我們的前提:一切都始于代碼質(zhì)量。

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

    關(guān)注

    22

    文章

    2104

    瀏覽量

    73503
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4753

    瀏覽量

    68368
  • 編碼技術(shù)
    +關(guān)注

    關(guān)注

    1

    文章

    35

    瀏覽量

    11043

原文標(biāo)題:適用于您應(yīng)用的安全編碼技術(shù)

文章出處:【微信號:IAR愛亞系統(tǒng),微信公眾號:IAR愛亞系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    NVIDIA推出適用于網(wǎng)絡(luò)安全的NIM Blueprint

    德勤使用適用于容器安全的 NVIDIA NIM Agent Blueprint 幫助企業(yè)利用開源軟件構(gòu)建安全的 AI。
    的頭像 發(fā)表于 11-20 09:58 ?157次閱讀

    適用于工業(yè)應(yīng)用的使用MDIO的以太網(wǎng)PHY配置

    電子發(fā)燒友網(wǎng)站提供《適用于工業(yè)應(yīng)用的使用MDIO的以太網(wǎng)PHY配置.pdf》資料免費(fèi)下載
    發(fā)表于 09-21 10:24 ?0次下載
    <b class='flag-5'>適用于</b>工業(yè)應(yīng)用的使用MDIO的以太網(wǎng)PHY配置

    選擇適用于汽車應(yīng)用的基準(zhǔn)電壓

    電子發(fā)燒友網(wǎng)站提供《選擇適用于汽車應(yīng)用的基準(zhǔn)電壓.pdf》資料免費(fèi)下載
    發(fā)表于 09-02 11:26 ?0次下載
    選擇<b class='flag-5'>適用于</b>汽車應(yīng)用的基準(zhǔn)電壓

    適用于3D機(jī)器視覺的高度可擴(kuò)展的TI DLP技術(shù)

    電子發(fā)燒友網(wǎng)站提供《適用于3D機(jī)器視覺的高度可擴(kuò)展的TI DLP技術(shù).pdf》資料免費(fèi)下載
    發(fā)表于 08-23 09:57 ?0次下載
    <b class='flag-5'>適用于</b>3D機(jī)器視覺的高度可擴(kuò)展的TI DLP<b class='flag-5'>技術(shù)</b>

    適用于類人機(jī)器人的TI DLP? Pico?技術(shù)

    電子發(fā)燒友網(wǎng)站提供《適用于類人機(jī)器人的TI DLP? Pico?技術(shù).pdf》資料免費(fèi)下載
    發(fā)表于 08-23 09:26 ?0次下載
    <b class='flag-5'>適用于</b>類人機(jī)器人的TI DLP? Pico?<b class='flag-5'>技術(shù)</b>

    適用于AR眼鏡的TI DLP? Pico?技術(shù)

    電子發(fā)燒友網(wǎng)站提供《適用于AR眼鏡的TI DLP? Pico?技術(shù).pdf》資料免費(fèi)下載
    發(fā)表于 08-23 09:21 ?0次下載
    <b class='flag-5'>適用于</b>AR眼鏡的TI DLP? Pico?<b class='flag-5'>技術(shù)</b>

    適用于安全相關(guān)應(yīng)用中微控制器的TPS653850-Q1多軌電源數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《適用于安全相關(guān)應(yīng)用中微控制器的TPS653850-Q1多軌電源數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 04-09 10:17 ?0次下載
    <b class='flag-5'>適用于</b><b class='flag-5'>安全</b>相關(guān)應(yīng)用中微控制器的TPS653850-Q1多軌電源數(shù)據(jù)表

    NVIDIA cuPQC幫助開發(fā)適用于量子計(jì)算時(shí)代的加密技術(shù)

    NVIDIA cuPQC 可為相關(guān)開發(fā)者提供加速計(jì)算支持,幫助開發(fā)適用于量子計(jì)算時(shí)代的加密技術(shù)。cuPQC 庫可利用 GPU 并行性,為要求嚴(yán)苛的安全算法提供支持。
    的頭像 發(fā)表于 03-22 09:53 ?392次閱讀

    適用于安全相關(guān)應(yīng)用的電源管理IC TPS653860/61-Q1 數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《適用于安全相關(guān)應(yīng)用的電源管理IC TPS653860/61-Q1 數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 03-21 10:59 ?0次下載
    <b class='flag-5'>適用于</b><b class='flag-5'>安全</b>相關(guān)應(yīng)用的電源管理IC TPS653860/61-Q1 數(shù)據(jù)表

    微軟正式發(fā)布適用于Windows的Sudo

    微軟已在 Windows 11 Insider Preview Build 26052 中發(fā)布適用于 Windows 的 Sudo,并將其在 MIT 協(xié)議下進(jìn)行開源。
    的頭像 發(fā)表于 03-19 09:20 ?801次閱讀
    微軟正式發(fā)布<b class='flag-5'>適用于</b>Windows的Sudo

    適用于安全相關(guān)應(yīng)用的電源管理 IC TPS653860/61-Q1數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《適用于安全相關(guān)應(yīng)用的電源管理 IC TPS653860/61-Q1數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 03-05 16:19 ?0次下載
    <b class='flag-5'>適用于</b><b class='flag-5'>安全</b>相關(guān)應(yīng)用的電源管理 IC TPS653860/61-Q1數(shù)據(jù)表

    適用于安全相關(guān)應(yīng)用中微控制器的TPS653850-Q1多軌電源數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《適用于安全相關(guān)應(yīng)用中微控制器的TPS653850-Q1多軌電源數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 03-05 14:32 ?0次下載
    <b class='flag-5'>適用于</b><b class='flag-5'>安全</b>相關(guān)應(yīng)用中微控制器的TPS653850-Q1多軌電源數(shù)據(jù)表

    適用于汽車安全相關(guān)應(yīng)用的電源管理 IC (PMIC)TPS6593-Q1數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《適用于汽車安全相關(guān)應(yīng)用的電源管理 IC (PMIC)TPS6593-Q1數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 03-05 10:34 ?0次下載
    <b class='flag-5'>適用于</b>汽車<b class='flag-5'>安全</b>相關(guān)應(yīng)用的電源管理 IC (PMIC)TPS6593-Q1數(shù)據(jù)表

    是否有適用于CYBT-343026-01的SPICE型號?

    您是否有適用于 CYBT-343026-01 的 SPICE 型號? 該模塊將在本質(zhì)安全應(yīng)用中使用,并且需要知道內(nèi)部電容/電感。
    發(fā)表于 03-01 07:56

    IGBT適用于ZVS 還是 ZCS?

    IGBT適用于ZVS 還是 ZCS?
    的頭像 發(fā)表于 12-01 16:10 ?1195次閱讀
    IGBT<b class='flag-5'>適用于</b>ZVS 還是 ZCS?