在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

MISRA C在安全和安全編程中的位置

星星科技指導員 ? 來源:嵌入式計算設計 ? 作者:Yannick Moy ? 2022-06-20 16:07 ? 次閱讀

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

令人驚訝的是,在討論中根本沒有提到 MISRA C,盡管它已成為許多行業(yè)的必備工具,以防止 C 語言的錯誤。MISRA C 于 1998 年作為 C 的編碼標準出現(xiàn),最初用于汽車行業(yè),經(jīng)過兩次修訂。當前版本是 MISRA C:2012。它側重于避免 C 編程語言容易出錯的特性,而不是強制執(zhí)行特定的編程風格。Les Hatton編寫的 C 編碼標準研究發(fā)現(xiàn),與十種典型的 C 編碼標準相比,MISRA C 是唯一一個專注于避免錯誤而不是風格強制的標準,而且差距很大。

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

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

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

基礎語言 Ada 通過定義明確的語言標準、強類型和豐富的規(guī)范特性為靜態(tài)分析提供了堅實的基礎。

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

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

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

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

SPARK Stone Level - 基本保證

SPARK 采用的第一級稱為 Stone Level。它對應于符合 Ada 的 SPARK 子集的代碼。僅僅采用這個級別就可以保證許多 C 語言無法強制執(zhí)行的一致性屬性。其中包括:

使用適當?shù)陌到y(tǒng),而不是 C 使用基于文本的文件包含,并且沒有跨翻譯單元的一致性要求;

嚴格和可讀的語法,強調清晰并最大限度地減少“陷阱”,而不是 C 的非常寬松的語法,這使得編寫效果不是預期的程序變得容易,

遵守 Ada 和 SPARK 的強類型規(guī)則,而不是 C 的“較差的類型安全性 [that] 允許發(fā)生廣泛的隱式類型轉換 [which] 可能會損害安全性,因為它們的實現(xiàn)定義方面可能會導致開發(fā)人員混淆。 “(MISRA C:2012,附件 C)

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

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

SPARK 銀級 - 強大的安全保障

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

這些在 SPARK 采用的 Silver 級別上完全被阻止,這對應于使用流分析(達到 SPARK 采用的第二級,稱為 Bronze)和不存在運行時錯誤的證明(達到第三級,即銀)。為了達到這個水平,開發(fā)人員通常需要定義具有特定約束的類型,這些約束旨在支持和提供文件之間導出的函數(shù)的合同——使用所謂的前置條件來指定調用者的義務,并使用后置條件來指定調用者的義務。被叫方的義務。

達到 Silver 級別的過程涉及與 IDE 的交互。開發(fā)人員可能在程序的一個子集上運行 GNATprove 工具,調查 GNATprove 診斷,相應地更新程序,然后重復。GNATprove 在每一步都提供了詳細的信息來指導開發(fā)人員,從而促進了此類交互。以下是 GNATprove 顯示的消息示例:

pYYBAGKwKt2AYDVTAAE3CZSjSrk663.png

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

SPARK 超越白銀級

使用 SPARK 還有其他好處,遠遠超出 MISRA C 檢查器所能提供的。在 Gold 和 Platinum 級別,開發(fā)人員通過 SPARK 合同指定程序的屬性,然后可以使用 GNATprove 來保證這些屬性將得到滿足。開發(fā)人員還可以啟用 GNATprove 警告以檢測死代碼(也是 MISRA C 追求的目標)和代碼中的不一致,使用構成 GNATprove 分析基礎的強大證明技術。

結論

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

MISRA C 中的規(guī)則代表了一項令人印象深刻的集體努力,旨在提高關鍵應用程序中 C 代碼的可靠性,重點是避免容易出錯的功能,而不是強制執(zhí)行特定的編程風格。然而,從根本上說,MISRA C 仍然建立在一種基礎語言之上,而這種基礎語言的設計目的并不是為了支持大型高保證應用程序。很難將可靠性、安全性和安全性改造成一門從一開始就沒有這些目標的語言。

由于 C 仍將是 Linux 內核等大型程序的基礎語言,我們可以預見兩種趨勢的共存,以更好地防止 C 程序中的錯誤,其中 MISRA C 可以發(fā)揮作用,并用更安全的語言(如 Rust 和SPARK Ada 用于部分代碼。

審核編輯:郭婷

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

    關注

    87

    文章

    11351

    瀏覽量

    210510
  • 代碼
    +關注

    關注

    30

    文章

    4837

    瀏覽量

    69125
  • 編譯器
    +關注

    關注

    1

    文章

    1642

    瀏覽量

    49318
收藏 人收藏

    評論

    相關推薦

    人臉識別技術安全監(jiān)控的應用

    現(xiàn)代社會,安全監(jiān)控是維護公共安全和社會秩序的重要手段。隨著技術的進步,傳統(tǒng)的監(jiān)控手段已經(jīng)無法滿足日益增長的安全需求。人臉識別技術作為一種新興的技術,因其高效、準確的特點,
    的頭像 發(fā)表于 02-06 17:25 ?354次閱讀

    智能安全配電裝置臨時展會場所如何保證用電安全

    安科瑞徐赟杰 18706165067 【摘要】 簡述了商場臨時展會、展攤等場所電氣裝置用電的特性,針對此類場所隱含的電氣安全隱患問題,結合智能安全配電裝置的功能,從用電設備的接地、
    的頭像 發(fā)表于 12-12 09:17 ?181次閱讀
    智能<b class='flag-5'>安全</b>配電裝置<b class='flag-5'>在</b>臨時展會場所<b class='flag-5'>中</b>如何保證用電<b class='flag-5'>安全</b>

    電氣安裝通過負載箱實現(xiàn)最大效率和安全

    電氣安裝,負載箱是一種常用的設備,主要用于模擬實際的電力負載,以便進行各種電氣設備的測試和調試。通過負載箱,可以實現(xiàn)最大效率和安全性,從而提高電氣設備的運行性能和使用壽命。 負載箱可以實現(xiàn)最大
    發(fā)表于 11-20 15:24

    socket編程安全性考慮

    Socket編程,安全性是一個至關重要的考慮因素。以下是一些關鍵的安全性考慮和措施: 1. 數(shù)據(jù)加密 使用TLS/SSL協(xié)議 :TLS/
    的頭像 發(fā)表于 11-01 16:46 ?374次閱讀

    C/C對TMS320x28xx和28xxx外設進行編程

    電子發(fā)燒友網(wǎng)站提供《C/C對TMS320x28xx和28xxx外設進行編程.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外設進行<b class='flag-5'>編程</b>

    人員位置管理系統(tǒng):提升企業(yè)效率和安全性的利器

    在當今競爭激烈的商業(yè)環(huán)境,企業(yè)對于員工的管理和安全保障顯得尤為重要。傳統(tǒng)的員工出勤管理方式已經(jīng)逐漸被現(xiàn)代化的人員位置管理系統(tǒng)取代,該系統(tǒng)不僅能夠提升企業(yè)的工作效率,還能保障員工的安全
    的頭像 發(fā)表于 10-14 10:55 ?417次閱讀
    人員<b class='flag-5'>位置</b>管理系統(tǒng):提升企業(yè)效率和<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>策略

    TRIZ充電樁安全的應用探究

    在當今電動汽車日益普及的時代,充電樁的安全問題至關重要。TRIZ(發(fā)明問題解決理論)可以為提升充電樁的安全性提供強大助力。具體步驟如深圳天行健企業(yè)管理咨詢公司下文所述: 一、充電樁安全
    的頭像 發(fā)表于 09-06 15:43 ?383次閱讀

    embOS的MISRA-C:2012一致性

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

    whitepaper-perforce-what-is-misra

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

    Perforce靜態(tài)代碼分析專家解讀MISRA C++:2023?新標準:如何安全、高效地使用基于范圍的for循環(huán),防范未定義行

    Frank van den Beuken博士的博客系列,本期為第三篇。 在前兩篇系列文章,我們向您介紹了 新的MISRA C++ 標準 和 C++簡史 。本文,我們將仔細研究
    的頭像 發(fā)表于 06-18 12:57 ?500次閱讀

    ESP32-C3安全啟動v2支持三個密鑰簽名的提交,請問具體怎么操作?

    IDFv4.3.2版本,安全啟動V2的文檔中提到\"How To Enable Secure Boot V2\",但是在其中只有指定密鑰,沒有提到密鑰燒錄的位置。 那么我想燒錄三
    發(fā)表于 06-17 06:19

    MISRA-C-:2004文版

    MISRA-C-:2004 中文版
    發(fā)表于 06-04 11:52 ?1次下載

    使用 MISRA C++:2023? 避免基于范圍的 for 循環(huán)中的錯誤

    在前兩篇博客,我們?向您介紹了新的 MISRA C++ 標準?和?C++ 的歷史?。在這篇博客,我們將仔細研究以
    的頭像 發(fā)表于 03-28 13:53 ?873次閱讀
    使用 <b class='flag-5'>MISRA</b> <b class='flag-5'>C</b>++:2023? 避免基于范圍的 for 循環(huán)中的錯誤

    安全監(jiān)測系統(tǒng)城市燃氣的應用

    系統(tǒng)、視頻監(jiān)控等環(huán)節(jié),系統(tǒng)不僅實現(xiàn)了對安全自動化運行監(jiān)控與管理,而目支持以B/S和C/S結構的數(shù)據(jù)傳輸,公司級的調度服務器上可遠程實時監(jiān)控整個生產(chǎn)及運營環(huán)節(jié)的氣體狀況。
    的頭像 發(fā)表于 03-19 18:56 ?367次閱讀
    <b class='flag-5'>安全</b>監(jiān)測系統(tǒng)<b class='flag-5'>在</b>城市燃氣<b class='flag-5'>中</b>的應用
    主站蜘蛛池模板: 两性色午夜视频免费播放 | 天堂中文字幕在线 | 欧美一级日韩在线观看 | 深夜释放自己vlog糖心旧版本 | 91精品国产免费久久久久久青草 | 天堂在线中文 | 91伊人网| 色婷五月| 天天综合网久久 | 日韩美香港a一级毛片 | 亚洲午夜综合网 | 美女牲交毛片一级视频 | 国产成人经典三级在线观看 | 5月丁香6月婷婷 | 精品一区亚洲 | 国产日本三级在线播放线观看 | 中文字幕久久精品波多野结 | 天天摸天天看天天爽 | 精品免费久久久久久成人影院 | 黄色精品 | jinv在线视频 | 亚洲成人在线网站 | 加勒比一本大道香蕉在线视频 | 小雪被老外黑人撑破了视频 | 天天草夜夜草 | 激情五月深爱五月 | 哥也操| 色老成人精品视频在线观看 | 久久草在线视频国产一 | 午夜视频一区 | 二区在线播放 | 国产精品莉莉欧美自在线线 | 爱爱帝国亚洲一区二区三区 | 色偷偷亚洲综合网亚洲 | 污污的黄色小说 | www夜夜操com | 丁香狠狠色婷婷久久综合 | 在线观看jyzzjyzz| 成人免费无毒在线观看网站 | 国产精品嫩草影院一二三区入口 | 欧美性喷潮xxxx |