国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

通過高級靜態分析進行特定于域的屬性檢查

星星科技指導員 ? 來源:嵌入式計算設計 ? 作者:PAUL ANDERSON ? 2022-11-10 15:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

眾所周知,高級靜態分析工具擅長發現程序中的一般缺陷。借助自定義的屬性檢查器,最終用戶還可以擴展它們,以查找特定應用程序特有的特定于域的錯誤。

先進的靜態分析工具使用復雜的全程序、路徑敏感技術來發現深層語義問題,包括安全缺陷和安全漏洞。這些工具識別的幾個缺陷可以在CWE/SANS前25個最危險的編程錯誤中找到,其中列出了為了降低安全風險而要避免的最重要的錯誤。

具體來說,開箱即用的高級靜態分析工具可以找到通用編程缺陷。來自靜態分析工具的典型通用報告可能會顯示警告,例如未初始化的變量、緩沖區溢出、無法訪問的條件和無法訪問的調用等;但是,并非所有安全漏洞或安全錯誤都是由一般問題引起的。許多缺陷是特定應用所獨有的。

這些工具的一個經常被低估的方面是它們是可擴展的,因此通常也可以對其進行配置或編程以查找違反特定于域的規則的情況。因此,如果開發團隊有自己的內部規則來使用專有API,或者要求程序員使用特定的習慣用語,那么通常可以編寫一個檢查器來表示違反這些規則。因此,程序員通常只需很少的編程工作,就可以顯著增加他們從工具中獲得的價值。

一個常見的用例是當發生錯誤并觸發漫長而痛苦的診斷和調試期時。找到缺陷后,明智的做法是首先在代碼中查找重復錯誤的其他位置,然后采取措施檢測錯誤是否再次發生。對現有代碼和新代碼運行自定義檢查可能是實現此目的的有效、低成本方法。這些工具的工作原理以及如何自定義它們的檢查器是使用 CodeSonar 中的代碼片段描述的,盡管這些原則也可以與其他高級靜態分析工具一起使用。

高級靜態分析的工作原理

要了解擴展的不同編寫方式,首先要了解什么是靜態分析,以及靜態分析工具如何在后臺工作。

靜態分析工具的工作方式與編譯器非常相似。他們將源代碼作為輸入,然后對其進行解析并轉換為中間表示 (IR)。高級靜態分析工具架構的框圖如圖 1 所示。編譯器將使用 IR 生成目標代碼,而靜態分析工具保留 IR,而檢查器通常通過遍歷或查詢 IR 來實現,查找指示缺陷的特定屬性或模式。

圖1:高級靜態分析工具的架構

poYBAGNsqHWASNl7AABJrDpWD9s224.jpg

高級工具從復雜的符號執行技術中獲得強大功能,這些技術通過控制流圖探索路徑。這些算法跟蹤程序的抽象狀態,并知道如何使用該狀態來排除對不可行路徑的考慮。

特定于域的屬性的檢查器可以訪問這些表示形式,并以各種方式利用分析算法。

自定義檢查器

最終用戶如何創作自定義屬性檢查器?這在很大程度上取決于屬性的性質,因此有幾種機制可用:

可以通過向配置文件添加指令來擴展現有檢查器。

用戶可以向其代碼添加注釋,以指示分析查找某些屬性。如果用戶不希望干擾源代碼,則可以以面向方面的方式在側面完成這些注釋。

API 允許用戶訪問所有中間表示形式。通常,使用訪問者模式,允許擴展利用分析已在執行的遍歷。

讓我們仔細看看這些機制。

配置文件

這些先進的靜態分析工具實現了數十個檢查器。通常,用戶需要一個與內置檢查器略有不同的檢查器,并且其中許多檢查器都設計為可擴展的。一類檢查器查找禁止使用的函數。例如,眾所周知,C 庫函數 get 是不安全的。檢查器由一個階段實現,該階段查找對函數名稱的引用,然后將它們與一組正則表達式進行匹配。通過向配置文件添加行來向此集合添加其他正則表達式是一件簡單的事情。

代碼注釋

編寫檢查器的第二種方法是向代碼添加注釋。

例如,假設有一個名為 foo 的內部函數采用單個整數參數,并且當此參數為 -1 時引入了潛在的安全漏洞??梢酝ㄟ^向foo主體添加一些代碼來實現對這種情況的檢查,如下所示:

void foo(int x)

{

#ifdef __CSURF__

csonar_trigger(x, “==”, -1,

“Dangerous call to foo()”);

#endif __CSURF__

}

#ifdef構造可確保常規編譯器看不到此新代碼。但是,當該工具分析此代碼時,會看到對csonar_trigger的調用。因此,此調用從未實際執行,而是由工具解釋為對基礎分析引擎的指令。如果分析得出結論,可能滿足觸發條件,則它將發出帶有給定消息的警告。

大多數程序員不喜歡用這樣的注釋來混淆他們的代碼,所以有一種替代方法來實現這種檢查,允許它寫在單獨的文件中。當 foo 的源代碼不可用時,例如當它位于第三方庫中時,此方法也適用。為此,檢查器的作者將編寫一個替換函數,如下所示:

void csonar_replace_foo(int x)

{

csonar_trigger(x, “==”, -1,

“Dangerous call to foo()”);

foo();

}

當分析看到csonar_replace_foo的定義時,它會將代碼中的所有 foo 調用(csonar_replace_foo 內部的調用除外)視為對 csonar_replace_foo 的調用。

此觸發器習慣用法適用于檢查時態屬性,尤其是函數調用序列。假設有一條規則說,在 foo 執行時,永遠不應該調用 bar??梢园慈缦路绞綄嵤z查:

static int foo_is_executing = 0;

void csonar_replace_foo(int x) {

foo_is_executing = 1;

foo(x);

foo_is_executing = 0;

}

void csonar_replace_bar(void) {

csonar_trigger(foo_is_executing,

“==”, 1,

“Call to bar from foo”);

bar();

}

請注意,全局狀態變量用于記錄 foo 是否處于活動狀態。在輸入 foo 之前,它被設置為 1,然后在 foo 返回后重置為零。然后在 bar 中的觸發器中檢查此變量,如果設置為 1,將發出警告。

前面的示例演示如何檢查全局屬性。相同的機制可用于編寫對單個對象的屬性的檢查??梢詫傩愿郊拥綄ο笠愿櫰錉顟B。

這種方法允許用戶幾乎像編寫動態檢查一樣編寫靜態檢查。這種檢查的 API 很小,語言是 C,所以有一個溫和的學習曲線。這種簡單性具有欺騙性:該技術可用于實現相當復雜的檢查。

用于中間表示的 API

實現自定義檢查的最終方法是使用提供對基礎表示形式 (IR) 的訪問權限的 API。一家公司使用此 API 查找用于處理硬件錯誤的自定義習慣用法的沖突。

此 API 也可用于其他程序分析任務。例如,一家醫療設備公司主要使用一種工具,不僅識別其代碼中的潛在任務問題,而且還發出允許他們交互式探索堆棧配置屬性的信息。其他應用程序包括收集代碼的自定義指標和生成程序可視化工具的輸入。

可以使用訪問者模式編寫許多檢查 - 該函數作為給定類型的每個 IR 元素的回調調用??梢詾榭刂屏鲌D和語法樹中的文件、標識符、子程序和節點定義訪問者。訪問者的接口允許與構造進行模式匹配。

CodeSonar具有一種特殊的訪問者類型,在控制流圖的路徑探索期間調用該訪問者。這允許檢查器作者編寫復雜的檢查,以利用該工具的內置路徑敏感程序分析功能。這種檢查器的一個關鍵方面是它使用分析部分,消除了對不可行路徑的探索,這會自動降低誤報結果的概率。

提高軟件質量

先進的靜態分析工具已成為軟件開發人員必不可少的工具,因為它們能夠發現嚴重的安全和安全缺陷。創作自定義檢查器是提高這些工具有效性的低成本方法。

審核編輯:郭婷

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

    關注

    2

    文章

    2376

    瀏覽量

    66806
  • 編譯器
    +關注

    關注

    1

    文章

    1672

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    什么是位

    數據結構,稱為“位”或“位段”。 所謂“位”是把一個字節中的二進位劃分為幾個不同的區域,并說明每個區域的位數。 每個有一個域名,允許在程序中按域名進行操作。這樣就可以把幾個不
    發表于 12-15 08:07

    如何用泰克示波器進行眼圖分析

    在現代高速數字通信系統中,眼圖分析是評估信號完整性和傳輸質量的核心工具。泰克示波器憑借其高精度和豐富的分析功能,成為工程師進行眼圖測試的首選設備。本文將詳細介紹使用泰克示波器進行眼圖
    的頭像 發表于 12-10 17:26 ?1159次閱讀
    如何用泰克示波器<b class='flag-5'>進行</b>眼圖<b class='flag-5'>分析</b>

    經營數據分析可以通過哪些方式

    在數聚股份看來,提起經營數據分析,大家往往會聯想到一些密密麻麻的數字表格,或是高級的數據建模手法,再或是華麗的數據報表。其實,“ 分析 ”本身是每個人都具備的能力,對于業務決策者而言,則需要掌握一套
    的頭像 發表于 12-05 16:31 ?640次閱讀

    解讀

    ,并且你能夠指定每個區域的位數。每個有一個域名,并允許程序中按域名進行單獨操作。 使用位的做法是在結構體定義的時候,在結構體成員后面使用冒號(:)和數字來表示該成員所占的位數
    發表于 12-05 06:45

    芯片制造檢驗工藝中的全數檢查

    在IC芯片制造的檢驗工藝中,全數檢查原則貫穿于關鍵工序的缺陷篩查,而老化測試作為可靠性驗證的核心手段,通過高溫高壓環境加速潛在缺陷的暴露,確保芯片在生命周期內的穩定運行。以邏輯芯片與存儲器芯片的測試
    的頭像 發表于 12-03 16:55 ?868次閱讀
    芯片制造檢驗工藝中的全數<b class='flag-5'>檢查</b>

    程序運行慢,是否需檢查算法時間復雜度過高?

    程序運行慢,需檢查算法時間復雜度是否過高
    發表于 11-17 08:08

    什么是CVE?如何通過SAST/靜態分析工具Perforce QAC 和 Klocwork應對CVE?

    本文將為您詳解什么是CVE、CVE標識符的作用,厘清CVE與CWE、CVSS的區別,介紹CVE清單內容,并說明如何借助合適的靜態分析工具(如Perforce QAC/Klocwork),在軟件開發早期發現并修復漏洞。
    的頭像 發表于 10-31 14:24 ?541次閱讀
    什么是CVE?如何<b class='flag-5'>通過</b>SAST/<b class='flag-5'>靜態</b><b class='flag-5'>分析</b>工具Perforce QAC 和 Klocwork應對CVE?

    如何在Zephyr中進行靜態代碼分析

    在嵌入式軟件開發中,“能編譯通過”并不等于“可以放心交付”。安全性、可靠性和合規性是產品能否順利量產的關鍵。進入量產的Bug會浪費寶貴的工程時間,也會削弱用戶信任;安全漏洞可能暴露設備,帶來嚴重后果;在受監管市場中,若未滿足MISRA或CERT檢查要求,甚至會直接導致產品
    的頭像 發表于 10-17 10:28 ?881次閱讀

    知識分享 | 使用MXAM進行AUTOSAR模型的靜態分析:Embedded Coder與TargetLink模型

    知識分享在知識分享欄目中,我們會定期與讀者分享來自MES模賽思的基于模型的軟件開發相關Know-How干貨,關注公眾號,隨時掌握基于模型的軟件設計的技術知識。使用MXAM進行AUTOSAR模型的靜態
    的頭像 發表于 08-27 10:04 ?738次閱讀
    知識分享 | 使用MXAM<b class='flag-5'>進行</b>AUTOSAR模型的<b class='flag-5'>靜態</b><b class='flag-5'>分析</b>:Embedded Coder與TargetLink模型

    如何在嵌入式RF測試中實施多信號分析

    射頻(RF)測試是嵌入式系統開發與驗證中的關鍵環節,尤其是在電信、航空航天、汽車以及物聯網等行業。隨著嵌入式系統的日益復雜,傳統RF測試方法往往難以捕捉多個(時間、頻率、數字)信號之間的復雜相互作用。多信號
    的頭像 發表于 08-15 16:32 ?2877次閱讀
    如何在嵌入式RF測試中實施多<b class='flag-5'>域</b>信號<b class='flag-5'>分析</b>

    知識分享 | MXAM入門簡介:使用MXAM進行靜態測試

    在汽車和自動化行業中,從事基于模型的開發(MBD)的工程師致力于在保證模型質量的同時保證模型高效。在這一背景下,應用適當的建模工具十分關鍵。合適的工具不僅可以通過建模標準檢查分析和測試模型質量
    的頭像 發表于 07-23 17:09 ?1621次閱讀
    知識分享 | MXAM入門簡介:使用MXAM<b class='flag-5'>進行</b><b class='flag-5'>靜態</b>測試

    協議分析儀支持哪些高級觸發選項?

    協議分析儀支持多種高級觸發選項,這些選項通過靈活組合協議字段、邏輯運算和時序控制,可實現復雜場景下的精準數據捕獲,以下是具體分類與說明:一、基于協議字段的高級觸發 精確匹配觸發 功能
    發表于 07-23 14:21

    技術資訊 I PCB 設計完成后進行哪些檢查可以有效避免功虧一簣?

    只有當PCB設計完整呈現了成功組裝所需的全部信息時,設計才算真正完成。即便電路板已完成布線,仍需進行檢查與復核,以確保PCB能夠正確組裝。針對PCB設計中無法通過設計規則來定義的內容,則必須通過
    的頭像 發表于 07-18 18:21 ?1839次閱讀
    技術資訊 I PCB 設計完成后<b class='flag-5'>進行</b>哪些<b class='flag-5'>檢查</b>可以有效避免功虧一簣?

    普源示波器高級觸發功能案例分析

    一、引言 在電子測量領域,示波器的觸發功能如同“信號捕手”,決定著波形捕獲的精準度與效率。普源示波器(如DHO1204U、MSO5000系列等)不僅具備基礎觸發模式(邊沿觸發、脈沖觸發等),更通過高級
    的頭像 發表于 05-29 09:36 ?637次閱讀

    如何操作時域網絡分析進行故障檢測?

    = 10 ns,v = 0.66c,則d ≈ 0.66 × 3×10? × 10×10?? / 2 = 0.99 m。 3. 高級分析技術 時域門控(Time Gating): 選擇特定時間窗口
    發表于 04-30 14:15