靜態(tài)代碼掃描原理

靜態(tài)代碼掃描存在的價(jià)值

  1. 研發(fā)過程,發(fā)現(xiàn)BUG越晚,修復(fù)的成本越大
  2. 缺陷引入的大部分是在編碼階段,但發(fā)現(xiàn)的更多是在單元測試、集成測試、功能測試階段
  3. 統(tǒng)計(jì)證明,在整個(gè)軟件開發(fā)生命周期中,30% 至 70% 的代碼邏輯設(shè)計(jì)和編碼缺陷是可以通過靜態(tài)代碼分析來發(fā)現(xiàn)和修復(fù)的

以上三點(diǎn)證明了,靜態(tài)代碼掃描在整個(gè)安全開發(fā)的流程中起著十分關(guān)鍵的作用,且實(shí)施這件事情的時(shí)間點(diǎn)需要盡量前移,因?yàn)閽呙璧墓?jié)點(diǎn)左移能夠大幅度的降低開發(fā)以及修復(fù)的成本,能夠幫助開發(fā)人減輕開發(fā)和修復(fù)的負(fù)擔(dān),許多公司在推行靜態(tài)代碼掃描工具的時(shí)候會遇到大幅度的阻力,這方面阻力主要來自于開發(fā)人員,由于工具能力的有限性,會產(chǎn)生大量的誤報(bào),這就導(dǎo)致了開發(fā)人員很可能在做BUG確認(rèn)的工作時(shí)花費(fèi)了大量的無用時(shí)間。因此選擇一款合適的靜態(tài)代碼分析工具變得尤為重要,合適的工具能夠真正達(dá)到降低開發(fā)成本的效果。

靜態(tài)代碼分析理論基礎(chǔ)和主要技術(shù)

靜態(tài)代碼分析原理分為兩種:分析源代碼編譯后的中間文件(如Java的字節(jié)碼);分析源文件。主要分析技術(shù)如下:

  • 缺陷模式匹配
    事先從代碼分析經(jīng)驗(yàn)中收集足夠多的共性缺陷模式,將待分析代碼與已有的共性缺陷模式進(jìn)行匹配,從而完成軟件安全分析。優(yōu)點(diǎn):簡單方便;缺點(diǎn):需要內(nèi)置足夠多的缺陷模式,容易產(chǎn)生誤報(bào)。

  • 類型推斷/類型推斷
    類型推斷技術(shù)是指通過對代碼中運(yùn)算對象類型進(jìn)行推理,從而保證代碼中每條語句都針對正確的類型執(zhí)行。

  • 模型檢查
    建立于有限狀態(tài)自動機(jī)的概念基礎(chǔ)上。將每條語句產(chǎn)生的影響抽象為有限狀態(tài)自動機(jī)的一個(gè)狀態(tài),再通過分析有限狀態(tài)機(jī)達(dá)到分析代碼目的。
    校驗(yàn)程序并發(fā)等時(shí)序特性。

  • 數(shù)據(jù)流分析
    從程序代碼中收集程序語義信息,抽象成控制流圖,可以通過控制流圖,不必真實(shí)的運(yùn)行程序,可以分析發(fā)現(xiàn)程序運(yùn)行時(shí)的行為。

靜態(tài)代碼掃描工具

1. Fortify SCA(Source Code Analysis)

網(wǎng)址:http://www.fortify.net/

Fortify Software公司是一家總部位于美國硅谷,致力于提供應(yīng)用軟件安全開發(fā)工具和管理方案的廠商。Fortify為應(yīng)用軟件開發(fā)組織、安全審計(jì)人員和應(yīng)用 安全管理人員提供工具并確立最佳的應(yīng)用軟件安全實(shí)踐和策略,幫助他們在軟件開發(fā)生命周期中花最少的時(shí)間和成本去識別和修復(fù)軟件源代碼中的安全隱患。 Fortify SCA是Fortify360產(chǎn)品套裝中的一部分,它使用fortify公司特有的X-Tier Dataflow? analysis技術(shù)去檢測軟件安全問題。

優(yōu)點(diǎn):全球最大的靜態(tài)代碼檢測廠商,支持語言較多

缺點(diǎn):價(jià)格太過昂貴,性價(jià)比不高

2. Checkmarx CxSuite

網(wǎng)址:https://www.checkmarx.com/

Checkmarx 是以色列的一家高科技軟件公司。它的產(chǎn)品CheckmarxCxSuite專門設(shè)計(jì)為識別、跟蹤和修復(fù)軟件源代碼上的技術(shù)和邏輯方面的安全風(fēng)險(xiǎn)。首創(chuàng)了以查詢語言定位代碼安全問題,其采用獨(dú)特的詞匯分析技術(shù)和CxQL專利查詢技術(shù)來掃描和分析源代碼中的安全漏洞和弱點(diǎn)。

優(yōu)點(diǎn):可以利用CxQL 查詢語言自定義規(guī)則

缺點(diǎn):輸出報(bào)告不夠美觀、語言支持種類不全面,價(jià)格昂貴

3. Coverity

網(wǎng)址:https://scan.coverity.com/

Coverity公司是由一流的斯坦福大學(xué)的科學(xué)家于2002年成立的,產(chǎn)品核心技術(shù)是1998年至2002年在斯坦福大學(xué)計(jì)算機(jī)系統(tǒng)實(shí)驗(yàn)室開發(fā)的,用于解決一個(gè)計(jì)算機(jī)科學(xué)領(lǐng)域最困難的問題,在2003年發(fā)布了第一個(gè)能夠幫助Linux、FreeBSD等開源項(xiàng)目檢測大量關(guān)鍵缺陷的系統(tǒng),Coverity是唯一位列IDC前10名軟件質(zhì)量工具供應(yīng)商的靜態(tài)分析工具廠商,被第三方權(quán)威調(diào)查機(jī)構(gòu)VDC評為靜態(tài)源代碼分析領(lǐng)域的領(lǐng)導(dǎo)者,市場占有率處于絕對領(lǐng)先地位。

優(yōu)點(diǎn):可以檢測二進(jìn)制文件,分析能力較強(qiáng)

缺點(diǎn):價(jià)格昂貴

4. 源傘科技Pinpoint

網(wǎng)址:https://www.sourcebrella.com/

源傘科技公司是香港科技大學(xué)安全實(shí)驗(yàn)室的眾多博士創(chuàng)建的,產(chǎn)品集成了實(shí)驗(yàn)室多年的研究成果,在眾多國際頂級學(xué)術(shù)會議上都發(fā)表了成果論文,在學(xué)術(shù)界有很大的影響。近幾年源傘科技將靜態(tài)代碼檢測產(chǎn)品Pinpoint成功商業(yè)化。目前產(chǎn)品已經(jīng)比較成熟,能夠方便的集成各種安全開發(fā)流程,操作界面流暢。能夠直接掃描JAVA的二進(jìn)制文件,在Java和c/c++兩種語言上的分析能力十分強(qiáng)大,掃描速度普遍快于市面上現(xiàn)有的產(chǎn)品,且擁有眾多國內(nèi)一線互聯(lián)網(wǎng)以及金融公司的安全開發(fā)實(shí)例經(jīng)驗(yàn),不僅能夠輸出工具產(chǎn)品,也能夠提供安全開發(fā)的解決方案。在國內(nèi)靜態(tài)代碼分析領(lǐng)域處于領(lǐng)先地位。

優(yōu)點(diǎn):分析能力強(qiáng),使用方便友好,價(jià)格透明親民

缺點(diǎn):還未支持C#以及OC,目前支持C/C++,Java,Android,JS,PHP,Python,Golang,Sql
為國產(chǎn)靜態(tài)檢測工具源傘科技Pinpoint打Call!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容