国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CERT如何保證軟件信息安全

北匯信息POLELINK ? 2023-07-31 17:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者 | 愛吃小魚干

小編 | 吃不飽


01嵌入式軟件應用程序所面臨的日益增多的網絡威脅

嵌入式軟件應用面臨著越來越多的安全問題,在任何現代軟件開發環境中,考慮安全性都是非常重要的。即使經過最好的審查和測試的軟件也可能存在BUG,而這些BUG可以讓惡意用戶進入系統并造成巨大的物理和財務損失。
其攻擊范圍涵蓋很多領域:從機場的調度系統到醫療設備都可能受到攻擊,特別值得關注的是日益增加的自動駕駛汽車或連接汽車、列車和飛機等計算機控制系統。任何與外界通信的系統都面臨著風險,例如汽車可能被盜,更糟糕的情況是車輛的控制權被奪取。

Q

那么,BUG是如何進入系統的呢?

C和C++語言存在未定義的行為和不確定的行為,這可能會導致問題,尤其是對于沒有經驗的開發人員來說,他們可能不知道代碼實際上并沒有執行他們預期的操作。此類錯誤可能會導致開發者錯誤地認為一切都很正常,因為以前使用過該代碼,所以不需要重新驗證。但實際上并非如此。代碼的優化可能看起來是一件好事,占用更少的空間,但代碼優化可能會刪除優化器認為不必要但卻對安全至關重要的檢查,例如除以零和不可達代碼檢測。外部庫可能包含BUG,但是采用的代碼可能沒有經過驗證。因此,在使用外部庫時,重要的是檢查公開BUG的已知數據庫,例如CV。而任何使用動態內存的地方都可能導致問題,特別是像內存泄漏之類的問題。

更多的安全漏洞是由于假設輸入數據格式正確且無需驗證,導致出現數據緩沖區溢出和使用未分配動態內存(即所謂的“use after free”)等問題。盡管人們普遍認識到這些安全問題可能會出現,但它們并沒有得到足夠的關注和解決。原因可能有很多,但最主要的原因是之前沒有真正推動改變,增加新功能比花費時間檢查安全問題更為重要。可以通過教育開發人員貫穿軟件開發生命周期考慮安全、改進流程和工具來提高檢測安全漏洞的信心,以及針對安全的測試,來改善這種情況。

02CERT C和C++如何檢測軟件安全問題
如今可能有實施軟件安全的愿望,那么如何實現呢?我們將看看嵌入式系統中使用的語言,以及如何使用C和C++來檢測這些語言引起的安全問題。歷史上,嵌入式系統是用匯編語言編寫的,但現在情況已經改變,大多數關鍵系統都是用C或C++編寫的。C++正在變得越來越受歡迎,但當前C仍是首選語言。然而,這兩種語言都存在安全問題。

White Source知識庫顯示,在過去十年中發現的開源代碼安全漏洞中,47%是C,6%是C++。這可能會導致人們認為C本質上比其他語言更容易受到攻擊,但事實并非如此。因為C語言編寫的代碼數量比任何其他語言都多,并且時間跨度較長,因此發現漏洞的機會更多。而在過去五年中發現了大量漏洞是好事情。高危漏洞的高比例(36%)在C++中被發現,然后是C(26%)。但需要注意的是,隨著C++變得越來越流行,也會有更多的機會在兩種語言中發現漏洞,因此需要適當評估這些數據。

在計算機安全中,最常見的漏洞是緩沖區溢出和輸入驗證。緩沖區溢出是一個非常嚴重的問題,可能會導致嚴重的后果。C和C++特別容易受到溢出攻擊的影響,因為它們將字符串定義為未終止的字符數組,沒有隱式進行邊界檢查,即使開發人員認為已經進行了檢查,標準庫函數對字符串也不執行任何邊界檢查。在某些函數(如向量、點、A-T)中,C++進行了一些改進,并通過默認進行了邊界檢查。漏洞代碼允許惡意用戶覆蓋內存中的其他值,例如CPU必須執行的指令,從而更改代碼的行為。

Q

關于緩沖區溢出

那就不得不提到兩個常見的函數:strcpy和gets。這兩個函數都存在潛在的安全風險。如果輸入字符串超過目標數組的預定義長度,則strcpy函數會導致緩沖區溢出;而gets函數則永遠不能被安全地使用,因為gets函數沒有邊界檢查,當輸入的字符串長度大于目標數組的長度時,將發生緩沖區溢出,可能會導致程序運行異常或被入侵者利用。

此外,未受限制的格式化輸出字符串也可能會導致安全漏洞。這種漏洞是由于應用程序將輸入字符串的數據作為命令進行評估。如果惡意用戶可以完全或部分地控制格式化字符串的內容,則可能會導致應用程序崩潰、堆棧內容泄露、任意內存寫入等后果。此外,攻擊者還可以執行任意代碼并以易受攻擊進程的權限運行,從而破壞系統的安全和穩定性。
即使是最有經驗的程序員也可能犯錯。研究表明,他們通常只能以約50% 的效率發現自己的錯誤。那么如何確保安全問題,例如緩沖區溢出的情況不會出現在最終產品中呢?編譯器可能會看到顯而易見的起點,但它可能僅實現語言標準的子集,語言標準的解釋可能因編譯器而異,這可能導致未來的移植或語義錯誤。最好的方法是根據編碼標準對代碼進行檢查,例如CERT C或CERT C++。正如我們所看到的,C和C++都具有未定義和未指定的行為,應該避免使用。而編碼標準正提供了一種做到這一點的方法。

編碼標準是一組規則,通常由一個團隊根據多年的經驗制定,可以讓開發人員對其代碼更有信心。通過使用編碼標準遵循一組規則,降低引入錯誤的可能性,使代碼更易于維護。任何安全系統的起點都是使用防御性實現技術,使軟件即使在面臨不利情況時也能繼續運行。公認的編碼標準意味著其已經考慮了常見的使用情況,因為C和C++都具有可能導致關鍵或未指定行為的特性。編碼標準因此定義了一個語言子集,以防止使用會導致此類行為的構造方式。此外,編碼標準將實現強類型,它確保對語言數據類型有所了解,從而防止某些類別的編程錯誤。

CERT部門協助開發的編碼標準專注于安全,它們被認為是一個全面的程序安全標準,并在多個行業中使用。該標準由一個在線社區開發,有單獨的標準適用于C、C++和Java。然而,由于C和C++之間存在重疊,許多CERT C規則已經包括在內。只需添加一些額外的規則,便可關注C++語言中沒有完全覆蓋的部分。如何通過限制使用某些庫函數來創建一個安全的C語言子集,以提高代碼的安全性?這可以通過引入一些規則來實現,比如INTC和A-R等,這些規則旨在防止常見的安全問題,例如緩沖區溢出和輸入驗證等。ARR30-C:不要形成或使用超出邊界的指針或數組。如果使用越界指針或數組,就可能會導致程序錯誤和安全漏洞。因此,在編寫程序時,應該確保所有指針和數組的訪問都在其有效范圍內。如果需要進行指針或數組的操作,應該先檢查其有效范圍,再進行后續的處理。這樣可以避免因為越界訪問而導致的程序錯誤和安全漏洞。例如,如果使用指針訪問數組元素時,應該先檢查指針是否指向數組的有效范圍內,再進行訪問操作。如果指針越界,就可能會導致程序崩潰或者被攻擊者利用。因此,ARR30-C規則的實踐可以提高程序的安全性和穩定性。ARR38-C:保證庫函數不會形成無效指針。它要求在使用庫函數時,必須保證傳遞給函數的指針參數是有效的,即指向已分配的內存區域或NULL指針。如果傳遞給函數的指針參數是無效的,那么就可能會出現程序錯誤和安全漏洞。
因此,在使用庫函數時,應該先檢查傳遞給函數的指針參數是否有效,再進行后續的處理。這樣可以避免因為傳遞無效指針而導致的程序錯誤和安全漏洞。例如,如果使用strcpy()函數將一個字符串復制到另一個字符串中,那么應該先檢查目標字符串的指針是否有效,再進行復制操作。如果目標字符串的指針無效,那么就可能會導致程序崩潰或者被攻擊者利用。因此,ARR38-C規則的實踐可以提高程序的安全性和穩定性。
EXP39-C: 不要通過不兼容類型的指針訪問變量。如果使用不兼容類型的指針訪問變量,就可能會導致程序錯誤和安全漏洞。因此,在訪問變量時,應該使用與變量類型兼容的指針。如果需要使用不兼容類型的指針,可以通過類型轉換來實現。但是,在進行類型轉換時,需要確保轉換后的指針仍然指向有效的內存區域,否則就可能會出現程序錯誤和安全漏洞。因此,EXP39-C規則的實踐可以提高程序的安全性和穩定性。
FIO37-C: 在使用fgets()或fgetws()函數讀取輸入時,不要假定函數返回的字符串非空。因為這兩個函數在讀取輸入時可能會遇到文件結束符或讀取錯誤等情況,導致返回的字符串為空。如果程序在使用fgets()或fgetws()函數時假定返回的字符串非空,那么就可能會出現程序錯誤和安全漏洞。因此,在使用fgets()或fgetws()函數時,應該先檢查返回的字符串是否為空,再進行后續的處理。這樣可以避免因為假定字符串非空而導致的程序錯誤和安全漏洞。
STR31-C: 確保字符串存儲空間足夠容納字符數據和空字符終止符。這條規則的目的是防止緩沖區溢出和其他安全漏洞,從而提高代碼的安全性和可靠性。具體實現方法包括使用安全的字符串函數、檢查字符串長度和緩沖區大小、避免使用不安全的字符串拼接等。在編寫代碼時,應該遵循這條規則,并結合實際情況選擇相應的實現方法,以確保代碼的安全性和可靠性。STR32-C: 不要將非零終止字符序列傳遞給期望字符串的庫函數。旨在防止將非空字符終止的字符序列傳遞給期望字符串的庫函數。這條規則的目的是防止緩沖區溢出和其他安全漏洞,從而提高代碼的安全性和可靠性。具體實現方法包括使用安全的字符串函數、檢查字符串長度和緩沖區大小、避免使用不安全的字符串拼接等。在編寫代碼時,應該遵循這條規則,并結合實際情況選擇相應的實現方法,以確保代碼的安全性和可靠性。

03靜態代碼分析工具如何有效地實現安全編碼標準?

如何實施編碼標準以確保代碼的正確性和合規性呢?CERT C標準規定了確定性、不確定性和合規性的要求,并強制要求代碼不得違反任何規則。同時,建議遵循推薦操作以便更容易符合規則。為了檢查代碼是否違反規則,該標準建議使用靜態代碼分析工具。

在軟件開發生命周期中,手動和自動代碼審查都有其適用的場景,例如自動化工具無法知道代碼的實際意圖。然而,手動代碼審查的結果會受到審核人員專業知識的影響。靜態代碼分析可以檢查很少被控制的代碼片段,這些代碼片段通常無法通過其他方法測試。這可以找出異常處理程序或日志系統中的缺陷。與手動代碼審查相比,其速度更快,而且不占用開發人員的時間,使他們能夠更專注于開發。開發者廣泛認為手動審核和自動靜態代碼分析的結合是最有效的方式,因為這是識別漏洞和弱點的最佳方式,CERT C 和CERT C++ 都應該使用靜態代碼分析工具,最好是行業標準的工具,如Helix QAC,其對CERT編碼規范的覆蓋度達到100%。這款Perforce的靜態代碼分析工具可以驗證代碼符合編碼指南,并提供這種符合性的證據,以滿足網絡安全要求。Helix QAC 具有完整的第三方 C 和 C++ 語言庫的覆蓋,這使得開發人員更容易驗證軟件是否免受常見代碼安全漏洞的影響。

04總結
總之,實施編碼標準是確保代碼質量的重要步驟,它可以幫助開發人員避免常見的錯誤和漏洞,從而提高軟件的可靠性和安全性。同時,使用靜態分析工具進行全面的代碼審查可以進一步加強代碼的正確性和符合性。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 軟件
    +關注

    關注

    69

    文章

    5332

    瀏覽量

    91590
  • 信息安全
    +關注

    關注

    5

    文章

    700

    瀏覽量

    40646
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    C語言安全編碼指南:MISRA C、CERT C、CWE 與 C Secure 標準對比與Perforce QAC應用詳解

    如何編寫真正安全的C語言代碼?指南涵蓋MISRA C、CERT、CWE等國際安全編碼標準對比,以及如何借助Perforce QAC自動檢測漏洞。推薦給嵌入式/汽車/工業軟件的開發者!
    的頭像 發表于 01-26 17:38 ?818次閱讀
    C語言<b class='flag-5'>安全</b>編碼指南:MISRA C、<b class='flag-5'>CERT</b> C、CWE 與 C Secure 標準對比與Perforce QAC應用詳解

    汽車網絡安全開發語言選型指南:C/C++/Rust/Java等主流語言對比+Perforce QAC/Klocwork工具支持

    汽車網絡安全如何選編程語言?C、C++、Rust、Java……誰更適合AUTOSAR、ISO/SAE 21434?一文了解8種主流語言的優劣與適用場景,以及Perforce QAC/Klocwork對MISRA、CERT等規范的支持。
    的頭像 發表于 12-26 11:13 ?441次閱讀
    汽車網絡<b class='flag-5'>安全</b>開發語言選型指南:C/C++/Rust/Java等主流語言對比+Perforce QAC/Klocwork工具支持

    光庭信息亮相2025 CCF中國軟件大會

    中心隆重召開。光庭信息受邀參會,在“車載軟件智能研發:從代碼生成到安全保障論壇”上,光庭信息人工智能研究院產品總師金攀發表了《車載軟件智能研
    的頭像 發表于 12-05 11:44 ?725次閱讀
    光庭<b class='flag-5'>信息</b>亮相2025 CCF中國<b class='flag-5'>軟件</b>大會

    英飛凌推出AURIX? TC4x軟件,全面提升汽車應用的質量、功能安全信息安全

    (MCU)系列設計的全套軟件產品組合。該產品組合為AUTOSAR MCAL和安全軟件配備了符合生產要求的ASIL D級驅動程序,,并通過減少軟件分區工作量、簡化系統級
    的頭像 發表于 09-15 15:38 ?2297次閱讀

    Perforce QAC 2025.2版本更新:虛擬內存優化、100%覆蓋CERT C規則、CI構建性能提升等

    【產品更新】Perforce QAC更新至2025.2版本,安裝路徑和許可證都有變化!重點:虛擬內存占用降低、100%覆蓋CERT C規則,C23支持增強、CI構建性能提升等。建議盡快評估升級。
    的頭像 發表于 09-09 14:40 ?678次閱讀
    Perforce QAC 2025.2版本更新:虛擬內存優化、100%覆蓋<b class='flag-5'>CERT</b> C規則、CI構建性能提升等

    如何在保證數據安全的前提下優化通信協議?

    產品實拍圖 在保證數據安全的前提下優化通信協議,核心是 **“安全機制輕量化、安全與效率協同設計、按需適配場景風險”**—— 既不因過度安全
    的頭像 發表于 08-27 09:55 ?737次閱讀
    如何在<b class='flag-5'>保證</b>數據<b class='flag-5'>安全</b>的前提下優化通信協議?

    國民技術安全芯片筑牢關鍵信息基礎設施安全防線

    在數字浪潮席卷全球的當下,關鍵信息基礎設施宛如國家經濟社會運行的中樞神經,其安全與否,直接關乎國計民生與國家安全。近期,《關鍵信息基礎設施商用密碼使用管理規定》正式發布,這一規定猶如為
    的頭像 發表于 07-07 11:28 ?1490次閱讀
    國民技術<b class='flag-5'>安全</b>芯片筑牢關鍵<b class='flag-5'>信息</b>基礎設施<b class='flag-5'>安全</b>防線

    翼輝信息亮相2025南京軟件大會

    日前,2025 南京軟件大會璀璨啟幕。本次大會以“工業軟件賦智 開源創新賦能”為主題,由南京市人民政府主辦,工業和信息化部電子第五研究所、南京市工業和信息化局、江北新區管委會、工業技術
    的頭像 發表于 06-27 17:26 ?1265次閱讀

    微控制器讀取閃存中的軟件信息時,軟件信息部署在哪里? 是 SRAM 嗎?

    我對 PMG1 閃光燈有疑問。 1.微控制器讀取閃存中的軟件信息時,軟件信息部署在哪里? 是 SRAM 嗎? 2.微控制器加載軟件時,在部署
    發表于 05-23 06:22

    萬里紅推出供應鏈軟件安全解決方案

    現代軟件已不再是孤立的代碼,而是一條由無數環節組成的鏈條,任何一個環節的漏洞,都可能成為整個生態系統的災難入口。以數字安全能力助力共護數字時代信息安全,近日,萬里紅在第12屆中國國際警
    的頭像 發表于 05-19 16:13 ?952次閱讀

    電磁兼容與信息安全測試系統平臺軟件

    電磁兼容與信息安全測試系統平臺軟件
    的頭像 發表于 05-06 14:50 ?729次閱讀
    電磁兼容與<b class='flag-5'>信息</b><b class='flag-5'>安全</b>測試系統平臺<b class='flag-5'>軟件</b>

    RS485之空調如何保證其更安全高效的防護機制

    RS485之空調如何保證其更安全高效的防護機制
    的頭像 發表于 05-05 16:00 ?1013次閱讀
    RS485之空調如何<b class='flag-5'>保證</b>其更<b class='flag-5'>安全</b>高效的防護機制

    電磁兼容與信息安全測試系統軟件

    電磁兼容與信息安全測試系統軟件
    的頭像 發表于 04-28 22:58 ?696次閱讀
    電磁兼容與<b class='flag-5'>信息</b><b class='flag-5'>安全</b>測試系統<b class='flag-5'>軟件</b>

    光庭信息攜手QNX共同塑造軟件定義汽車的未來

    光庭信息,一家為智能汽車提供高性能計算軟件的供應商,宣布其數據分發服務(DDS)現已支持QNX軟件,使公司能夠更好地支持一系列嵌入式汽車電子應用,包括但不限于信息娛樂系統、數字儀表、
    的頭像 發表于 03-31 13:47 ?751次閱讀