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

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

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

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

通過分析可執(zhí)行文件提高可靠性和安全性

星星科技指導(dǎo)員 ? 來源:嵌入式計算設(shè)計 ? 作者:David Melski ? 2022-07-04 14:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

當(dāng)今可用的許多源代碼分析工具,包括 Coverity Prevent、GrammaTech CodeSonar、Klocwork K7 和 MathWorks PolySpace Verifier,可檢測軟件缺陷和漏洞。在過去的幾年里,對可執(zhí)行機器代碼進行類似分析的興趣越來越大。三個主要因素推動了對直接機器代碼分析的興趣:控制 COTS 軟件可靠性和安全性的需要、相對于源代碼分析的技術(shù)優(yōu)勢,以及最近其可行性和實用性的增加,這些已被研究的突破所證實社區(qū)。David 探討了機器代碼分析的優(yōu)勢并總結(jié)了當(dāng)前的技術(shù)水平。

收回對應(yīng)用程序可靠性和安全性的控制

上市時間和成本要求增加了開發(fā)人員在嵌入式軟件應(yīng)用程序中使用 COTS 組件的情況。雖然這些組件具有優(yōu)勢,但它們的代價是一些公認(rèn)的缺點。特別是,消費者通常必須接受軟件,“按原樣”,并相信生產(chǎn)者已采取必要措施來確保安全性和可靠性。不幸的是,經(jīng)驗表明情況并非總是如此。

消費者如何知道 COTS 組件是否具有滿足其需求的可接受的安全性和可靠性?一些 COTS 組件提供了一些關(guān)于所遵循的開發(fā)和測試過程的信息。示例包括一些實時操作系統(tǒng) (RTOS),它們提供文檔以幫助航空電子軟件開發(fā)人員完成 DO-178B 認(rèn)證過程。但即使在這些不尋常的情況下,通常也只有 RTOS 的精簡功能版本有據(jù)可查。對于大多數(shù)第三方組件,沒有關(guān)于開發(fā)和測試過程的信息可用。

對于開發(fā)安全或高可靠性應(yīng)用程序的組織而言,無法評估第三方組件的質(zhì)量是一個重大問題。毫不奇怪,最早支持開發(fā)更好的可執(zhí)行文件分析技術(shù)的人之一是國家安全局,它在 2004 年公開強調(diào)了分析二進制文件的工具的重要性。特別值得關(guān)注的是用于國家關(guān)鍵基礎(chǔ)設(shè)施的軟件,例如應(yīng)急準(zhǔn)備通信和發(fā)電廠。

機器代碼分析提供了一種評估第三方代碼的方法,即使源不可用。檢測缺陷、漏洞和故意插入的惡意代碼的能力使用戶能夠重新獲得一些控制權(quán)來確定一個軟件是否符合他們的接受標(biāo)準(zhǔn)。用戶不必盲目信任軟件生產(chǎn)者。

機器碼分析的技術(shù)優(yōu)勢

COTS 軟件通常不提供源代碼,因此需要進行機器代碼分析。事實上,即使源代碼可用,機器代碼分析也比其他分析技術(shù)具有許多優(yōu)勢。這是因為源代碼沒有被執(zhí)行;相反,它被編譯成機器代碼程序(可執(zhí)行文件)。分析用解釋性語言編寫的程序是另一回事,盡管在那里,源代碼也不是直接在處理器上執(zhí)行的。

由于多種原因,源代碼語義和編譯后的可執(zhí)行語義之間可能存在差異。這種潛在的不匹配被稱為“你所看到的不是你所執(zhí)行的”(WYSINWYX)效應(yīng)。WYSINWYX 承認(rèn),鑒于過程中實際執(zhí)行的內(nèi)容,源代碼中的語義可能不完整或不精確。

WYSINWYX 效果可能由多種因素引起,包括編譯器錯誤和鏈接第三方庫。圖 1 說明了原始程序的含義如何隨著在最終可執(zhí)行文件創(chuàng)建之前添加模塊而發(fā)生變化。

圖1

pYYBAGLCiDWAB9RKAACdFphaEtg384.png

在 2002 年 Microsoft的一次安全審查中發(fā)現(xiàn)了一個引發(fā) WYSINWYX 效應(yīng)的編譯器錯誤示例。在這種情況下,登錄程序的源代碼中出現(xiàn)了如下代碼:

memset(密碼,,?ò\0,??, len);

免費(密碼);

如其名稱所示,緩沖區(qū)密碼用于保存用戶的密碼。作為安全預(yù)防措施,程序員希望盡量減少這些敏感信息在內(nèi)存中的保存時間。因此,在釋放緩沖區(qū)(第 2 行)之前,目的是用零覆蓋敏感密碼(第 1 行)。

但是,在這種情況下,Microsoft C++ 編譯器確定密碼歸零語句是“無用”,并將其刪除。從技術(shù)意義上說,編譯器是正確的:memset 寫入的零不應(yīng)該被任何其他語句讀取,并且刪除 memset 不會影響程序的結(jié)果。然而,優(yōu)化導(dǎo)致了源代碼中不可見的安全漏洞。

每一個潛在的 WYSINWYX 效果都強調(diào)了機器代碼分析工具,?? 優(yōu)于源代碼分析工具的優(yōu)勢。上一節(jié)討論了無法訪問程序源代碼的問題。然而,即使是擁有源代碼的開發(fā)人員也很少擁有最終包含在可執(zhí)行文件中的所有代碼的源代碼。通常,他們將其源代碼鏈接到僅以二進制形式存在的第三方庫。特別是在嵌入式軟件中,源代碼可能包括內(nèi)聯(lián)匯編。在某些情況下,會在編譯源代碼后對可執(zhí)行文件進行修改。源工具通常針對以一種語言編寫的程序,但可執(zhí)行文件可以從多種不同語言的源代碼編譯。

WYSINWYX 效應(yīng)最突出的原因之一是源語言語義通常未指定。例如,C 和 C++ 沒有指定函數(shù)調(diào)用參數(shù)的求值順序。(Scott Meyers的 Effective C++ 中的示例請參見側(cè)邊欄。)從技術(shù)上講,由于源語言歧義導(dǎo)致的問題在源代碼中是可見的。然而,分析一個模棱兩可的陳述的所有可能行為很快就會變得棘手。出于這個原因,源代碼分析工具(通常是程序員)通常通過任意選擇一種合理的解釋來解決歧義。由于無法保證他們的選擇與編譯器相同,因此語言歧義被認(rèn)為是 WYSINWYX 效應(yīng)的主要原因。

編譯器為解決源語言歧義所做的選擇可能會對漏洞的存在產(chǎn)生重要影響。安全漏洞經(jīng)常依賴于數(shù)據(jù)對象布局、堆棧中變量的順序、值是存儲在 RAM 中還是僅存儲在寄存器中等細(xì)節(jié)。在像 C 或 C++ 這樣的語言中,這些細(xì)節(jié)中的大部分都由編譯器自行決定。

源代碼分析工具不能考慮編譯器可能選擇的所有不同選項,至少在沒有做出模糊近似的情況下不能考慮。然而,機器代碼分析具有查看編譯器做出的確切決定的優(yōu)勢。出于這個原因,機器代碼分析有可能比源代碼分析更精確。

機器碼分析的最新進展

研究人員在將靜態(tài)分析應(yīng)用于機器代碼方面取得了長足的進步。幾個小組已經(jīng)證明了機器代碼分析在識別惡意代碼、安全漏洞和影響可靠性的缺陷方面的實用性。

機器代碼分析的一種用途是創(chuàng)建捕獲程序語義的中間表示 (IR)。用于查找錯誤和安全漏洞的源代碼分析工具通常依賴于源代碼中現(xiàn)成的信息(例如類型),而不是機器代碼。IR 恢復(fù)的目標(biāo)是填補這一空白,并允許開發(fā)人員在機器代碼上使用源分析技術(shù)。與開發(fā)專門技術(shù)或一次采用一種源分析技術(shù)相比,IR 恢復(fù)可以同時啟用多種技術(shù)。

CodeSurfer/x86 是從可執(zhí)行文件中恢復(fù) IR 的一種高級工具,它是 GrammaTech 和威斯康星大學(xué)合作研究的成果。對于需要了解一段惡意代碼的潛在影響的安全分析師來說,CodeSurfer/x86 是一個很有價值的工具。雖然該工具目前支持 x86 機器代碼分析,但支持其他處理器架構(gòu)的工作正在進行中,包括 PowerPC 架構(gòu)和 ARM。它的目的是構(gòu)建一個類似于編譯器或源分析工具使用的 IR。具體來說,恢復(fù)的 IR 代表以下信息:

拆解清單

控制流圖,解決了間接跳轉(zhuǎn)

調(diào)用圖,解決了間接調(diào)用

關(guān)于程序的信息,??s 變量

指針變量的可能值

每個控制流圖節(jié)點的已使用、已終止和可能已終止的變量集

數(shù)據(jù)依賴關(guān)系,包括涉及內(nèi)存訪問的指令之間的依賴關(guān)系

類型信息(例如,基類型、指針類型和結(jié)構(gòu))

CodeSurfer/x86 從在 Intel x86 處理器上運行的可執(zhí)行文件執(zhí)行 IR 恢復(fù)。IR 可用作構(gòu)建進一步分析以查找錯誤和漏洞的基礎(chǔ),或用于瀏覽 GUI 界面。圖 2 顯示了臭名昭著的 Nimda 病毒版本的恢復(fù) IR。可視化的 IR 組件包括反匯編列表、所選程序點的可能數(shù)據(jù)值和調(diào)用圖。

圖 2

poYBAGLCiD2AKiycAALYv2GdZZo700.png

許多因素會使 IR 恢復(fù)復(fù)雜化。CodeSurfer/x86 不依賴符號表或源代碼信息,因為這些信息通常從 COTS 產(chǎn)品中剝離。即使存在此信息,它在潛在的惡意代碼中也不可靠。恢復(fù)有關(guān)潛在指針值的信息需要同時分析指針和數(shù)值,因為地址值和數(shù)值不容易區(qū)分。必須根據(jù)數(shù)據(jù)訪問模式推斷類型信息,因為沒有可用的結(jié)構(gòu)化數(shù)據(jù)類型。

盡管執(zhí)行 IR 恢復(fù)有困難,但該技術(shù)已經(jīng)發(fā)展到足以開始產(chǎn)生結(jié)果。Balakrishnan 和 Reps 最近在 Windows 設(shè)備驅(qū)動程序分析中展示了 IR 恢復(fù)的使用。他們發(fā)現(xiàn) CodeSurfer 的 IR 恢復(fù)在設(shè)備驅(qū)動程序上產(chǎn)生了精確的結(jié)果,并證明通過在恢復(fù)的 IR 上進行構(gòu)建,他們可以采用一種分析設(shè)備驅(qū)動程序源代碼的技術(shù)來分析機器代碼并復(fù)制一些相同的結(jié)果。分析機器代碼也有助于解決前面討論的所見即所得問題。

滿足安全關(guān)鍵需求

機器代碼分析已經(jīng)在識別軟件中的錯誤和安全漏洞以及幫助用戶評估第三方代碼方面發(fā)揮著重要作用。預(yù)計安全關(guān)鍵軟件生產(chǎn)商將開始對他們自己的軟件使用機器代碼分析來解釋所見即所得效應(yīng)。不斷增長的需求和不斷增加的工具支持和功能將繼續(xù)推動機器代碼分析的增長。

審核編輯:郭婷

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

    關(guān)注

    22

    文章

    2119

    瀏覽量

    75048
  • 源代碼
    +關(guān)注

    關(guān)注

    96

    文章

    2953

    瀏覽量

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

    關(guān)注

    1

    文章

    1659

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    提供半導(dǎo)體工藝可靠性測試-WLR晶圓可靠性測試

    隨著半導(dǎo)體工藝復(fù)雜度提升,可靠性要求與測試成本及時間之間的矛盾日益凸顯。晶圓級可靠性(Wafer Level Reliability, WLR)技術(shù)通過直接在未封裝晶圓上施加加速應(yīng)力,實現(xiàn)快速
    發(fā)表于 05-07 20:34

    電機微機控制系統(tǒng)可靠性分析

    長期可靠地工作,這一問題牽涉到許多有關(guān)系統(tǒng)抗干擾設(shè)計、故障自診斷、自恢復(fù)等有關(guān)可靠性的知識和技術(shù)。本文著重介紹與可靠性有關(guān)的一些概念和電機微機控制系統(tǒng)中常見放障的分析,并指出
    發(fā)表于 04-29 16:14

    IGBT的應(yīng)用可靠性與失效分析

    包括器件固有可靠性和使用可靠性。固有可靠性問題包括安全工作區(qū)、閂鎖效應(yīng)、雪崩耐量、短路能力及功耗等,使用可靠性問題包括并聯(lián)均流、軟關(guān)斷、電磁
    的頭像 發(fā)表于 04-25 09:38 ?838次閱讀
    IGBT的應(yīng)用<b class='flag-5'>可靠性</b>與失效<b class='flag-5'>分析</b>

    高可靠性嵌入式主板設(shè)計

    設(shè)計直接影響整個系統(tǒng)的穩(wěn)定性和壽命。因此,設(shè)計高可靠性的嵌入式主板不僅是技術(shù)挑戰(zhàn),也是提高產(chǎn)品競爭力的關(guān)鍵因素。本文將深入探討高可靠性嵌入式主板設(shè)計的各個方面,包括硬件選型
    的頭像 發(fā)表于 03-25 15:11 ?457次閱讀
    <b class='flag-5'>高可靠性</b>嵌入式主板設(shè)計

    創(chuàng)建OpenVINO? Python腳本,運行可執(zhí)行文件時遇到的報錯怎么解決?

    ;Devices:\", ie.available_devices) 執(zhí)行以下行以使用 PyInstaller 構(gòu)建可執(zhí)行文件: pyinstaller test.py --onefile 運行
    發(fā)表于 03-05 10:20

    labview打包可執(zhí)行文件后安裝出錯

    在 labview 寫程序時使用到了ni-imaqdx模塊,最終將其打包為可執(zhí)行文件和安裝包后,在其它電腦安裝后會提示ni-imaqdx軟件未激活,請問這是安裝環(huán)境沒有配置好嗎?
    發(fā)表于 12-17 19:23

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

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

    智能系統(tǒng)的安全性分析

    智能系統(tǒng)的安全性分析是一個至關(guān)重要的過程,它涉及多個層面和維度,以確保系統(tǒng)在各種情況下都能保持安全、穩(wěn)定和可靠。以下是對智能系統(tǒng)安全性
    的頭像 發(fā)表于 10-29 09:56 ?714次閱讀

    UPS電源的安全性可靠性分析

    隨著信息技術(shù)的飛速發(fā)展,數(shù)據(jù)和信息已成為現(xiàn)代社會的重要資產(chǎn)。因此,確保數(shù)據(jù)的持續(xù)可用和完整變得至關(guān)重要。不間斷電源(UPS)系統(tǒng)作為保護關(guān)鍵設(shè)備免受電力中斷影響的重要手段,其安全性可靠性
    的頭像 發(fā)表于 10-28 10:49 ?1509次閱讀

    C語言生成可執(zhí)行二進制文件的具體過程

    C語言源碼到生成可執(zhí)行文件的過程通常包括預(yù)處理(Preprocessing)、編譯(Compilation)、匯編(Assembly)、鏈接(Linking)等多個步驟,每個步驟都有其特定的任務(wù)
    的頭像 發(fā)表于 10-21 14:30 ?1559次閱讀
    C語言生成<b class='flag-5'>可執(zhí)行</b>二進制<b class='flag-5'>文件</b>的具體過程

    PCB高可靠性化要求與發(fā)展——PCB高可靠性的影響因素(上)

    可靠性提出了更為嚴(yán)格的要求,特別是在焊接點的結(jié)合力、熱應(yīng)力管理以及焊接點數(shù)量的增加等方面。本文將探討影響PCB可靠性的關(guān)鍵因素,并分析當(dāng)前和未來提高PCB
    的頭像 發(fā)表于 10-11 11:20 ?1198次閱讀
    PCB<b class='flag-5'>高可靠性</b>化要求與發(fā)展——PCB<b class='flag-5'>高可靠性</b>的影響因素(上)

    針對高可靠性應(yīng)用的電壓轉(zhuǎn)換

    電子發(fā)燒友網(wǎng)站提供《針對高可靠性應(yīng)用的電壓轉(zhuǎn)換.pdf》資料免費下載
    發(fā)表于 09-18 14:46 ?0次下載
    針對<b class='flag-5'>高可靠性</b>應(yīng)用的電壓轉(zhuǎn)換

    labview怎么生成可執(zhí)行文件

    生成可執(zhí)行文件(EXE)是LabVIEW程序開發(fā)中的一個重要步驟,它允許用戶將LabVIEW項目打包成一個獨立的應(yīng)用程序,便于在沒有安裝LabVIEW的計算機上運行。 1. 準(zhǔn)備工作 在開始生成
    的頭像 發(fā)表于 09-04 17:07 ?1802次閱讀

    labview生成可執(zhí)行程序后vi都在同一路徑下嗎

    在LabVIEW中,當(dāng)您生成可執(zhí)行程序(exe文件)后,VI(虛擬儀器)并不直接以文件的形式存在于可執(zhí)行文件的同一物理路徑下。實際上,LabVIEW的
    的頭像 發(fā)表于 09-04 17:06 ?1289次閱讀

    430單片機代碼debug后無法生成可執(zhí)行文件

    軟件是用許可證注冊過的,代碼是正確的,但是點完右上角那個build鍵后,消息框說生成不了可執(zhí)行文件,如圖
    發(fā)表于 07-15 09:28
    主站蜘蛛池模板: 免费 视频 1级 | 九九re6精品视频在线观看 | 四虎免费看黄 | 一夜七次郎久久综合伊人 | 日本口工全彩无遮拦漫画大 | 手机看片福利盒子久久 | 狠狠色丁香婷婷第六色孕妇 | 欧美 亚洲 国产 精品有声 | 白嫩美女一级高清毛片免费看 | 国产午夜免费视频 | 欧美一级片网址 | 亚洲日本视频 | 美女张开腿露出尿口让男人桶 | 九九九精品午夜在线观看 | 中文字幕色综合久久 | 国产精品www视频免费看 | 欧美三级影院 | 91成人免费视频 | 久久性感美女视频 | 在线观看视频在线观看 | 大伊人网 | 又粗又长又大又黄的日本视频 | 日韩毛片一级 | 日日噜噜爽爽狠狠视频 | 在线 你懂的 | 久久综合九色综合欧美播 | 色干干 | 亚洲第一成人在线 | 免费一级特黄特色大片在线观看 | 国产叼嘿免费视频网站 | 丁香月婷婷| 一区二区不卡免费视频 | 伊人狼人综合网 | 亚洲精品www | 免费观看理论片毛片 | 伊人网在线观看 | 男女交性视频免费视频 | 一色屋成人免费精品网 | 日日噜噜噜夜夜爽爽狠狠图片 | 49vv婷婷网 | videossexotv极度另类高清 |