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

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

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

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

鑒源實(shí)驗(yàn)室·代碼缺陷檢查中的數(shù)據(jù)流分析技術(shù)

上海控安 ? 來(lái)源:上海控安 ? 作者:上海控安 ? 2025-02-19 14:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者 | 甘智杰上海控安可信軟件創(chuàng)新研究院 鑒源實(shí)驗(yàn)室

在軟件開(kāi)發(fā)的測(cè)試與維護(hù)階段,代碼缺陷的早期檢測(cè)能顯著降低修復(fù)成本。傳統(tǒng)靜態(tài)檢查工具(如語(yǔ)法規(guī)則匹配)常因缺乏對(duì)程序運(yùn)行邏輯的建模,導(dǎo)致高誤報(bào)率或漏檢風(fēng)險(xiǎn)。數(shù)據(jù)流分析(Data Flow Analysis, DFA)通過(guò)追蹤變量狀態(tài)在程序執(zhí)行路徑中的傳播過(guò)程,為精準(zhǔn)識(shí)別空指針引用、資源泄漏等隱蔽缺陷提供了系統(tǒng)性解決方案。

01

數(shù)據(jù)流分析的基本原理

1.1 定義與目標(biāo)

數(shù)據(jù)流分析屬于靜態(tài)程序分析的子領(lǐng)域,其核心目標(biāo)是通過(guò)抽象程序執(zhí)行時(shí)的數(shù)據(jù)狀態(tài)變化,推斷程序中每個(gè)可達(dá)點(diǎn)的變量屬性(如是否為空、是否已初始化)。與動(dòng)態(tài)測(cè)試不同,數(shù)據(jù)流分析無(wú)需實(shí)際運(yùn)行代碼,即可模擬所有可能的執(zhí)行路徑。

1.2 工作流程

1. 控制流圖(CFG)構(gòu)建:將代碼轉(zhuǎn)換為由基本塊(Basic Block)和跳轉(zhuǎn)邊組成的圖結(jié)構(gòu),每個(gè)基本塊表示一組順序執(zhí)行的語(yǔ)句。

2. 狀態(tài)轉(zhuǎn)移方程定義:針對(duì)特定缺陷模式(如空指針),設(shè)計(jì)變量狀態(tài)在基本塊間的傳播規(guī)則。

3. 迭代求解:通過(guò)定點(diǎn)迭代算法,計(jì)算每個(gè)程序點(diǎn)的變量狀態(tài)集合。

1.3 基本思想

在實(shí)現(xiàn)層面,數(shù)據(jù)流分析往往會(huì)在程序各點(diǎn)構(gòu)造約束并迭代求解,通常采用以下思路進(jìn)行構(gòu)建:

1. 抽象程序:將程序劃分為若干基本塊,建立控制流圖;

2. 初始信息:在程序入口點(diǎn)或某些邊界(如函數(shù)入口、出口)賦予初始分析信息(如變量初始狀態(tài));

3. 傳遞函數(shù):在基本塊內(nèi)根據(jù)代碼語(yǔ)義確定如何轉(zhuǎn)移狀態(tài)(例如 x = y + 1 會(huì)影響 x 的值域);

4. 迭代求解:沿著控制流圖迭代傳播,直到各個(gè)基本塊的分析信息都趨于穩(wěn)定(不再發(fā)生變化)。

5. 缺陷檢測(cè):對(duì)分析結(jié)果進(jìn)行檢查,根據(jù)預(yù)先設(shè)定的規(guī)則或警告條件(如“變量從未初始化卻被使用”),識(shí)別可能的缺陷。

02

技術(shù)實(shí)現(xiàn)的關(guān)鍵維度

2.1 分析方向

· 正向分析(Forward Analysis):從程序入口開(kāi)始,沿控制流方向推導(dǎo)變量狀態(tài),適用于分析變量初始化問(wèn)題。

· 逆向分析(Backward Analysis):從程序出口或特定缺陷點(diǎn)反向推導(dǎo),常用于檢測(cè)未釋放的資源(如文件句柄)。

2.2 敏感度類型

· 流敏感(Flow-Sensitive):考慮語(yǔ)句執(zhí)行順序?qū)顟B(tài)的影響。

· 路徑敏感(Path-Sensitive):區(qū)分不同條件分支下的狀態(tài)分支,減少誤報(bào)(如對(duì)if-else不同分支分別建模)。

· 上下文敏感(Context-Sensitive):在函數(shù)調(diào)用時(shí)區(qū)分不同調(diào)用上下文,避免過(guò)程間分析的精度損失。

03

數(shù)據(jù)流分析在代碼缺陷檢查中的應(yīng)用示例

下面通過(guò)一個(gè)簡(jiǎn)化的示例來(lái)說(shuō)明數(shù)據(jù)流分析如何幫助發(fā)現(xiàn)代碼中的缺陷。假設(shè)我們有一個(gè)用C語(yǔ)言編寫的函數(shù),用于處理用戶輸入的字符串并將其拷貝到目標(biāo)緩沖區(qū)中進(jìn)行后續(xù)處理。

wKgZPGe1ev6AVgfUAAKsxLeXZnc773.png

3.1 分析目標(biāo)

這段示例代碼中,我們可以通過(guò)數(shù)據(jù)流分析發(fā)現(xiàn)以下可能的缺陷或問(wèn)題:

1. 緩沖區(qū)使用邊界:當(dāng) userInput 的長(zhǎng)度大于等于 8 時(shí),是否會(huì)發(fā)生溢出?

2. 指針值有效性:userInput 是否可能為空?如若為空則會(huì)引起空指針引用。

3. 字符串截?cái)啵?/strong>在使用 strncpy 后,是否保證了緩沖區(qū)尾部有 '' 終止符?

3.2生成控制流圖并進(jìn)行數(shù)據(jù)流分析

1. 控制流圖劃分

· 基本塊A:聲明 buffer,計(jì)算 length;

· 分支判斷:length < BUF_SIZE;

· 基本塊B:執(zhí)行 strcpy(buffer, userInput);;

· 基本塊C:執(zhí)行 strncpy(buffer, userInput, BUF_SIZE - 1); buffer[BUF_SIZE - 1] = '';;

· 基本塊D:打印并返回。

2. 前向分析示例

· 初始信息:假設(shè) userInput 可以來(lái)源于任何長(zhǎng)度(包括空字符串、過(guò)長(zhǎng)字符串)以及可能為 NULL。

· 在基本塊A中,length = strlen(userInput) 得到的 length 值域未知,但會(huì)與 BUF_SIZE 比較。

· 當(dāng)條件 length < 8 為真時(shí),程序會(huì)調(diào)用 strcpy。若 userInput 的長(zhǎng)度確實(shí)小于8,則 strcpy 是安全的;反之則可能引發(fā)溢出。數(shù)據(jù)流分析可以在此捕獲到“如果輸入長(zhǎng)度大于等于8但仍走到這個(gè)分支,那么調(diào)用 strcpy 會(huì)導(dǎo)致潛在的緩沖區(qū)溢出”。

· 當(dāng)條件 length < 8 為假時(shí),程序會(huì)調(diào)用 strncpy 并手動(dòng)添加 ''。在此路徑中,如果 userInput 恰好是長(zhǎng)度8的字符串,strncpy 會(huì)將前7個(gè)字符拷貝并加上 '',相對(duì)安全。但仍需分析輸入為 NULL 的情況。

3. 發(fā)現(xiàn)缺陷

· 如果在實(shí)際代碼邏輯中由于某些復(fù)雜條件或拼接錯(cuò)誤導(dǎo)致 length 判斷出錯(cuò)(或者分支條件被其他因素干擾),執(zhí)行了 strcpy,則可能發(fā)生溢出。

· 如果 userInput 為 NULL,調(diào)用 strlen 和后續(xù)函數(shù)也會(huì)崩潰。

· 好的實(shí)踐應(yīng)當(dāng)在進(jìn)入函數(shù)時(shí)先檢查 userInput 是否為 NULL,并在后續(xù)操作時(shí)嚴(yán)格確保 length 小于緩沖區(qū)大小或使用更安全的函數(shù)(如 snprintf 等)。

04

挑戰(zhàn)與優(yōu)化方向

4.1精度與效率的權(quán)衡

路徑敏感分析易導(dǎo)致“路徑爆炸”,尤其對(duì)包含循環(huán)或遞歸的代碼。工程中常采用摘要(Summary)技術(shù)壓縮重復(fù)計(jì)算(如函數(shù)調(diào)用的上下文合并)。

4.2 動(dòng)態(tài)特性的處理

面對(duì)多態(tài)、反射等動(dòng)態(tài)語(yǔ)言特性,需引入保守假設(shè)(如認(rèn)為反射調(diào)用的對(duì)象可能為任意類型),可能導(dǎo)致分析結(jié)果過(guò)近似。

4.3 機(jī)器學(xué)習(xí)輔助優(yōu)化

近年研究嘗試使用機(jī)器學(xué)習(xí)預(yù)測(cè)關(guān)鍵分析參數(shù)(如循環(huán)迭代次數(shù)上限),或通過(guò)模式識(shí)別減少冗余計(jì)算。例如,F(xiàn)acebook的Infer工具結(jié)合符號(hào)執(zhí)行提升路徑敏感的實(shí)用性。

05

結(jié) 語(yǔ)

數(shù)據(jù)流分析通過(guò)形式化建模程序行為,為代碼缺陷檢查提供了理論嚴(yán)謹(jǐn)?shù)慕鉀Q方案。盡管面臨路徑敏感性和可擴(kuò)展性等挑戰(zhàn),隨著符號(hào)執(zhí)行、AI輔助等技術(shù)的融合,其實(shí)用性將持續(xù)增強(qiáng)。

上海控安針對(duì)嵌入式軟件安全測(cè)試需求,推出集靜態(tài)分析、單元測(cè)試、集成測(cè)試于一體的軟件智能測(cè)試一體化工具——SmartRocket TestGrid 嵌入式軟件自動(dòng)化測(cè)試平臺(tái),支持不同等級(jí)的結(jié)構(gòu)化覆蓋測(cè)試要求,并對(duì)目標(biāo)及環(huán)境進(jìn)行適配。工具遵循GJB8 114、GJB 5369、GJB-Z-141、GJB 438B/C以及GJB 5000等標(biāo)準(zhǔn)。能夠全面覆蓋軟件測(cè)試的各個(gè)階段,包括測(cè)試策劃、測(cè)試設(shè)計(jì)和實(shí)現(xiàn)、測(cè)試執(zhí)行以及測(cè)試總結(jié)。其靜態(tài)分析功能作為靜態(tài)分析領(lǐng)域的前沿工具,深度融合上下文敏感與路徑敏感的數(shù)據(jù)流分析技術(shù),在保證執(zhí)行效率的同時(shí)顯著提升缺陷檢測(cè)精度。通過(guò)構(gòu)建跨函數(shù)邊界的變量狀態(tài)傳播模型,TestGrid可精準(zhǔn)識(shí)別C/C++語(yǔ)言中由復(fù)雜控制流導(dǎo)致的空指針異常、資源泄漏等問(wèn)題,助力開(kāi)發(fā)者快速定位缺陷位置,確保軟件的功能安全。

wKgZPGe1exaAc0JCACs-YSEi8tQ518.png

SmartRocket TestGrid

嵌入式軟件自動(dòng)化測(cè)試平臺(tái)

通過(guò)運(yùn)用先進(jìn)的測(cè)試技術(shù)和方法,自動(dòng)化和簡(jiǎn)化測(cè)試流程,進(jìn)一步保障了軟件開(kāi)發(fā)過(guò)程中的高可靠性、高安全性和高實(shí)時(shí)性。


審核編輯 黃宇

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

    關(guān)注

    30

    文章

    4968

    瀏覽量

    73982
  • 數(shù)據(jù)流
    +關(guān)注

    關(guān)注

    0

    文章

    129

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    實(shí)驗(yàn)室·基于MQTT協(xié)議的模糊測(cè)試研究

    作者 |? 張淵策?上海控安可信軟件創(chuàng)新研究院工控網(wǎng)絡(luò)安全組 來(lái)源 | ?實(shí)驗(yàn)室 社群 | ?添加微信號(hào)“ TICPShanghai ”加入“上海控安51fusa安全社區(qū)” 隨著物聯(lián)網(wǎng)技術(shù)
    的頭像 發(fā)表于 07-30 15:21 ?1557次閱讀
    <b class='flag-5'>鑒</b><b class='flag-5'>源</b><b class='flag-5'>實(shí)驗(yàn)室</b>·基于MQTT協(xié)議的模糊測(cè)試研究

    實(shí)驗(yàn)室整體解決方案是什么?

    服務(wù)三部分。創(chuàng)盟是中國(guó)首家提出實(shí)驗(yàn)室整體解決方案這一概念的公司。如需了解更多實(shí)驗(yàn)室相關(guān)信息請(qǐng)聯(lián)系蘇州創(chuàng)盟實(shí)驗(yàn)室
    發(fā)表于 08-11 10:34

    [封裝失效分析系列之一] 封裝級(jí)別失效分析實(shí)驗(yàn)室

    以往經(jīng)驗(yàn),一個(gè)較完善的自有實(shí)驗(yàn)室完全可以解決掉大約95%的案子。那么什么樣的失效分析實(shí)驗(yàn)室才是合格的呢?光有好設(shè)備是不夠的,還要有像樣的技術(shù)和配套的管理,也就是失效
    發(fā)表于 07-18 22:29

    Kilby實(shí)驗(yàn)室大揭秘

    達(dá)拉斯、硅谷和印度分別設(shè)立了Kilby實(shí)驗(yàn)室,以延續(xù)這種創(chuàng)新。Kilby實(shí)驗(yàn)室的創(chuàng)新者對(duì)他們的項(xiàng)目會(huì)進(jìn)行嚴(yán)格檢查分析,當(dāng)Kilby實(shí)驗(yàn)室
    發(fā)表于 07-16 04:45

    嵌入式C語(yǔ)言程序軟件缺陷怎么查找?

    基于模式的靜態(tài)代碼分析、運(yùn)行時(shí)內(nèi)存監(jiān)測(cè)、單元測(cè)試以及數(shù)據(jù)流分析等軟件驗(yàn)證技術(shù)是查找嵌入式C語(yǔ)言程序/軟件
    發(fā)表于 11-04 07:06

    鋰電材料截面制樣-氬離子拋光CP離子研磨 金實(shí)驗(yàn)室分享(下)

    鋰電池正極片氬離子拋光(CP離子研磨)制樣后效果圖(正極片氬離子拋光制樣后效果圖-如上圖所示-金實(shí)驗(yàn)室羅工提供)鋰電池負(fù)極片氬離子拋光(CP離子研磨)制樣后效果圖(負(fù)極片氬離子拋光制樣后效果圖-如上圖所示-金
    發(fā)表于 12-16 15:47

    lims實(shí)驗(yàn)室管理系統(tǒng)是什么?實(shí)驗(yàn)室信息管理系統(tǒng)介紹!

    和相關(guān)信息。此外,您可以更快地產(chǎn)生可靠的結(jié)果,并且可以跟蹤來(lái)自測(cè)序運(yùn)行隨時(shí)間和跨實(shí)驗(yàn)數(shù)據(jù)以提高效率。現(xiàn)代基因組學(xué)產(chǎn)生了前所未有的數(shù)據(jù)量。面對(duì)不斷增加的數(shù)據(jù)量和樣本吞吐量以及
    發(fā)表于 11-03 11:17

    實(shí)驗(yàn)室lims系統(tǒng)解決方案

    在當(dāng)今時(shí)代,大多數(shù)企業(yè)需要存儲(chǔ)大量數(shù)據(jù)才能有效運(yùn)行,而在辛勤工作的實(shí)驗(yàn)室,這一點(diǎn)最為真實(shí)。隨著技術(shù)的進(jìn)步,我們?cè)?b class='flag-5'>實(shí)驗(yàn)室中保存的
    發(fā)表于 11-04 11:18

    基于數(shù)據(jù)流的Java字節(jié)碼分析

    本文基于數(shù)據(jù)流框架理論,提出了如何將數(shù)據(jù)流分析方法應(yīng)用于JAVA 字節(jié)碼,通過(guò)建立數(shù)據(jù)流與半格、數(shù)據(jù)流
    發(fā)表于 12-25 13:22 ?9次下載

    實(shí)驗(yàn)室設(shè)計(jì)指南

    實(shí)驗(yàn)室設(shè)計(jì)指南LBSALE[1000]LBSALE第一章 基礎(chǔ)知識(shí)主要內(nèi)容:實(shí)驗(yàn)室基礎(chǔ)知識(shí)及日常管理實(shí)驗(yàn)室基本操作技術(shù)分析
    發(fā)表于 11-09 15:43 ?1974次閱讀

    高校實(shí)驗(yàn)室綜合管理系統(tǒng):建立一個(gè)安全、智慧、規(guī)范的實(shí)驗(yàn)室

    日,教育部辦公廳發(fā)布《關(guān)于進(jìn)一步加強(qiáng)高校教學(xué)實(shí)驗(yàn)室安全檢查工作的通知》等相關(guān)文件要求,要求學(xué)校建立學(xué)校、二級(jí)單位和實(shí)驗(yàn)室組成的三級(jí)聯(lián)動(dòng)實(shí)驗(yàn)室管理體系;
    發(fā)表于 04-09 09:46 ?1840次閱讀

    廣東金實(shí)驗(yàn)室科技有限公司介紹

    實(shí)驗(yàn)室是一家專注于第三代半導(dǎo)體氮化鎵和碳化硅芯片和器件失效分析的新業(yè)態(tài)的科研檢測(cè)機(jī)構(gòu),具備國(guó)家認(rèn)可及授權(quán)的CMA/CNAS資質(zhì),并且是工信部認(rèn)定的“國(guó)家中小企業(yè)公共服務(wù)示范平臺(tái)”,廣東省工信廳
    發(fā)表于 11-25 17:19 ?2225次閱讀
    廣東金<b class='flag-5'>鑒</b><b class='flag-5'>實(shí)驗(yàn)室</b>科技有限公司介紹

    高精度電流在電子實(shí)驗(yàn)室的應(yīng)用

    高精度電流是一種能夠提供恒定、穩(wěn)定電流輸出的設(shè)備,被廣泛應(yīng)用于電子實(shí)驗(yàn)室。電子實(shí)驗(yàn)室是電子工程師進(jìn)行實(shí)驗(yàn)、測(cè)試和研發(fā)的場(chǎng)所,而高精度電流
    的頭像 發(fā)表于 06-12 09:13 ?1255次閱讀
    高精度電流<b class='flag-5'>源</b>在電子<b class='flag-5'>實(shí)驗(yàn)室</b><b class='flag-5'>中</b>的應(yīng)用

    實(shí)驗(yàn)室協(xié)助鴻利智匯產(chǎn)品順利通過(guò)AEC-Q102認(rèn)證

    實(shí)驗(yàn)室
    的頭像 發(fā)表于 08-18 09:43 ?1547次閱讀
    金<b class='flag-5'>鑒</b><b class='flag-5'>實(shí)驗(yàn)室</b>協(xié)助鴻利智匯產(chǎn)品順利通過(guò)AEC-Q102認(rèn)證

    實(shí)驗(yàn)室·ISO 26262測(cè)試用例的得出方法-等價(jià)類的生成和分析

    作者 | 李偉 上海控安安全測(cè)評(píng)部總監(jiān) 來(lái)源 | ?實(shí)驗(yàn)室 社群 | 添加微信號(hào)“ TICPShanghai ”加入“上海控安51fusa安全社區(qū)” ? 在ISO 26262-6-2018
    的頭像 發(fā)表于 07-30 15:37 ?1611次閱讀
    <b class='flag-5'>鑒</b><b class='flag-5'>源</b><b class='flag-5'>實(shí)驗(yàn)室</b>·ISO 26262<b class='flag-5'>中</b>測(cè)試用例的得出方法-等價(jià)類的生成和<b class='flag-5'>分析</b>