91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

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

龍智DevSecOps ? 2026-01-26 17:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

如今,軟件安全是重中之重。任何的安全漏洞都不能被忽視——尤其是開發(fā)嵌入式系統(tǒng)軟件時,您的代碼必須安全可靠,且沒有編碼錯誤。

提及軟件安全,您可能想到的是密碼和訪問控制,或者是病毒、欺騙攻擊(spoofing)和網(wǎng)絡(luò)釣魚攻擊,這些是常見的安全問題。而數(shù)據(jù)加密和身份驗證協(xié)議等安全功能可以緩解這些漏洞。

但即使已經(jīng)實施了這些安全功能,軟件仍可能受到攻擊。

為確保軟件安全,您需要從源頭——代碼層面——進行著手。否則,編碼錯誤將會危及您的應(yīng)用程序。

編碼錯誤危及軟件安全

據(jù)軟件工程研究所(SEI)估計,高達90%的已報告安全事件是源于軟件代碼或設(shè)計中的漏洞被利用。這些漏洞使黑客能夠訪問私人數(shù)據(jù)或未經(jīng)授權(quán)的控制系統(tǒng)

可見,一個簡單的編碼錯誤就可能引發(fā)黑客攻擊威脅——黑客可能會控制您的計算機、智能家居設(shè)備、家庭娛樂設(shè)備甚至是汽車。更糟糕的是,黑客甚至可能控制核電站。

安全漏洞示例:C語言中的緩沖區(qū)溢出

為說明這種情況可能如何發(fā)生,我們來看一個例子。緩沖區(qū)溢出是C語言編程中常見的安全漏洞。

當數(shù)據(jù)被寫入到已分配內(nèi)存的邊界之外時,就會發(fā)生緩沖區(qū)溢出。

為說明這種情況可能如何發(fā)生,我們來看一個例子。緩沖區(qū)溢出是C語言編程中常見的安全漏洞。

延伸閱讀:什么是緩沖區(qū)溢出?如何防止緩沖區(qū)溢出漏洞?

例如:

char buff[10]; buff[10] = 'a';

此處聲明了一個10字節(jié)的數(shù)組(索引范圍0到9)。但程序隨后試圖向數(shù)組邊界外的一個字節(jié)寫入字符。若程序后續(xù)使用了數(shù)組相鄰的內(nèi)存區(qū)域,則會導致意外行為。

這已經(jīng)夠糟糕了,而情況可能會進一步惡化——緩沖區(qū)溢出可能使黑客獲得系統(tǒng)控制權(quán)。

緩沖區(qū)溢出如何招致黑客攻擊?

黑客可以利用緩沖區(qū)溢出漏洞進行攻擊,致使程序崩潰、數(shù)據(jù)損壞,或直接竊取信息。

程序運行時會使用一塊稱為“?!钡膬?nèi)存區(qū)域。當前執(zhí)行函數(shù)作用域內(nèi)的變量將存儲在棧中。函數(shù)調(diào)用的地址也會被存儲,以便返回語句能返回到正確的位置。

當函數(shù)返回到調(diào)用函數(shù)時,程序?qū)纳洗沃袛嗟牡胤嚼^續(xù)執(zhí)行。因此,如果棧中的返回地址被篡改為指向某些惡意的替代指令,那么,這些指令將在函數(shù)返回時被執(zhí)行。

如果程序正在接收數(shù)據(jù)——且未設(shè)置檢查機制來確保輸入緩沖區(qū)不會溢出——那么就有可能設(shè)計一個包含惡意代碼的輸入或“有效負載”。這種惡意代碼會溢出輸入緩沖區(qū),并將棧中的返回地址覆蓋為惡意代碼的地址。

預防安全漏洞至關(guān)重要

預防緩沖區(qū)溢出等安全漏洞至關(guān)重要。而實現(xiàn)這一目標的方法,就是確保在編碼時就杜絕可被利用的漏洞。

畢竟,如果窗戶敞開著,加裝再堅固的門鎖也毫無意義。因此,提高安全性的關(guān)鍵,就是確保代碼安全。

確保C語言代碼安全的四種方法

編寫安全的代碼至關(guān)重要。在C語言編程中,有四個關(guān)鍵信息來源可幫助您確保代碼安全。

1. CWE

您可以從通用缺陷枚舉(CWE)中識別安全弱點。

什么是CWE?

CWE是由社區(qū)開發(fā)的C語言常見軟件安全弱點列表,由MITRE公司維護。該列表可用作弱點識別、緩解和預防的基線。

CWE軟件安全弱點列表

CWE列表對弱點進行了優(yōu)先級排序。其中的“Top 25”(前25)條是綜合了二十多個不同機構(gòu)的意見評選出來的。他們根據(jù)弱點出現(xiàn)的頻率和重要性對其進行評估。CWE中列出的(C語言程序中的)許多弱點都與緩沖區(qū)溢出有關(guān)。

這份Top 25列表還附帶了一組有效的“強效緩解措施”。這些措施可幫助開發(fā)者減少甚至徹底消除Top 25中的整類安全弱點,同時也有助于應(yīng)對CWE列表中記錄的其他800多個弱點。

CWE致力于從源頭遏制漏洞,其實現(xiàn)方式是教育設(shè)計人員、程序員和測試人員如何在軟件發(fā)布前就消除常見錯誤。

2. CERT C

您可以將CERT C編碼標準應(yīng)用于您的代碼。

什么是CERT C?

CERT C編碼標準由軟件工程研究所(SEI)的CERT部門發(fā)布。SEI是卡內(nèi)基梅隆大學運營的研發(fā)中心,它的資金主要來源于美國國防部和國土安全部。

CERT C安全規(guī)則

安全編碼專家會持續(xù)在維基平臺上完善CERT C指南。每項指南包括:

– 標題

– 描述

– 不合規(guī)代碼示例

– 合規(guī)解決方案示例

該指南涵蓋編碼和實現(xiàn)錯誤,以及低級設(shè)計錯誤。其目標是消除不安全的編碼實踐和可能導致漏洞的未定義行為。

CERT C將漏洞定義為:一組允許攻擊者違反明確或隱含安全策略的條件。

缺陷可能較為輕微,也可能不會影響軟件的性能或運行結(jié)果,但它仍可能被攻擊者利用,從而導致重大的安全漏洞。

3. ISO/IEC TS 17961:2013 "C Secure"

您可以應(yīng)用ISO/IEC TS 17961:2013 “C Secure” 編碼規(guī)則。

什么是ISO/IEC TS 17961:2013?

ISO/IEC TS 17961:2013制定了一套編碼規(guī)則,這些規(guī)則使靜態(tài)代碼分析工具能夠診斷超出語言標準要求的不安全代碼。

C Secure編碼規(guī)則

ISO/IEC TS 179671:2013包含了C語言安全編碼的規(guī)則,每條規(guī)則都包含示例。

C Secure旨在制定可以自動強制執(zhí)行的安全編碼規(guī)則,用于檢測C語言編程中的安全缺陷。要被視作安全缺陷,軟件漏洞必須能被惡意用戶或攻擊者的行為觸發(fā)。

實施這些規(guī)則的分析工具必須能夠有效發(fā)現(xiàn)安全編碼錯誤,且不會產(chǎn)生過多的誤報。

4. MISRA C

您也可以使用MISRA來確保C語言的安全編碼。

什么是MISRA?

MISRA為安全相關(guān)系統(tǒng)的開發(fā)提供最佳實踐指南。其C語言編碼標準已被多個行業(yè)廣泛采用。

MISRA C 安全規(guī)則

MISRA C:2012 修訂版1于2016年發(fā)布。該版本為C語言編程提供了額外的安全指南,包括新的規(guī)則和指令,并附有合規(guī)和不合規(guī)的代碼示例。

這些指南可用于預防導致安全問題和安全漏洞的編碼錯誤。

為什么MISRA C安全規(guī)則是嵌入式系統(tǒng)的理想選擇?

MISRA C安全規(guī)則是嵌入式系統(tǒng)的理想選擇。這是因為MISRA C的安全性可與其它C語言安全編碼標準相媲美。此外,MISRA C在嵌入式系統(tǒng)行業(yè)中深受信賴,更是汽車行業(yè)首選的編碼標準。

MISRA C安全規(guī)則示例

MISRA C安全規(guī)則可防止編碼錯誤和安全漏洞,例如緩沖區(qū)溢出。

以下是MISRA C安全規(guī)則的示例:

MISRA C 規(guī)則 18.1

“對指針操作數(shù)進行算術(shù)運算后得到的指針,其地址應(yīng)指向與該指針操作數(shù)相同的數(shù)組內(nèi)的元素?!?/p>

此規(guī)則與以下CERT C規(guī)則作用相同:

ARR30-C

“請勿創(chuàng)建或使用越界指針或數(shù)組下標?!?/p>

兩者都與C語言中的多個CWE漏洞相關(guān),其中之一是:

CWE-119:對內(nèi)存緩沖區(qū)邊界內(nèi)的操作限制不當

“該軟件在內(nèi)存緩沖區(qū)上執(zhí)行操作,但可能讀取或?qū)懭氤鼍彌_區(qū)預期邊界范圍的內(nèi)存位置?!?/p>

遵循MISRA C規(guī)則或CERT規(guī)則可確保代碼安全,并規(guī)避CWE中的常見漏洞。這是因為寫入越界指針(或指針操作數(shù))可能導致緩沖區(qū)溢出,從而產(chǎn)生易受攻擊的代碼;而讀取越界指針(或指針操作數(shù))則可能意外泄露信息給黑客。

因此,通過確保遵循這些規(guī)則,將避免嚴重的編碼錯誤。您可以使用靜態(tài)代碼分析工具(如Perforce QAC)來強制執(zhí)行MISRA和CERT規(guī)則。

MISRA C與其他標準的比較

MISRA C編碼標準也適用于軟件安全性比功能安全性更受重視的環(huán)境。

事實上,MISRA針對MISRA C:2012標準發(fā)布了兩個附錄,以幫助開發(fā)者將MISRA規(guī)則映射到C Secure和CERT C標準。

MISRA C和C Secure比較

MISRA C:2012 – 附錄2展示了每條MISRA規(guī)則如何映射到ISO/IEC TS 17961:2013中的C Secure規(guī)則。

wKgZO2l3NbmAP-myAAJWB95oUg4721.pngMISRA C對C Secure的覆蓋:90%規(guī)則,10%指令。

C Secure中的每條規(guī)則都對應(yīng)MISRA C中的一條規(guī)則或指令。任何完全支持MISRA C的靜態(tài)代碼分析工具(如Perforce QAC),也將符合C Secure標準。因此,您可以靈活互換使用這些標準以確保安全。

MISRA C和CERT C比較

MISRA C:2012 – 附錄3展示了每條規(guī)則如何映射到CERT C規(guī)則。

wKgZPGl3NcuANrxuAAMKDleDO74091.pngMISRA C對CERT C的覆蓋:60%規(guī)則,20%指令,15%超出范圍,5%未覆蓋。

CERT C是為C11設(shè)計的。MISRA C:2012是為C99設(shè)計的。

在CERT C規(guī)范中,有15條特定于C11的規(guī)則超出了MISRA C:2012的范圍。而在(MISRA C:2012范圍內(nèi)的)CERT C規(guī)則中,只有四條未被覆蓋。因此,MISRA C覆蓋了CERT C中的大部分安全規(guī)則。

注:使用Perforce QAC可自動檢測這四條規(guī)則的全部違規(guī)情況。

將MISRA安全規(guī)則應(yīng)用于您的代碼

MISRA編碼標準為確保C語言代碼的安全性提供了一套最佳實踐準則。采用MISRA安全規(guī)則是保障軟件整體安全性的明智之選。

如果您需要采用一種編碼標準,以增強對軟件安全性的信心,建議考慮MISRA C標準。該C語言編碼規(guī)范內(nèi)容全面,并已在安全與關(guān)鍵任務(wù)項目中被證明行之有效。

使用Perforce QAC編寫安全代碼

您可以借助Perforce QAC自動執(zhí)行MISRA規(guī)則(適用于C或C++語言),這將大幅減少手動代碼審查所需的時間,從而釋放開發(fā)資源,確保項目按時交付,同時提升軟件質(zhì)量。

Perforce QAC 主要通過以下機制幫助開發(fā)人員高效編寫安全代碼:

1. 精準定位違規(guī)代碼,即時修復

實時診斷:支持 MISRA C 和 CERT C 標準,能在 IDE 中直接以“氣泡”形式標記違規(guī)代碼,實現(xiàn)“邊寫邊查”。

增量分析:僅分析修改過的代碼文件,無需等待全量編譯,大幅提升修復效率。

所見即所得:雙擊報錯即可跳轉(zhuǎn)至代碼具體行(如死代碼、非法指針轉(zhuǎn)換),快速修正。

2. 風險分級,聚焦核心

嚴重性過濾:允許開發(fā)者通過過濾器(Severity Filter)屏蔽次要警告,優(yōu)先解決“除以零”、“空指針”等高危致命漏洞。

復雜度監(jiān)控:自動計算函數(shù)圈復雜度,幫助團隊快速識別出難以維護、易藏漏洞的“高風險代碼塊”進行重構(gòu)。

3. 閉環(huán)管理,審計無憂

合規(guī)例外管理:針對無法修復的規(guī)則違規(guī),提供規(guī)范的“抑制(Suppression)”與“偏差(Deviation)”審批流程,杜絕隨意忽略報錯。

自動化報告:一鍵生成詳細的合規(guī)性報表與趨勢圖,為項目安全交付和外部審計提供可追溯的證據(jù)。

Perforce中國授權(quán)合作伙伴——上海龍智

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

    關(guān)注

    183

    文章

    7643

    瀏覽量

    145539
  • 嵌入式開發(fā)
    +關(guān)注

    關(guān)注

    18

    文章

    1145

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    軟件編程規(guī)范(MISRA-C)

    MISRA-C是一種汽車制造業(yè)嵌入式C編碼標準。FreeRTOS符合MISRA-C編程規(guī)范,就連大名鼎鼎的uCOS也宣稱基本符合
    發(fā)表于 11-02 18:29 ?29次下載

    如何提高cc++的安全編程能力?《CC++安全編碼》帶你詳細學習

    CC++安全編碼C/C++安全
    發(fā)表于 08-28 08:00 ?0次下載

    汽車電子行業(yè)的MISRA C標準分享

    的、高可靠性的嵌入式軟件。MISRA C則是由MISRA提出的針對嵌入式C語言開發(fā)標準,目的是提
    的頭像 發(fā)表于 05-11 13:43 ?2469次閱讀

    MISRA C安全可靠編程中的地位

    C編程語言的普及,以及它的許多陷阱和陷阱,導致了MISRA CC用于高完整性軟件的領(lǐng)域取得了巨大的成功。這一成功促使工具供應(yīng)商提出了許多
    的頭像 發(fā)表于 11-23 11:55 ?1628次閱讀
    <b class='flag-5'>MISRA</b> <b class='flag-5'>C</b>在<b class='flag-5'>安全</b>可靠編程中的地位

    靜態(tài)代碼測試工具Helix QAC 2023.1更新快訊:主打編碼標準覆蓋率

    Helix QAC 2023.1 對 MISRA C:2012修訂版4和MISRA C:2023的覆蓋率為100%,對 AUTOSAR
    的頭像 發(fā)表于 04-13 16:44 ?2093次閱讀
    靜態(tài)代碼測試工具Helix <b class='flag-5'>QAC</b> 2023.1更新快訊:主打<b class='flag-5'>編碼</b><b class='flag-5'>標準</b>覆蓋率

    靜態(tài)代碼分析器工具Helix QAC 2023.2: 提供 100% 的 MISRA C:2012 和 MISRA C:2023 規(guī)則覆蓋率

    Helix QAC 2023.2 提供 100% 的 MISRA C:2012 和 MISRA C:2023 規(guī)則覆蓋率,并更新相應(yīng)的合規(guī)性
    的頭像 發(fā)表于 07-31 22:53 ?2090次閱讀
    靜態(tài)代碼分析器工具Helix <b class='flag-5'>QAC</b> 2023.2: 提供 100% 的 <b class='flag-5'>MISRA</b> <b class='flag-5'>C</b>:2012 和 <b class='flag-5'>MISRA</b> <b class='flag-5'>C</b>:2023 規(guī)則覆蓋率

    靜態(tài)代碼分析工具Helix QAC 2023.3:將100%覆蓋MISRA C++:2023?規(guī)則

    Helix QAC 2023.3預計將于2023年第四季度發(fā)布的新MISRA C++?指南,將100%覆蓋MISRA
    的頭像 發(fā)表于 11-08 18:37 ?1287次閱讀
    靜態(tài)代碼分析工具Helix <b class='flag-5'>QAC</b> 2023.3:將100%覆蓋<b class='flag-5'>MISRA</b> <b class='flag-5'>C</b>++:2023?規(guī)則

    Helix QAC—軟件靜態(tài)測試工具

    Helix QACPerforce公司(原PRQA公司)產(chǎn)品,主要用于C/C++代碼的自動化靜態(tài)分析工作,可以提供編碼規(guī)則以及信息
    的頭像 發(fā)表于 01-10 17:35 ?1684次閱讀
    Helix <b class='flag-5'>QAC</b>—軟件靜態(tài)測試工具

    embOS的MISRA-C:2012一致性

    MISRA C是汽車工業(yè)軟件可靠性協(xié)會(MISRA)開發(fā)的一套針對C編程語言的軟件開發(fā)指南,目的
    的頭像 發(fā)表于 08-20 11:35 ?1398次閱讀

    代碼靜態(tài)測試工具Perforce QAC 2025.1新特性

    Perforce QAC 2025.1實現(xiàn)了對新發(fā)布的MISRA C:2025?標準的100%覆蓋,并提供了對應(yīng)的新合規(guī)模塊。該版本還擴展了
    的頭像 發(fā)表于 04-21 15:14 ?1066次閱讀
    代碼靜態(tài)測試工具<b class='flag-5'>Perforce</b> <b class='flag-5'>QAC</b> 2025.1新特性

    Helix QAC 2025.1 重磅發(fā)布!MISRA C:2025? 100%覆蓋

    和服務(wù)器存儲占用。? 編碼規(guī)范支持(MISRA C:2025?、CERT C)? ? MISRA
    的頭像 發(fā)表于 05-13 16:48 ?1454次閱讀
    Helix <b class='flag-5'>QAC</b> 2025.1 重磅發(fā)布!<b class='flag-5'>MISRA</b> <b class='flag-5'>C</b>:2025? 100%覆蓋

    Perforce QAC產(chǎn)品簡介:面向C/C++的靜態(tài)代碼分析工具(已通過SO 26262認證)

    Perforce QAC專為C/C++開發(fā)者打造,支持多種編碼規(guī)范、功能安全
    的頭像 發(fā)表于 07-10 15:57 ?1253次閱讀
    <b class='flag-5'>Perforce</b> <b class='flag-5'>QAC</b>產(chǎn)品簡介:面向<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++的靜態(tài)代碼分析工具(已通過SO 26262認證)

    Perforce QAC 2025.2版本更新:虛擬內(nèi)存優(yōu)化、100%覆蓋CERT C規(guī)則、CI構(gòu)建性能提升等

    【產(chǎn)品更新】Perforce QAC更新至2025.2版本,安裝路徑和許可證都有變化!重點:虛擬內(nèi)存占用降低、100%覆蓋CERT C規(guī)則,C
    的頭像 發(fā)表于 09-09 14:40 ?667次閱讀
    <b class='flag-5'>Perforce</b> <b class='flag-5'>QAC</b> 2025.2版本更新:虛擬內(nèi)存優(yōu)化、100%覆蓋<b class='flag-5'>CERT</b> <b class='flag-5'>C</b>規(guī)則、CI構(gòu)建性能提升等

    C/C++代碼靜態(tài)測試工具Perforce QAC 2025.3的新特性

    ?Perforce Validate?中?QAC?項目的相對/根路徑的支持。C++?分析也得到了增強,增加了用于檢測 C++?并發(fā)問題的新檢查,并改進了實體名稱和實
    的頭像 發(fā)表于 10-13 18:11 ?568次閱讀
    <b class='flag-5'>C</b>/<b class='flag-5'>C</b>++代碼靜態(tài)測試工具<b class='flag-5'>Perforce</b> <b class='flag-5'>QAC</b> 2025.3的新特性

    汽車網(wǎng)絡(luò)安全開發(fā)語言選型指南C/C++/Rust/Java等主流語言對比+Perforce QAC/Klocwork工具支持

    汽車網(wǎng)絡(luò)安全如何選編程語言?C、C++、Rust、Java……誰更適合AUTOSAR、ISO/SAE 21434?一文了解8種主流語言的優(yōu)劣
    的頭像 發(fā)表于 12-26 11:13 ?419次閱讀
    汽車網(wǎng)絡(luò)<b class='flag-5'>安全</b>開發(fā)<b class='flag-5'>語言</b>選型<b class='flag-5'>指南</b>:<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++/Rust/Java等主流<b class='flag-5'>語言對比</b>+<b class='flag-5'>Perforce</b> <b class='flag-5'>QAC</b>/Klocwork工具支持