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

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

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

利用GCC插件實(shí)現(xiàn)代碼分析和安全審計(jì)

zz愛尚科技 ? 來源:zz愛尚科技 ? 作者:zz愛尚科技 ? 2022-10-13 14:00 ? 次閱讀

利用GCC插件實(shí)現(xiàn)代碼分析和安全審計(jì)

GCC 4.5.0開始引入的一項(xiàng)插件功能,允許用戶通過插件來干預(yù)GCC的編譯過程,獲取到GCC編譯過程中的各種數(shù)據(jù),甚至可以修改編譯過程中生成的中間數(shù)據(jù),從而達(dá)到修改最終生成的二進(jìn)制文件行為的目的(注:特別需要注意的是GCC-Plugin的API是會(huì)隨版本變化的)。此特性從程序員的角度來看,就相當(dāng)于把原來GCC的黑盒編譯過程一下子打開了,GCC編譯的過程數(shù)據(jù)可以“大白于天下”,可以清清楚楚的看個(gè)夠。

下圖為GCC編譯架構(gòu)****

image.png

GCC編譯過程與插件的交互流程

image.png

注:圖引自DragonEgg 在"Reimplementing llvm-gcc as a gcc plugin"

開源GCC插件列表**** (來自https://gcc.gnu.org/wiki/plugins):

image.png

基于GCC此插件特性,從安全測(cè)試的角度來看,可以用它來干什么呢?

A.可以把GCC編譯過程的內(nèi)部數(shù)據(jù)結(jié)構(gòu)圖形化,方便分析應(yīng)用程序。****

圖形化對(duì)象可以是控制流圖、函數(shù)調(diào)用圖、支配圖、Tree結(jié)構(gòu)、Gimple結(jié)構(gòu)、RTX結(jié)構(gòu)、Pass列表等等。

下圖是Gimple層次圖**** :

image.png

B、 利用可以修改中間數(shù)據(jù)的能力,可以不用修改源代碼就能添加新功能的功能,從而實(shí)現(xiàn)動(dòng)態(tài)安全分析、安全加固的能力。

在安全測(cè)試中為了監(jiān)控程序執(zhí)行路徑情況,需要通過動(dòng)態(tài)插裝來實(shí)現(xiàn),常見的插裝工具有Pin、Dynamo,但這些動(dòng)態(tài)插裝會(huì)對(duì)程序的運(yùn)行性能產(chǎn)生影響,降低程序運(yùn)行效率,嚴(yán)重的會(huì)導(dǎo)致程序不能正常運(yùn)行。但如果能預(yù)先在目標(biāo)程序中把插裝代碼編譯進(jìn)去,這樣既兼顧到性能,有兼顧到實(shí)現(xiàn)插裝的目的,一般要實(shí)現(xiàn)這個(gè)目的都是在源代碼層面由開發(fā)人員增加插裝代碼,但增加的代碼只是為了測(cè)試的目的,在實(shí)際發(fā)布版本中是不需要的,因此直接在源代碼層面增加插裝代碼就給代碼維護(hù)帶來的不便,但如果我們應(yīng)用GCC編譯器的插件能力,在編譯構(gòu)建過程中自動(dòng)添加插裝代碼到最終生成的二進(jìn)制文件中,這樣只需根據(jù)需要重新編譯就能得到不同目的的應(yīng)用程序而不需要修改任何一行源代碼,既增加插裝代碼的動(dòng)作對(duì)上層是透明的。

基于上述在編譯過程中自動(dòng)增加插裝代碼,可以實(shí)現(xiàn)對(duì)測(cè)試活動(dòng)的度量和提升測(cè)試效率,比如測(cè)試時(shí)代碼覆蓋率的統(tǒng)計(jì)與度量,基于執(zhí)行路徑來優(yōu)化測(cè)試用例提升fuzz效率等等功能。

總結(jié):

利用GCC的插件功能,可以利用編譯過程中的內(nèi)部數(shù)據(jù)來幫助安全分析人員對(duì)程序進(jìn)行安全分析和安全加固等事情,提升程序分析效率和分析精準(zhǔn)度。

審核編輯:湯梓紅

聲明:本文內(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)投訴
  • GCC
    GCC
    +關(guān)注

    關(guān)注

    0

    文章

    105

    瀏覽量

    24797
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4697

    瀏覽量

    68095
  • 插件
    +關(guān)注

    關(guān)注

    0

    文章

    319

    瀏覽量

    22377
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    數(shù)據(jù)庫安全審計(jì)系統(tǒng):筑牢數(shù)據(jù)安全防線 提高數(shù)據(jù)資產(chǎn)安全

    隨著萬物互聯(lián)的技術(shù)演進(jìn),以及數(shù)字化轉(zhuǎn)型的快速發(fā)展,數(shù)據(jù)庫成為最具有戰(zhàn)略性的數(shù)字資產(chǎn)載體,保障數(shù)據(jù)庫安全也就保障了存儲(chǔ)其中的數(shù)據(jù)安全,數(shù)據(jù)庫安全審計(jì)是對(duì)數(shù)據(jù)庫“增、刪、改、查”具體操作的
    的頭像 發(fā)表于 07-17 13:38 ?632次閱讀

    數(shù)據(jù)庫安全審計(jì)系統(tǒng):滿足數(shù)據(jù)安全治理合規(guī)要求

    伴隨著數(shù)據(jù)庫信息價(jià)值以及可訪問性提升,使得數(shù)據(jù)庫面對(duì)來自內(nèi)部和外部的安全風(fēng)險(xiǎn)大大增加,如違規(guī)越權(quán)操作、惡意入侵導(dǎo)致機(jī)密信息竊取泄漏,但事后卻無法有效追溯和審計(jì)。 國內(nèi)專注于保密與非密領(lǐng)域的分級(jí)保護(hù)
    的頭像 發(fā)表于 07-04 13:04 ?218次閱讀

    安全服務(wù)加密存儲(chǔ)代碼怎么查

    安全服務(wù)加密存儲(chǔ)代碼的查詢與實(shí)現(xiàn)是一個(gè)復(fù)雜的過程,涉及到多個(gè)方面,包括數(shù)據(jù)加密、密鑰管理、訪問控制等。 1. 引言 隨著云計(jì)算的快速發(fā)展,越來越多的企業(yè)和個(gè)人將數(shù)據(jù)存儲(chǔ)在云端。然而,數(shù)據(jù)安全
    的頭像 發(fā)表于 07-02 09:28 ?273次閱讀

    利用Swap模式實(shí)現(xiàn)代碼回滾操作

    前面介紹了MCUboot的基礎(chǔ)知識(shí),您可通過上方鏈接回顧歷史文章,上次介紹了Swap模式,本次著重介紹利用Swap模式實(shí)現(xiàn)代碼回滾操作。在某些應(yīng)用場(chǎng)景中,可能新版本的Firmware存在bug而需要返回至上一次的固件。
    的頭像 發(fā)表于 06-19 15:45 ?1065次閱讀
    <b class='flag-5'>利用</b>Swap模式<b class='flag-5'>實(shí)現(xiàn)代碼</b>回滾操作

    在ILLD庫中調(diào)試發(fā)送通信的代碼時(shí),發(fā)現(xiàn)代碼在這兩個(gè)地方循環(huán),但沒有讀取發(fā)送的數(shù)據(jù),為什么?

    我在 ILLD 庫中調(diào)試發(fā)送通信的代碼時(shí),發(fā)現(xiàn)代碼在這兩個(gè)地方循環(huán),但沒有讀取發(fā)送的數(shù)據(jù)。 請(qǐng)幫助分析一下原因?
    發(fā)表于 05-24 08:00

    芯海 32 位 MCU 開發(fā)調(diào)試 ,基于 VS Code 插件實(shí)現(xiàn)芯海 32 位 MCU 開發(fā)調(diào)試

    編譯/鏈接等腳本語法,只需要簡單配置參數(shù)、新建工程、增加代碼文件后,就可以開始編譯 和調(diào)試了。如果要生成靜態(tài)庫文件也只需要修改輸出格式,再編譯就可能生成.a 的文件。*附件:基于VSCode插件實(shí)現(xiàn)芯海32位MCU開發(fā)調(diào)試.pd
    發(fā)表于 05-16 10:46

    知語云全景監(jiān)測(cè)技術(shù):現(xiàn)代安全防護(hù)的全面解決方案

    可以幫助實(shí)現(xiàn)政務(wù)數(shù)據(jù)的安全保護(hù),防止敏感信息泄露;對(duì)于個(gè)人用戶而言,知語云全景監(jiān)測(cè)技術(shù)可以提供更加全面的網(wǎng)絡(luò)安全保護(hù),防范網(wǎng)絡(luò)釣魚、惡意軟件等安全威脅。 總之,知語云全景監(jiān)測(cè)技術(shù)作為
    發(fā)表于 02-23 16:40

    Embedded office發(fā)布安全插件V1.1版本!

    Embedded office很高興地宣布安全插件V1.1版本的發(fā)布了!現(xiàn)在通過外部設(shè)備或不同核心架構(gòu)的專門通道支持端到端受保護(hù)的安全通信。
    的頭像 發(fā)表于 02-20 11:12 ?523次閱讀

    代碼審計(jì)怎么做?有哪些常用工具

    代碼審計(jì)是一種通過檢查源代碼來發(fā)現(xiàn)潛在的安全漏洞的方法。 下面是常用的源代碼審計(jì)工具: 1、F
    發(fā)表于 01-17 09:35

    工業(yè)互聯(lián)網(wǎng)安全管控與審計(jì)系統(tǒng)“保障”工控系統(tǒng)網(wǎng)絡(luò)安全

    %攀升至2025年的55%。 ? 由國聯(lián)易安的研究團(tuán)隊(duì)自主研發(fā)的工業(yè)互聯(lián)網(wǎng)安全審計(jì)系統(tǒng)從管理層面提供工業(yè)互聯(lián)網(wǎng)安全性的有效監(jiān)管,實(shí)現(xiàn)對(duì)工業(yè)控制系統(tǒng)的
    的頭像 發(fā)表于 01-15 17:34 ?457次閱讀
    工業(yè)互聯(lián)網(wǎng)<b class='flag-5'>安全</b>管控與<b class='flag-5'>審計(jì)</b>系統(tǒng)“保障”工控系統(tǒng)網(wǎng)絡(luò)<b class='flag-5'>安全</b>

    首批!中軟國際四款審計(jì)產(chǎn)品入選“高質(zhì)量智能審計(jì)工具目錄”

    ? ? 在中國信通院組織的智能審計(jì)工具能力驗(yàn)證權(quán)威評(píng)估中, 中軟國際智審工具、審計(jì)智搜、協(xié)同文書編輯工具、非結(jié)構(gòu)化數(shù)據(jù)分析工具等四款審計(jì)產(chǎn)品順利通過檢驗(yàn) , 以突出的技術(shù)能力成功入選
    的頭像 發(fā)表于 12-16 16:10 ?969次閱讀

    中軟國際企業(yè)審計(jì)解決方案獲得華為云聯(lián)合基線解決方案認(rèn)證,共同推進(jìn)“科技強(qiáng)審”建設(shè)

    ,長期秉持高質(zhì)量服務(wù)客戶、共建共贏的合作理念,得到了行業(yè)專家、客戶的高度認(rèn)可。此次聯(lián)合基線解決方案的發(fā)布,將加速深化審計(jì)數(shù)字化和治理現(xiàn)代化,進(jìn)一步夯實(shí)了科技強(qiáng)審、數(shù)據(jù)先行的國家戰(zhàn)略。 打造基線解決方案商業(yè)價(jià)值 華為
    的頭像 發(fā)表于 12-13 16:05 ?439次閱讀

    工字插件電感引腳破損的常見原因分析

    工字插件電感是一種應(yīng)用非常廣泛的電感產(chǎn)品,大家在使用工字插件電感的時(shí)候會(huì)遇到很多問題,比如選型的問題,或者是使用中出現(xiàn)的一些其他異常問題等。本篇我們來分析一個(gè)比較常見的問題——引腳破損!
    發(fā)表于 11-13 16:42 ?3次下載

    AbsInt—確保代碼安全的靜態(tài)性能分析工具

    德國AbsInt公司是專注于安全苛求軟件研發(fā)、確認(rèn)、驗(yàn)證和認(rèn)證的工具鏈供應(yīng)商,能夠?yàn)榭蛻籼峁┩暾拇_保代碼安全的性能分析工具套件以及軟件分析
    的頭像 發(fā)表于 11-08 11:15 ?408次閱讀
    AbsInt—確保<b class='flag-5'>代碼</b><b class='flag-5'>安全</b>的靜態(tài)性能<b class='flag-5'>分析</b>工具

    安全驅(qū)動(dòng)示例代碼實(shí)現(xiàn)

    示例代碼獲取和集成 本示例中的驅(qū)動(dòng)只實(shí)現(xiàn)了對(duì)內(nèi)存的讀寫操作,并提供了測(cè)試使用的TA和CA。 讀者可使用如下指令從GitHub上獲取到示例源代碼: git clone https
    的頭像 發(fā)表于 10-30 16:07 ?570次閱讀
    <b class='flag-5'>安全</b>驅(qū)動(dòng)示例<b class='flag-5'>代碼</b>和<b class='flag-5'>實(shí)現(xiàn)</b>