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

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

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

3天內不再提示

鑒源實驗室·代碼缺陷檢查中的數據流分析技術

上海控安 ? 來源:上海控安 ? 作者:上海控安 ? 2025-02-19 14:33 ? 次閱讀

作者 | 甘智杰上海控安可信軟件創新研究院 鑒源實驗室

在軟件開發的測試與維護階段,代碼缺陷的早期檢測能顯著降低修復成本。傳統靜態檢查工具(如語法規則匹配)常因缺乏對程序運行邏輯的建模,導致高誤報率或漏檢風險。數據流分析(Data Flow Analysis, DFA)通過追蹤變量狀態在程序執行路徑中的傳播過程,為精準識別空指針引用、資源泄漏等隱蔽缺陷提供了系統性解決方案。

01

數據流分析的基本原理

1.1 定義與目標

數據流分析屬于靜態程序分析的子領域,其核心目標是通過抽象程序執行時的數據狀態變化,推斷程序中每個可達點的變量屬性(如是否為空、是否已初始化)。與動態測試不同,數據流分析無需實際運行代碼,即可模擬所有可能的執行路徑。

1.2 工作流程

1. 控制流圖(CFG)構建:將代碼轉換為由基本塊(Basic Block)和跳轉邊組成的圖結構,每個基本塊表示一組順序執行的語句。

2. 狀態轉移方程定義:針對特定缺陷模式(如空指針),設計變量狀態在基本塊間的傳播規則。

3. 迭代求解:通過定點迭代算法,計算每個程序點的變量狀態集合。

1.3 基本思想

在實現層面,數據流分析往往會在程序各點構造約束并迭代求解,通常采用以下思路進行構建:

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

2. 初始信息在程序入口點或某些邊界(如函數入口、出口)賦予初始分析信息(如變量初始狀態);

3. 傳遞函數:在基本塊內根據代碼語義確定如何轉移狀態(例如 x = y + 1 會影響 x 的值域);

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

5. 缺陷檢測:對分析結果進行檢查,根據預先設定的規則或警告條件(如“變量從未初始化卻被使用”),識別可能的缺陷。

02

技術實現的關鍵維度

2.1 分析方向

· 正向分析(Forward Analysis):從程序入口開始,沿控制流方向推導變量狀態,適用于分析變量初始化問題。

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

2.2 敏感度類型

· 流敏感(Flow-Sensitive):考慮語句執行順序對狀態的影響。

· 路徑敏感(Path-Sensitive):區分不同條件分支下的狀態分支,減少誤報(如對if-else不同分支分別建模)。

· 上下文敏感(Context-Sensitive):在函數調用時區分不同調用上下文,避免過程間分析的精度損失。

03

數據流分析在代碼缺陷檢查中的應用示例

下面通過一個簡化的示例來說明數據流分析如何幫助發現代碼中的缺陷。假設我們有一個用C語言編寫的函數,用于處理用戶輸入的字符串并將其拷貝到目標緩沖區中進行后續處理。

wKgZPGe1ev6AVgfUAAKsxLeXZnc773.png

3.1 分析目標

這段示例代碼中,我們可以通過數據流分析發現以下可能的缺陷或問題:

1. 緩沖區使用邊界:當 userInput 的長度大于等于 8 時,是否會發生溢出?

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

3. 字符串截斷:在使用 strncpy 后,是否保證了緩沖區尾部有 '' 終止符?

3.2生成控制流圖并進行數據流分析

1. 控制流圖劃分

· 基本塊A:聲明 buffer,計算 length;

· 分支判斷:length < BUF_SIZE;

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

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

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

2. 前向分析示例

· 初始信息:假設 userInput 可以來源于任何長度(包括空字符串、過長字符串)以及可能為 NULL。

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

· 當條件 length < 8 為真時,程序會調用 strcpy。若 userInput 的長度確實小于8,則 strcpy 是安全的;反之則可能引發溢出。數據流分析可以在此捕獲到“如果輸入長度大于等于8但仍走到這個分支,那么調用 strcpy 會導致潛在的緩沖區溢出”。

· 當條件 length < 8 為假時,程序會調用 strncpy 并手動添加 ''。在此路徑中,如果 userInput 恰好是長度8的字符串,strncpy 會將前7個字符拷貝并加上 '',相對安全。但仍需分析輸入為 NULL 的情況。

3. 發現缺陷

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

· 如果 userInput 為 NULL,調用 strlen 和后續函數也會崩潰。

· 好的實踐應當在進入函數時先檢查 userInput 是否為 NULL,并在后續操作時嚴格確保 length 小于緩沖區大小或使用更安全的函數(如 snprintf 等)。

04

挑戰與優化方向

4.1精度與效率的權衡

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

4.2 動態特性的處理

面對多態、反射等動態語言特性,需引入保守假設(如認為反射調用的對象可能為任意類型),可能導致分析結果過近似。

4.3 機器學習輔助優化

近年研究嘗試使用機器學習預測關鍵分析參數(如循環迭代次數上限),或通過模式識別減少冗余計算。例如,Facebook的Infer工具結合符號執行提升路徑敏感的實用性。

05

結 語

數據流分析通過形式化建模程序行為,為代碼缺陷檢查提供了理論嚴謹的解決方案。盡管面臨路徑敏感性和可擴展性等挑戰,隨著符號執行、AI輔助等技術的融合,其實用性將持續增強。

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

wKgZPGe1exaAc0JCACs-YSEi8tQ518.png

SmartRocket TestGrid

嵌入式軟件自動化測試平臺

通過運用先進的測試技術和方法,自動化和簡化測試流程,進一步保障了軟件開發過程中的高可靠性、高安全性和高實時性。


審核編輯 黃宇

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

    關注

    30

    文章

    4846

    瀏覽量

    69268
  • 數據流
    +關注

    關注

    0

    文章

    122

    瀏覽量

    14484
收藏 人收藏

    評論

    相關推薦

    實驗室·基于MQTT協議的模糊測試研究

    作者 |? 張淵策?上海控安可信軟件創新研究院工控網絡安全組 來源 | ?實驗室 社群 | ?添加微信號“ TICPShanghai ”加入“上海控安51fusa安全社區” 隨著物聯網技術
    的頭像 發表于 07-30 15:21 ?717次閱讀
    <b class='flag-5'>鑒</b><b class='flag-5'>源</b><b class='flag-5'>實驗室</b>·基于MQTT協議的模糊測試研究

    實驗室整體解決方案是什么?

    服務三部分。創盟是中國首家提出實驗室整體解決方案這一概念的公司。如需了解更多實驗室相關信息請聯系蘇州創盟實驗室
    發表于 08-11 10:34

    [封裝失效分析系列之一] 封裝級別失效分析實驗室

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

    Kilby實驗室大揭秘

    達拉斯、硅谷和印度分別設立了Kilby實驗室,以延續這種創新。Kilby實驗室的創新者對他們的項目會進行嚴格檢查分析,當Kilby實驗室
    發表于 07-16 04:45

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

    基于模式的靜態代碼分析、運行時內存監測、單元測試以及數據流分析等軟件驗證技術是查找嵌入式C語言程序/軟件
    發表于 11-04 07:06

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

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

    lims實驗室管理系統是什么?實驗室信息管理系統介紹!

    和相關信息。此外,您可以更快地產生可靠的結果,并且可以跟蹤來自測序運行隨時間和跨實驗數據以提高效率。現代基因組學產生了前所未有的數據量。面對不斷增加的數據量和樣本吞吐量以及
    發表于 11-03 11:17

    實驗室lims系統解決方案

    在當今時代,大多數企業需要存儲大量數據才能有效運行,而在辛勤工作的實驗室,這一點最為真實。隨著技術的進步,我們在實驗室中保存的
    發表于 11-04 11:18

    基于數據流的Java字節碼分析

    本文基于數據流框架理論,提出了如何將數據流分析方法應用于JAVA 字節碼,通過建立數據流與半格、數據流
    發表于 12-25 13:22 ?9次下載

    實驗室設計指南

    實驗室設計指南LBSALE[1000]LBSALE第一章 基礎知識主要內容:實驗室基礎知識及日常管理實驗室基本操作技術分析
    發表于 11-09 15:43 ?1671次閱讀

    神鷹?LIMS、小型實驗室解決方案

    的全方位實驗室信息管理系統,它將現代管理思想與網絡技術數據存儲技術、快速數據處理技術、自動化儀
    發表于 04-09 15:08 ?1005次閱讀

    廣東金實驗室科技有限公司介紹

    實驗室是一家專注于第三代半導體氮化鎵和碳化硅芯片和器件失效分析的新業態的科研檢測機構,具備國家認可及授權的CMA/CNAS資質,并且是工信部認定的“國家中小企業公共服務示范平臺”,廣東省工信廳
    發表于 11-25 17:19 ?1876次閱讀
    廣東金<b class='flag-5'>鑒</b><b class='flag-5'>實驗室</b>科技有限公司介紹

    高精度電流在電子實驗室的應用

    高精度電流是一種能夠提供恒定、穩定電流輸出的設備,被廣泛應用于電子實驗室。電子實驗室是電子工程師進行實驗、測試和研發的場所,而高精度電流
    的頭像 發表于 06-12 09:13 ?694次閱讀
    高精度電流<b class='flag-5'>源</b>在電子<b class='flag-5'>實驗室</b><b class='flag-5'>中</b>的應用

    實驗室協助鴻利智匯產品順利通過AEC-Q102認證

    實驗室
    的頭像 發表于 08-18 09:43 ?983次閱讀
    金<b class='flag-5'>鑒</b><b class='flag-5'>實驗室</b>協助鴻利智匯產品順利通過AEC-Q102認證

    實驗室·ISO 26262測試用例的得出方法-等價類的生成和分析

    作者 | 李偉 上海控安安全測評部總監 來源 | ?實驗室 社群 | 添加微信號“ TICPShanghai ”加入“上海控安51fusa安全社區” ? 在ISO 26262-6-2018
    的頭像 發表于 07-30 15:37 ?642次閱讀
    <b class='flag-5'>鑒</b><b class='flag-5'>源</b><b class='flag-5'>實驗室</b>·ISO 26262<b class='flag-5'>中</b>測試用例的得出方法-等價類的生成和<b class='flag-5'>分析</b>
    主站蜘蛛池模板: 国产福利影视 | 国产专区视频 | 日本口工禁漫画无遮挡全彩 | 淫操 | 欧美三级在线 | 性香港xxxxx免费视频播放 | 在线视频 一区二区 | 直接观看黄网站免费视频 | 国模大尺度酒店私拍视频拍拍 | 亚洲xx站| 国产福利资源 | 欧美黄色录像 | 中文天堂 | 欧美30p | 美女网站色黄 | 速度与激情一 | 成年人网站免费观看 | 天天操网 | 四虎永久在线视频 | 人人玩人人弄人人曰 | 男女交性视频播放 视频 视频 | 四虎影院免费在线 | 狠狠色噜噜狠狠狠狠888奇米 | 婷婷激情视频 | 国产黄色大片网站 | 狠狠曹| 国产理论视频在线观看 | 天天干夜夜夜操 | 精品国产_亚洲人成在线高清 | 五月婷婷综合在线 | 人人草人人爱 | 九色九色九色在线综合888 | 女同性进行性行为视频 | 99精品免费视频 | 日日夜夜操操 | 中文一级黄色片 | 女bbbbxxxx视频| 最新色网站 | 手机看片福利日韩国产 | 亚洲大胆精品337p色 | 恨恨操|