日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

符號(hào)執(zhí)行技術(shù)可識(shí)別安全關(guān)鍵代碼中的漏洞

星星科技指導(dǎo)員 ? 來源:嵌入式計(jì)算設(shè)計(jì) ? 作者:PAUL ANDERSON ? 2022-11-08 11:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

多核處理器在安全關(guān)鍵型應(yīng)用中越來越受歡迎,因?yàn)樗鼈兲峁┝孙@著的價(jià)格和性能改進(jìn)。但是,為多核硬件編寫多線程應(yīng)用程序是出了名的困難,并可能導(dǎo)致災(zāi)難性故障。下面描述了用于識(shí)別問題(包括數(shù)據(jù)爭(zhēng)用)的符號(hào)執(zhí)行技術(shù)?最常見的并發(fā)缺陷之一?以及靜態(tài)分析如何幫助開發(fā)人員找到并消除它們。

最大化性能對(duì)于軍事嵌入式系統(tǒng)尤為重要,因?yàn)樵谌找鏀?shù)字化的戰(zhàn)場(chǎng)上,人們?cè)絹碓叫枰3值统杀?,同時(shí)滿足連接要求。隨著制造商達(dá)到小型化和集成度提高所能達(dá)到的極限,提高性能的最佳方法是使用多核處理器。

缺點(diǎn)是,為了充分利用并行執(zhí)行的許多內(nèi)核,必須將軟件編寫為本質(zhì)上是多線程的。為單核處理器編寫為單線程的軟件在多核處理器上執(zhí)行時(shí)將實(shí)現(xiàn)很少或沒有性能優(yōu)勢(shì):必須重寫或調(diào)整它以使用多線程。關(guān)鍵挑戰(zhàn)是盡可能保持核心繁忙,同時(shí)確保它們正確協(xié)調(diào)對(duì)共享資源的訪問。不幸的是,編寫這樣的代碼比編寫單線程代碼要困難得多。當(dāng)存在死鎖或爭(zhēng)用條件等缺陷時(shí),它們可能會(huì)以難以診斷的方式表現(xiàn)出來。查找和消除并發(fā) bug 的傳統(tǒng)技術(shù)可能無效。

并發(fā)錯(cuò)誤如此困難的核心原因之一是,當(dāng)線程執(zhí)行時(shí),線程中的事件可以通過多種方式交錯(cuò)。隨著線程或指令數(shù)量的增加,交錯(cuò)的數(shù)量呈指數(shù)級(jí)增長(zhǎng)。如果線程 A 執(zhí)行 M 條指令,線程 B 執(zhí)行 N 條指令,則兩個(gè)線程可能存在 N+MCN 交錯(cuò)。例如,給定兩個(gè)平凡的線程,每個(gè)線程有 10 條指令,這些指令有 184,756 個(gè)可能的交錯(cuò)。即使使用非常小的程序,很明顯也幾乎不可能測(cè)試所有可能的組合。其次,即使可以識(shí)別導(dǎo)致故障的單個(gè)交錯(cuò),也很難設(shè)置使用該特定交錯(cuò)的可重復(fù)測(cè)試用例,因?yàn)榫€程調(diào)度實(shí)際上是不確定的。因此,調(diào)試并發(fā)程序可能非常昂貴且耗時(shí)。爭(zhēng)用條件是一類并發(fā)缺陷,很容易意外引入,并且很難通過常規(guī)測(cè)試消除。但是,程序員可以使用一些技術(shù)來查找和刪除它們。

潛在的災(zāi)難性故障

與單線程代碼相比,并發(fā)程序中可能會(huì)出現(xiàn)全新的缺陷類別,包括死鎖、饑餓和爭(zhēng)用條件。這些缺陷主要會(huì)導(dǎo)致開發(fā)過程中難以診斷和消除的神秘故障。我們合作過的一家航空電子制造商花了兩個(gè)人年的時(shí)間應(yīng)用傳統(tǒng)的調(diào)試技術(shù),努力找到間歇性軟件故障的根本原因,結(jié)果證明這是一種競(jìng)爭(zhēng)條件。有時(shí)后果可能很可怕——有史以來最臭名昭著的兩個(gè)軟件故障是由競(jìng)爭(zhēng)條件引起的。Therac-25放射治療機(jī)具有導(dǎo)致幾名患者死亡的種族條件。同樣,2003 年東北停電因競(jìng)爭(zhēng)條件而加劇,導(dǎo)致誤導(dǎo)性信息被傳達(dá)給技術(shù)人員。

有幾種不同類型的競(jìng)爭(zhēng)條件。最常見和最隱蔽的形式之一 - 數(shù)據(jù)競(jìng)爭(zhēng) - 是涉及訪問內(nèi)存位置的競(jìng)爭(zhēng)條件類。

當(dāng)有兩個(gè)或多個(gè)執(zhí)行線程訪問共享內(nèi)存位置,至少一個(gè)線程正在更改該位置的數(shù)據(jù),并且沒有用于協(xié)調(diào)訪問的顯式機(jī)制時(shí),就會(huì)發(fā)生數(shù)據(jù)爭(zhēng)用。如果發(fā)生數(shù)據(jù)爭(zhēng)用,則可能會(huì)使程序處于不一致狀態(tài)。

考慮控制襟翼位置的航空電子代碼。在正常情況下,襟翼處于飛行控制軟件指示的位置,但飛行員可以通過按下控制面板上的按鈕來覆蓋該位置,在這種情況下,使用手動(dòng)設(shè)置的位置。為了簡(jiǎn)單起見,假設(shè)程序中有兩個(gè)線程:一個(gè)控制翻蓋,另一個(gè)監(jiān)視控制面板上元素的位置。還有一個(gè)名為 is_manual 的共享布爾變量,它對(duì)手動(dòng)覆蓋是否設(shè)置進(jìn)行編碼。擺動(dòng)位置螺紋檢查is_manual的值,如果為 true,則相應(yīng)地設(shè)置位置。控制面板線程偵聽按鈕按下事件,如果按下替代按鈕,它將is_manual設(shè)置為 true。圖 1 顯示了為實(shí)現(xiàn)此規(guī)范而可能編寫的代碼。此代碼可能在大多數(shù)情況下都有效;但是,由于 is_manual 變量對(duì)兩個(gè)線程共享的狀態(tài)進(jìn)行編碼,因此它容易受到數(shù)據(jù)爭(zhēng)用的影響,因?yàn)閷?duì)它的訪問不受鎖保護(hù)。如果在飛行員按下超控按鈕的確切時(shí)間執(zhí)行襟翼定位代碼,則程序可能會(huì)進(jìn)入不一致的狀態(tài),并且將使用錯(cuò)誤的襟翼位置。圖 2 顯示了這種情況是如何發(fā)生的。

圖1:訪問共享變量的兩個(gè)線程中的代碼

21

圖2:導(dǎo)致數(shù)據(jù)爭(zhēng)用的指令交錯(cuò)

22

這個(gè)例子巧妙地說明了數(shù)據(jù)爭(zhēng)用的一個(gè)屬性,這使得它們難以診斷:損壞的癥狀可能只有在數(shù)據(jù)爭(zhēng)用發(fā)生很久之后才能觀察到。在這種情況下,只有當(dāng)飛行員注意到飛機(jī)沒有按預(yù)期響應(yīng)時(shí),才會(huì)注意到使用錯(cuò)誤的襟翼位置的事實(shí)。

人們普遍認(rèn)為,數(shù)據(jù)競(jìng)爭(zhēng)的某些實(shí)例是良性的,可以容忍。然而,現(xiàn)在毫無疑問,這很少是真的。C 標(biāo)準(zhǔn)[4] 明確指出,編譯器可以假設(shè)沒有數(shù)據(jù)爭(zhēng)用,因此優(yōu)化器可以并且確實(shí)進(jìn)行了對(duì)提高單線程代碼性能有效的轉(zhuǎn)換,但在存在明顯良性的競(jìng)爭(zhēng)條件時(shí)引入了錯(cuò)誤。這些都是微妙的影響——即使是經(jīng)驗(yàn)豐富的程序員也經(jīng)常對(duì)它們感到驚訝。(有關(guān)完整的解釋和幾個(gè)令人信服的示例,請(qǐng)參閱參考文獻(xiàn) [1]。因此,為了實(shí)現(xiàn)高水平的保證并避免災(zāi)難性故障,查找并刪除所有數(shù)據(jù)爭(zhēng)用非常重要。

消除并發(fā)缺陷

鑒于并發(fā)缺陷,尤其是數(shù)據(jù)爭(zhēng)用,風(fēng)險(xiǎn)很大,因此使用多種技術(shù)來消除它們非常重要。由于不確定性,傳統(tǒng)的動(dòng)態(tài)測(cè)試不太適合發(fā)現(xiàn)許多并發(fā)缺陷。通過測(cè)試數(shù)百次的程序以后可能會(huì)在具有完全相同輸入的相同環(huán)境中失敗,因?yàn)樵撳e(cuò)誤可能對(duì)時(shí)間非常敏感。尋求高保證的工程師如果要消除并發(fā)缺陷,就必須轉(zhuǎn)向其他技術(shù)。

靜態(tài)分析工具提供了一種查找此類錯(cuò)誤的方法。測(cè)試和靜態(tài)分析之間的主要區(qū)別在于,它針對(duì)給定的一組輸入測(cè)試程序的特定執(zhí)行,而靜態(tài)分析查找適用于所有可能執(zhí)行和所有輸入的屬性。(在實(shí)踐中,靜態(tài)分析工具進(jìn)行近似以獲得可接受的性能和精度,因此達(dá)不到這個(gè)理想模型。盡管如此,它們確實(shí)涵蓋了比傳統(tǒng)測(cè)試更多的情況。

粗略地說,靜態(tài)分析工具的工作原理是創(chuàng)建程序模型并對(duì)該模型進(jìn)行符號(hào)執(zhí)行,在此過程中查找錯(cuò)誤條件。例如,GrammaTech的CodeSonar靜態(tài)分析工具通過創(chuàng)建哪些鎖由哪些線程持有的映射,并通過推理可能導(dǎo)致對(duì)共享變量的不同步訪問的可能交錯(cuò)來查找數(shù)據(jù)競(jìng)爭(zhēng)。使用類似的技術(shù)發(fā)現(xiàn)死鎖和其他并發(fā)缺陷(包括鎖管理不善)。

自定義并發(fā)構(gòu)造:案例研究

當(dāng)程序使用標(biāo)準(zhǔn)方法來管理并發(fā)時(shí),標(biāo)準(zhǔn)缺陷檢測(cè)技術(shù)最有用。大多數(shù)工具識(shí)別并推理標(biāo)準(zhǔn)庫(如POSIX線程庫)或?qū)S?a target="_blank">接口(如VxWorks)的特殊屬性。但是,許多系統(tǒng)使用自定義技術(shù)來管理并發(fā)性。

例如,與我們合作的另一家制造商在使用自定義搶占式多線程軟件接口的平臺(tái)上構(gòu)建了一個(gè)安全關(guān)鍵型設(shè)備。在此設(shè)計(jì)中,一個(gè)關(guān)鍵約束是,必須使用適當(dāng)?shù)谋Wo(hù)構(gòu)造保護(hù)可以從多個(gè)優(yōu)先級(jí)線程訪問的所有數(shù)據(jù)實(shí)例。在使用靜態(tài)分析之前,驗(yàn)證是否遵守此約束需要花費(fèi)人工月的手動(dòng)分析時(shí)間。為了降低成本,他們通過轉(zhuǎn)向靜態(tài)分析來尋求解決方案?,F(xiàn)代高級(jí)靜態(tài)分析工具的一個(gè)重要特性是它們是可擴(kuò)展的:它們提供了一個(gè)帶有抽象的 API,可以方便地實(shí)現(xiàn)自定義靜態(tài)分析算法。使用 CodeSonar 的 API,他們能夠編寫一個(gè)解決方案,該解決方案利用現(xiàn)有分析核心使用的算法來查找代碼中違反設(shè)計(jì)約束的位置。生成的工具作為插件實(shí)現(xiàn),能夠自動(dòng)查找違反關(guān)鍵約束的情況,所有這些都只需一小部分成本和比以前少得多的時(shí)間。

多核權(quán)衡

轉(zhuǎn)向多核處理器設(shè)計(jì)有令人信服的理由,但風(fēng)險(xiǎn)在于這樣做可能會(huì)在軟件中引入并發(fā)缺陷。這些很容易引入 - 即使是看似無辜的代碼也可能隱藏令人討厭的多線程錯(cuò)誤 - 并且眾所周知,當(dāng)它們發(fā)生時(shí)很難診斷和消除。僅靠傳統(tǒng)的測(cè)試技術(shù)不足以確保高質(zhì)量的軟件,這主要是因?yàn)楦叨鹊姆谴_定性。使用使用符號(hào)執(zhí)行的高級(jí)靜態(tài)分析工具是一種可以提供幫助的方法,因?yàn)榇祟惞ぞ呖梢酝评泶a執(zhí)行的所有可能方式。這些工具可以在使用標(biāo)準(zhǔn)多線程庫的代碼中發(fā)現(xiàn)數(shù)據(jù)爭(zhēng)用和死鎖等缺陷,甚至可以適應(yīng)使用非標(biāo)準(zhǔn)并發(fā)構(gòu)造的設(shè)計(jì)。

審核編輯:郭婷

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

    關(guān)注

    68

    文章

    20344

    瀏覽量

    255360
  • 嵌入式
    +關(guān)注

    關(guān)注

    5210

    文章

    20683

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    汽車網(wǎng)絡(luò)安全合規(guī)全流程深度解析——從法規(guī)門檻到落地實(shí)踐

    ,通俗地說,就是防止車輛被黑客入侵、篡改、控制的一套技術(shù)體系和管理體系。黑客入侵車輛控制系統(tǒng)、篡改儀表數(shù)據(jù)、竊取用戶隱私,甚至影響制動(dòng)、轉(zhuǎn)向等關(guān)鍵功能,直接威脅駕乘安全。 2.2 核
    發(fā)表于 04-21 13:03

    curl的TFTP實(shí)現(xiàn):整數(shù)下溢導(dǎo)致堆內(nèi)存越界讀取漏洞

    。 該漏洞存在于 commit 3ee1d3b5 的 libcurl ,具體位于 lib/tftp.c 文件的 tftp_send_first() 函數(shù)。 漏洞詳情 代碼分析
    發(fā)表于 02-19 13:55

    AT32F011系列安全庫區(qū)的應(yīng)用

    庫區(qū)設(shè)定寄存器的詳細(xì)說明,請(qǐng)參閱AT32F011系列技術(shù)手冊(cè)。 啟動(dòng)安全庫區(qū)的程序參考安全庫區(qū)應(yīng)用范例project_l0位于main.
    發(fā)表于 01-30 14:20

    智能門鎖指紋識(shí)別安全嗎?當(dāng)靜電“模糊”了傳感器……

    “認(rèn)賊作父”:一枚未錄入的指紋,可能錯(cuò)誤地識(shí)別為已授權(quán)的戶主,導(dǎo)致安全門禁形同虛設(shè)。
    的頭像 發(fā)表于 01-19 16:41 ?352次閱讀

    分析嵌入式軟件代碼漏洞-代碼注入

    。 雖然這是一個(gè)代碼注入安全漏洞,但由于它唯一可能造成的傷害就是可以被用來獲取棧的數(shù)據(jù),所以它還是可以被原諒的。 如果位于那里的是敏感數(shù)據(jù)(如密碼或證書密鑰),情況就會(huì)變得很糟
    發(fā)表于 12-22 12:53

    C語言單元測(cè)試在嵌入式軟件開發(fā)的作用及專業(yè)工具的應(yīng)用

    ****?:直接使用目標(biāo)機(jī)代碼進(jìn)行測(cè)試,無需任何Hook或環(huán)境重構(gòu) ?真實(shí)硬件行為捕獲****?:自動(dòng)記錄外設(shè)交互信號(hào),并生成復(fù)用的測(cè)試場(chǎng)景 ?高效測(cè)試執(zhí)行****?:某日本車企在ADAS控制器開發(fā)
    發(fā)表于 12-18 11:46

    行業(yè)觀察 | 微軟2025年末高危漏洞更新,57項(xiàng)關(guān)鍵修復(fù)與安全策略指南

    微軟在2025年最后一次“補(bǔ)丁星期二”中發(fā)布了57項(xiàng)安全修復(fù),涉及Windows、Office、AzureMonitorAgent、SharePoint、RRAS及多項(xiàng)文件系統(tǒng)與驅(qū)動(dòng)組件。本次更新
    的頭像 發(fā)表于 12-11 16:59 ?1599次閱讀
    行業(yè)觀察 | 微軟2025年末高危<b class='flag-5'>漏洞</b>更新,57項(xiàng)<b class='flag-5'>關(guān)鍵</b>修復(fù)與<b class='flag-5'>安全</b>策略指南

    單片機(jī)開發(fā)功能安全編譯器

    在各個(gè)領(lǐng)域,功能安全領(lǐng)域?qū)﹂_發(fā)人員提出了新要求。功能上安全代碼必須包括防御性代碼,以防御各種原因引起的意外事件。例如,由于編碼錯(cuò)誤或宇宙射線事件而導(dǎo)致的內(nèi)存損壞可能導(dǎo)致
    發(fā)表于 12-01 06:44

    攻擊逃逸測(cè)試:深度驗(yàn)證網(wǎng)絡(luò)安全設(shè)備的真實(shí)防護(hù)能力

    圖9 使用攻擊逃逸模型,設(shè)備攔截失敗 總結(jié) 通過信而泰ALPS平臺(tái)執(zhí)行攻擊逃逸測(cè)試,用戶能夠獲得三個(gè)層面的核心價(jià)值: 安全能力量化:精準(zhǔn)獲取設(shè)備在真實(shí)逃逸場(chǎng)景下的識(shí)別率、誤報(bào)/漏
    發(fā)表于 11-17 16:17

    行業(yè)觀察 | Windows 10于本月終止服務(wù)支持,微軟發(fā)布10月高危漏洞更新

    已被實(shí)際利用的零日漏洞,以及多個(gè)CVSS評(píng)分高達(dá)9.9的關(guān)鍵遠(yuǎn)程代碼執(zhí)行漏洞。隨著Windows10于本月終止服務(wù)支持,IT團(tuán)隊(duì)面臨
    的頭像 發(fā)表于 10-16 16:57 ?2045次閱讀
    行業(yè)觀察 | Windows 10于本月終止服務(wù)支持,微軟發(fā)布10月高危<b class='flag-5'>漏洞</b>更新

    兆芯加入基礎(chǔ)軟硬件產(chǎn)品漏洞生態(tài)聯(lián)盟

    近日,CCS 2025成都網(wǎng)絡(luò)安全技術(shù)交流系列活動(dòng)——國(guó)家漏洞庫(CNNVD)基礎(chǔ)軟硬件產(chǎn)品漏洞治理生態(tài)大會(huì)在成都成功舉辦。來自國(guó)家關(guān)鍵基礎(chǔ)
    的頭像 發(fā)表于 09-22 13:50 ?1009次閱讀

    引人注目的生物識(shí)別安全技術(shù) 安森美 (onsemi)圖像傳感器虹膜掃描和面部識(shí)別方案

    ,是每個(gè)人的虹膜圖案都獨(dú)一無二,并且終生保持穩(wěn)定,因而是一種非常安全可靠的身份識(shí)別方法。近年來,虹膜掃描在安防、醫(yī)療護(hù)理、消費(fèi)技術(shù)等領(lǐng)域的應(yīng)用越來越廣泛。本周的“New Tech Tuesday”
    的頭像 發(fā)表于 08-29 09:26 ?1.8w次閱讀
    引人注目的生物<b class='flag-5'>識(shí)別安全</b><b class='flag-5'>技術(shù)</b> 安森美 (onsemi)圖像傳感器虹膜掃描和面部<b class='flag-5'>識(shí)別</b>方案

    行業(yè)觀察 | Azure、RDP、NTLM 均現(xiàn)高危漏洞,微軟發(fā)布2025年8月安全更新

    -CVE-2025-53779:WindowsKerberos漏洞,允許攻擊者將權(quán)限提升至域管理員。?13個(gè)嚴(yán)重漏洞:-9個(gè)遠(yuǎn)程代碼執(zhí)行漏洞
    的頭像 發(fā)表于 08-25 17:48 ?2524次閱讀
    行業(yè)觀察 | Azure、RDP、NTLM 均現(xiàn)高危<b class='flag-5'>漏洞</b>,微軟發(fā)布2025年8月<b class='flag-5'>安全</b>更新

    行業(yè)觀察 | VMware ESXi 服務(wù)器暴露高危漏洞,中國(guó)1700余臺(tái)面臨勒索軟件威脅

    8.x版本,允許未經(jīng)身份驗(yàn)證的遠(yuǎn)程攻擊者在虛擬環(huán)境執(zhí)行任意代碼、提升權(quán)限或傳播勒索軟件等。更令人擔(dān)憂的是,該漏洞利用難度極低,且相關(guān)利用代碼
    的頭像 發(fā)表于 08-14 16:58 ?2169次閱讀
    行業(yè)觀察 | VMware ESXi 服務(wù)器暴露高危<b class='flag-5'>漏洞</b>,中國(guó)1700余臺(tái)面臨勒索軟件威脅

    有償求助!esp32cam攝像頭車牌識(shí)別代碼執(zhí)行時(shí),上位機(jī)閃退

    esp32cam攝像頭車牌識(shí)別在操作執(zhí)行識(shí)別車牌打開攝像頭,上機(jī)位直接閃退,攝像頭在例程檢測(cè)是有圖片的,有償找一個(gè)能幫我修改整體代碼
    發(fā)表于 06-03 16:18
    佛山市| 阳谷县| 榕江县| 永平县| 萨嘎县| 丹阳市| 镇雄县| 香格里拉县| 铁岭市| 夹江县| 理塘县| 崇义县| 阿图什市| 平塘县| 利辛县| 石嘴山市| 香格里拉县| 台江县| 台中市| 同德县| 罗甸县| 蕉岭县| 永安市| 买车| 灯塔市| 抚顺市| 江阴市| 民勤县| 遂平县| 视频| 松原市| 乐平市| 安泽县| 容城县| 平江县| 婺源县| 福清市| 连山| 墨脱县| 临澧县| 会宁县|