一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

星星科技指導(dǎo)員 ? 來源:嵌入式計算設(shè)計 ? 作者:Yannick Moy ? 2022-10-21 11:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

C是Linux內(nèi)核中使用的主要語言,因具有無窮無盡的漏洞源而臭名昭著。只需查看模糊測試機器人syzbot自動報告的一長串開放錯誤,這些錯誤仍在等待修復(fù)。

小組討論圍繞著適合內(nèi)核開發(fā)的替代更安全的語言,如Ada和Rust,以及形式驗證的需求,以超越編譯器可以提供的保證。事實上,目前在Linux內(nèi)核上報告的許多內(nèi)存和安全漏洞都會在Ada或Rust中完全停止該程序,這只會稍微好一點。查看內(nèi)核補丁可以發(fā)現(xiàn),通過在代碼上指定簡單的屬性可以檢測到許多問題,例如在哪種模式下哪些調(diào)用是合法的,應(yīng)該保留的數(shù)據(jù)類型不變量,以及如何使用適當(dāng)?shù)墓ぞ哽o態(tài)驗證它們。

令人驚訝的是,在討論中根本沒有提到MISRA C,盡管它已經(jīng)將自己確立為許多行業(yè)的必備品,以防止C語言的謬誤。MISRA C于1998年作為C的編碼標(biāo)準(zhǔn)出現(xiàn),最初是汽車行業(yè)的編碼標(biāo)準(zhǔn),并已進行了兩次修訂。當(dāng)前版本是 米斯拉 C:2012。它側(cè)重于避免 C 編程語言中容易出錯的功能,而不是強制實施特定的編程風(fēng)格。由Les Hatton撰寫的一項關(guān)于C編碼標(biāo)準(zhǔn)的研究發(fā)現(xiàn),與十個典型的C編碼標(biāo)準(zhǔn)相比,MISRA C是唯一一個專注于避免錯誤而不是樣式執(zhí)行的標(biāo)準(zhǔn),并且有很大的差距。

C編程語言的普及,以及它的許多陷阱和陷阱,導(dǎo)致了MISRA C在C用于高完整性軟件的領(lǐng)域中的巨大成功。這一成功促使工具供應(yīng)商提出了許多競爭性的MISRA C檢查器實現(xiàn)。工具在它們幫助執(zhí)行的MISRA C指南的覆蓋范圍上尤其相互競爭,因為不可能執(zhí)行MISRA C的所有16項指令和143條規(guī)則(統(tǒng)稱為指南)。

特別是,143 條規(guī)則中有 27 條是不可判定的,因此沒有工具可以始終檢測所有違反這些規(guī)則的行為,而不會同時報告不構(gòu)成違規(guī)的代碼的“誤報”。不可判定規(guī)則的一個例子是規(guī)則1.3:“不得發(fā)生未定義或關(guān)鍵的未指定行為。MISRA C:2012 的附錄 H 列出了 C 編程語言標(biāo)準(zhǔn)中數(shù)百個未定義和關(guān)鍵未指定行為的案例,其中大多數(shù)無法單獨確定。在大多數(shù)情況下,MISRA C檢查器忽略了規(guī)則1.3等不可判定的規(guī)則,盡管已知違反這些規(guī)則會對軟件質(zhì)量產(chǎn)生巨大影響。

但是,對于其他編程語言,可以使用靜態(tài)分析技術(shù)來解決這一挑戰(zhàn),而不會使用戶被誤報淹沒。一個例子是由AdaCore,亞創(chuàng)和因里亞開發(fā)的SPARK工具集,它基于四個原則:

基礎(chǔ)語言Ada通過定義良好的語言標(biāo)準(zhǔn)、強類型和豐富的規(guī)范功能,為靜態(tài)分析提供了堅實的基礎(chǔ)。

Ada 的 SPARK 子集通過控制歧義的來源(如函數(shù)中的副作用和名稱的別名)來以基本方式限制基礎(chǔ)語言以支持靜態(tài)分析。

靜態(tài)分析工具主要在單個函數(shù)的粒度上工作,使分析更加精確,并最大限度地減少誤報的可能性。

靜態(tài)分析工具是交互式的,允許用戶在必要或需要時指導(dǎo)分析,并在無法證明用戶提供的合同時提供反例。

SPARK可以在C代碼庫中逐步采用,通過SPARK采用的五個級別和支持將形式分析(SPARK)與傳統(tǒng)基于測試的方法(C)相結(jié)合的“混合驗證”,逐步獲得保證。

火花石水平 - 基本保證

SPARK采用的第一個級別稱為石頭級別。它對應(yīng)于符合 Ada 的 SPARK 子集的代碼。僅采用此級別就可以保證許多無法對 C 強制執(zhí)行的一致性屬性。這些包括:

使用適當(dāng)?shù)拇虬到y(tǒng),而不是C使用基于文本的文件,在翻譯單元之間沒有一致性要求;

嚴(yán)格且可讀的語法,強調(diào)清晰度并最小化“陷阱”,而不是C的非常寬松的語法,這使得編寫效果不是預(yù)期的程序變得容易,

遵守Ada和SPARK的強類型規(guī)則,而不是C的“糟糕的類型安全性,允許發(fā)生各種隱式類型轉(zhuǎn)換,這可能會損害安全性,因為它們的實現(xiàn)定義方面可能會導(dǎo)致開發(fā)人員混淆。(米斯拉C:2012,附件C)

MISRA C試圖通過各種指南來馴服C語言的這些可能的不一致。它特別定義了更強的類型規(guī)則(“基本類型模型”),并限制了函數(shù)參數(shù)/結(jié)果和控制結(jié)構(gòu)的使用。雖然這些避免了開發(fā)人員混淆的常見來源,但它們故意不是防彈的,否則它們會使大多數(shù)C程序非法。

這些基本保證在SPARK中很容易通過一個名為GNATprove的工具進行簡單的類似編譯器的分析來實現(xiàn),這要歸功于定義ADA的SPARK子集的更強大的規(guī)則。

SPARK銀級 - 強大的安全保障

MISRA-C指南還旨在防止更細(xì)微的錯誤,讀取未初始化的數(shù)據(jù),表達式中相互沖突的副作用以及未定義的行為,例如除以零或緩沖區(qū)溢出(這可能具有安全性和安全性后果)。所有這些都屬于不可判定規(guī)則的范疇,很少有MISRA C檢查器提供完整的檢測。

這些在SPARK采用的白銀級別上是完全被阻止的,這對應(yīng)于使用流程分析(達到稱為青銅的SPARK采用的第二級)和沒有運行時錯誤的證明(達到第三級,即白銀)來分析程序。要達到此級別,開發(fā)人員通常需要使用特定約束來定義類型,這些約束旨在支持這些約束,并為文件之間導(dǎo)出的函數(shù)提供合同 - 使用所謂的前提條件來指定調(diào)用方的義務(wù),并使用后置條件來指定被調(diào)用方的義務(wù)。

達到白銀級的過程涉及與 IDE 的交互。開發(fā)人員可能在程序的子集上運行 GNATprove 工具,調(diào)查 GNATprove 診斷,相應(yīng)地更新程序,然后重復(fù)。GNATprove在每一步提供的詳細(xì)信息都有助于促進這種互動,以指導(dǎo)開發(fā)人員。以下是 GNATprove 顯示的消息示例:

poYBAGNSDdqAOZh_AACUUBbzB8M323.png

在找到可能導(dǎo)致溢出的加法運算后,GNATprove給出了一個觸發(fā)問題的值的示例,這里是最大的整數(shù)值(在SPARK中表示為整數(shù)‘Last)?!皺z查原因”清楚地解釋了加法的結(jié)果應(yīng)該適合機器整數(shù),如果 X 是加法前的最大整數(shù)值,則情況并非如此。然后,GNATprove建議向函數(shù)Incr添加一個合適的前提條件可能會解決這個問題,在這里指定X不能是最大值。

超越白銀級的火花

使用SPARK還有其他好處,遠(yuǎn)遠(yuǎn)超出了MISRA C檢查器可以提供的。在黃金和白金級別,開發(fā)人員通過 SPARK 合約指定程序的屬性,然后可以使用 GNATprove 來保證滿足這些屬性。開發(fā)人員還可以使用構(gòu)成 GNATprove 分析基礎(chǔ)的強大證明技術(shù),使 GNATprove 警告能夠檢測死代碼(也是 MISRA C 追求的目標(biāo))和代碼中的不一致。

結(jié)論

從本質(zhì)上講,MISRA C追求的所有目標(biāo)都可以在SPARK中最好地實現(xiàn),它結(jié)合了更強大的基礎(chǔ)語言(Ada)和強大的分析工具(GNATprove)。計劃使用 MISRA C 規(guī)則的開發(fā)人員可以通過對其部分應(yīng)用程序采用 SPARK 來獲得更高的保證。

MISRA C中的規(guī)則代表了在關(guān)鍵應(yīng)用程序中提高C代碼可靠性的令人印象深刻的集體努力,重點是避免容易出錯的功能,而不是強制實施特定的編程風(fēng)格。然而,在基本層面上,MISRA C仍然建立在基礎(chǔ)語言之上,而這種基礎(chǔ)語言并不是真正以支持大型高保證應(yīng)用程序為目標(biāo)而設(shè)計的。很難將可靠性,安全性和安全性改造成一種從一開始就沒有這些目標(biāo)的語言。

由于C仍將是像Linux內(nèi)核這樣的大型程序的基礎(chǔ)語言,我們可以預(yù)見兩種趨勢的共存,以更好地防止C程序中的謬誤,其中MISRA C可以發(fā)揮作用,并用更安全的語言(如Rust和SPARK Ada)取代C作為部分代碼。汽車行業(yè)的主要參與者已經(jīng)開始走上后一條道路,如英偉達和捷太格特。

審核編輯:郭婷

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

    關(guān)注

    87

    文章

    11508

    瀏覽量

    213653
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1661

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    深圳雙芯信息科技:國產(chǎn)飛騰OPS電腦,安全可靠自主可控

    信息技術(shù)飛速發(fā)展的當(dāng)下,信息安全已上升至國家戰(zhàn)略高度,各行業(yè)對自主可控、安全可靠的計算設(shè)備需求愈發(fā)迫切。深圳雙芯信息科技有限公司敏銳洞察市場趨勢,憑借深厚的技術(shù)沉淀與創(chuàng)新精神,推出的國產(chǎn)飛騰OPS
    的頭像 發(fā)表于 06-19 16:52 ?506次閱讀
    深圳雙芯信息科技:國產(chǎn)飛騰OPS電腦,<b class='flag-5'>安全可靠</b>自主可控

    開關(guān)電源安全保護電路:浪涌保護、過流保護、過壓保護

    引言對于開關(guān)電源而言, 安全、可靠性歷來被視為重要的性能之一. 開關(guān)電源電氣技術(shù)指標(biāo)滿足電子設(shè)備正常使用要求的條件下, 還要滿足外界或自身電路或負(fù)載電路出現(xiàn)故障的情況下也能安全可靠
    發(fā)表于 05-20 14:19

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

    Helix QAC 2025.1新增功能 Helix QAC 2025.1實現(xiàn)了對新版MISRA C:2025?標(biāo)準(zhǔn)的 100% 覆蓋,并提供對應(yīng)的合規(guī)模塊。此版本還擴展了對 CERT C
    的頭像 發(fā)表于 05-13 16:48 ?395次閱讀
    Helix QAC 2025.1 重磅發(fā)布!<b class='flag-5'>MISRA</b> <b class='flag-5'>C</b>:2025? 100%覆蓋

    MISRA C:2025新標(biāo)準(zhǔn)解析:新增規(guī)則、優(yōu)化點與靜態(tài)代碼分析工具支持(Perforce QAC、Klocwork)

    MISRA C:2025?發(fā)布!新增5條規(guī)則,并對部分現(xiàn)有規(guī)則進行了擴展、重組,以進一步簡化安全關(guān)鍵型系統(tǒng)的開發(fā)流程。如何實現(xiàn)最新MISRA合規(guī)性?
    的頭像 發(fā)表于 05-08 17:58 ?854次閱讀
    <b class='flag-5'>MISRA</b> <b class='flag-5'>C</b>:2025新標(biāo)準(zhǔn)解析:新增規(guī)則、優(yōu)化點與靜態(tài)代碼分析工具支持(Perforce QAC、Klocwork)

    龍芯6款產(chǎn)品入圍安全可靠測評Ⅱ級

    近日,中國信息安全測評中心發(fā)布《安全可靠測評結(jié)果公告(2025年第1號)》,龍芯3B6000、3C6000憑借卓越的技術(shù)實力和優(yōu)異的產(chǎn)品表現(xiàn)成功入圍,并被評定為目前最高等級Ⅱ級。至此,龍芯以40%占
    的頭像 發(fā)表于 03-19 10:36 ?593次閱讀

    天合儲能戶儲電池系統(tǒng)榮獲日本JET安全可靠認(rèn)證

    。充分證明了天合儲能產(chǎn)品的高度可靠性和安全性,同時也證明了天合多年深耕日本戶用儲能市場,研發(fā)認(rèn)證團隊對日本本地JIS標(biāo)準(zhǔn)深度解析的實力。 認(rèn)證授予儀式 作為業(yè)界最嚴(yán)苛電池安全測試,JIS C
    的頭像 發(fā)表于 12-07 19:21 ?1296次閱讀

    安全可靠,高效防爆:頂堅單北斗防爆終端工業(yè)領(lǐng)域的創(chuàng)新應(yīng)用

    頂堅單北斗防爆終端,憑借其安全可靠的性能與高效防爆技術(shù),工業(yè)領(lǐng)域展現(xiàn)出非凡的創(chuàng)新應(yīng)用潛力,不僅提升了工業(yè)生產(chǎn)的安全標(biāo)準(zhǔn),還促進了智能化管理與監(jiān)控的深度融合,為工業(yè)安全生產(chǎn)與效率提升開
    的頭像 發(fā)表于 11-20 14:11 ?492次閱讀
    <b class='flag-5'>安全可靠</b>,高效防爆:頂堅單北斗防爆終端<b class='flag-5'>在</b>工業(yè)領(lǐng)域的創(chuàng)新應(yīng)用

    全國產(chǎn)化核心板——性能更高效、使用更安全、更可靠

    在當(dāng)今科技飛速發(fā)展的時代,選擇一款高性能、安全可靠的核心板至關(guān)重要。高能計算機推出的全國產(chǎn)核心板GM-C202F,以其卓越的性能、頂級的安全保障和無與倫比的可靠性,廣泛應(yīng)用于能源,軌交
    的頭像 發(fā)表于 11-20 11:33 ?558次閱讀

    SDWAN企業(yè)組網(wǎng)是安全可靠

    SD-WAN(軟件定義廣域網(wǎng))技術(shù)為企業(yè)組網(wǎng)提供了一種現(xiàn)代化、靈活且可靠的解決方案。以下是SD-WAN企業(yè)組網(wǎng)的關(guān)鍵優(yōu)勢: 1、簡化網(wǎng)絡(luò)管理:SD-WAN通過集中管理平臺統(tǒng)一管理廣域網(wǎng),簡化
    的頭像 發(fā)表于 11-05 17:39 ?608次閱讀

    C/C對TMS320x28xx和28xxx外設(shè)進行編程

    電子發(fā)燒友網(wǎng)站提供《C/C對TMS320x28xx和28xxx外設(shè)進行編程.pdf》資料免費下載
    發(fā)表于 10-16 10:28 ?0次下載
    <b class='flag-5'>在</b><b class='flag-5'>C</b>/<b class='flag-5'>C</b><b class='flag-5'>中</b>對TMS320x28xx和28xxx外設(shè)進行<b class='flag-5'>編程</b>

    C2000? MISRA-C策略

    電子發(fā)燒友網(wǎng)站提供《C2000? MISRA-C策略.pdf》資料免費下載
    發(fā)表于 10-11 11:43 ?0次下載
    <b class='flag-5'>C</b>2000? <b class='flag-5'>MISRA-C</b>策略

    PCB設(shè)計的爬電距離:確保電路板安全可靠

    安全性和可靠性。本文將深入探討什么是PCB設(shè)計爬電距離,以及PCB設(shè)計的重要性。 什么是PCB設(shè)計爬電距離? PCB設(shè)計爬電距離是指在不同電壓等級的導(dǎo)電元素之間,沿著絕緣材料表面
    的頭像 發(fā)表于 09-26 09:39 ?1090次閱讀

    使用Google Play獲得安全可靠的AI體驗

    對 Google Play 的期待,即獲得安全可靠的體驗。我們的目標(biāo)是讓 AI 惠及每個人,豐富應(yīng)用生態(tài)系統(tǒng)并改善用戶體驗。
    的頭像 發(fā)表于 09-09 15:53 ?802次閱讀

    embOS的MISRA-C:2012一致性

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

    whitepaper-perforce-what-is-misra

    如果您熟悉嵌入式軟件的世界,您可能聽說過安全關(guān)鍵系統(tǒng)的MISRA編碼準(zhǔn)則和合規(guī)性。最初為汽車嵌入式軟件行業(yè),MISRA C for
    發(fā)表于 08-08 15:54 ?0次下載