【廣告】
代碼審計(jì)有哪些高風(fēng)險(xiǎn)漏洞?
代碼審計(jì)過程中一些常見的高風(fēng)險(xiǎn)漏洞:
1、非邊界檢查函數(shù)(例如,strcpy,sprintf,vsprintf和sscanf)可能導(dǎo)致緩沖區(qū)溢出漏洞
2、可能干擾后續(xù)邊界檢查的緩沖區(qū)的指針操作,例如:if((bytesread = net_read(buf,len))> 0)buf = bytesread;
3、調(diào)用像execve(),執(zhí)行管道,system()和類似的東西,尤其是在使用非靜態(tài)參數(shù)調(diào)用時(shí)
4、輸入驗(yàn)證,例如(在SQL中):statement:=“SELECt * FROM users WHERe name ='” userName “';”是一個(gè)SQL注入漏洞的示例
5、文件包含功能,例如(在PHP中):include($ page。'。php');是遠(yuǎn)程文件包含漏洞的示例
6、對于可能與惡意代碼鏈接的庫,返回對內(nèi)部可變數(shù)據(jù)結(jié)構(gòu)(記錄,數(shù)組)的引用。惡意代碼可能會(huì)嘗試修改結(jié)構(gòu)或保留引用以觀察將來的更改。
商業(yè)化源代碼審計(jì)工具對比
近年來,大部分安全問題來自于應(yīng)用層安全,應(yīng)用層的安全問題主要由軟件源代碼中的安全缺陷所導(dǎo)致。有關(guān)源代碼安全的研究越來越多,源代碼安全成為了解決信息安全問題的一個(gè)重要方向,也是信息安全中的一個(gè)新興領(lǐng)域。
在開發(fā)階段引入代碼檢測解決安全問題的思路開始被很多企業(yè)所認(rèn)可。源代碼檢測屬于程序分析領(lǐng)域,需要具有相關(guān)領(lǐng)域的技術(shù)儲(chǔ)備,很多傳統(tǒng)的安全廠商都沒有相關(guān)的商業(yè)化技術(shù)產(chǎn)品。網(wǎng)上有很多開源的審計(jì)工具,但檢測能力、檢測精度較差,本文結(jié)合多年對源代碼檢測產(chǎn)品的了解,介紹三款較為成熟的商業(yè)化源代碼檢測產(chǎn)品。
Fortify Software公司是一家總部位于美國硅谷,致力于提供應(yīng)用軟件安全開發(fā)工具和管理方案的廠商。Fortify為應(yīng)用軟件開發(fā)組織、安全審計(jì)人員和應(yīng)用安全管理人員提供工具并確立佳的應(yīng)用軟件安全實(shí)踐和策略,幫助他們在軟件開發(fā)生命周期中花少的時(shí)間和成本去識(shí)別和修復(fù)軟件源代碼中的安全隱患。
Checkmarx 是以色列的一家高科技軟件公司。它的產(chǎn)品CheckmarxCxSuite專門設(shè)計(jì)為識(shí)別、跟蹤和修復(fù)軟件源代碼上的技術(shù)和邏輯方面的安全風(fēng)險(xiǎn)。了以查詢語言定位代碼安全問題,其采用的詞匯分析技術(shù)和CxQL查詢技術(shù)來掃描和分析源代碼中的安全漏洞和弱點(diǎn)。
360代碼衛(wèi)士是360企業(yè)安全集團(tuán)基于多年源代碼安全實(shí)踐經(jīng)驗(yàn)推出的新一代源代碼安全檢測解決方案,包括源代碼缺陷檢測、合規(guī)檢測、溯源檢測三大檢測功能,同時(shí)360代碼衛(wèi)士還可實(shí)現(xiàn)軟件安全開發(fā)生命周期管理,與企業(yè)已有代碼版本管理系統(tǒng)、缺陷管理系統(tǒng)、構(gòu)建工具等無縫對接,將源代碼檢測融入企業(yè)開發(fā)流程,實(shí)現(xiàn)軟件源代碼安全目標(biāo)管理、自動(dòng)化檢測、差距分析、Bug修復(fù)等功能,幫助企業(yè)以小代價(jià)建立代碼安全保障體系并落地實(shí)施,構(gòu)筑信息系統(tǒng)的“內(nèi)建安全”。
白盒代碼審計(jì)系統(tǒng)建設(shè)實(shí)踐
靜態(tài)代碼分析是指在不實(shí)際執(zhí)行程序的情況下,對代碼語義和行為進(jìn)行分析,由此找出程序中由于錯(cuò)誤的編碼導(dǎo)致異常的程序語義或未定義的行為。通俗的說,靜態(tài)代碼分析就是在代碼編寫的同時(shí)就能找出代碼的編碼錯(cuò)誤。你不需要等待所有代碼編寫完畢,也不需要構(gòu)建運(yùn)行環(huán)境,編寫測試用例。它能在軟件開發(fā)流程早期就發(fā)現(xiàn)代碼中的各種問題,從而提高開發(fā)效率和軟件質(zhì)量。
靜態(tài)AST(SAST)技術(shù)通常在編程和/或測試軟件生命周期(SLC)階段分析應(yīng)用程序的源代碼,字節(jié)代碼或二進(jìn)制代碼以查找安全漏洞。
商業(yè)產(chǎn)品分析Coverity、Fortify、CheckMarx 作為白盒靜態(tài)掃描領(lǐng)域的產(chǎn)品,擁有極其深厚的技術(shù)積累以及的產(chǎn)品技術(shù)團(tuán)隊(duì)。其產(chǎn)品能力都為業(yè)界。筆者曾經(jīng)和Coverity的售前及售后團(tuán)隊(duì)有過一定的交流,可以總結(jié)以上商業(yè)產(chǎn)品的優(yōu)點(diǎn)及缺點(diǎn)優(yōu)點(diǎn)深厚的技術(shù)積累,產(chǎn)品能力強(qiáng)大,在SAST領(lǐng)域內(nèi)少有不支持掃描的漏洞類型
售后團(tuán)隊(duì),能較為理解用戶需求缺點(diǎn)定制化需求支持困難,引擎對用戶不透明,需求提交給廠商響應(yīng)時(shí)長為 Month
規(guī)則學(xué)習(xí)成本高,規(guī)則學(xué)習(xí)文檔不完善,自定義規(guī)則困難
廠商以大并發(fā)量授權(quán)l(xiāng)icense,彈性擴(kuò)容能力差,存在成本浪費(fèi)
漏洞模型難以適配每個(gè)用戶自己內(nèi)部的漏洞模型,難以準(zhǔn)確處理誤報(bào)、漏洞修復(fù)復(fù)查等業(yè)務(wù)需求
融入企業(yè)自身的CI/CD流程困難,數(shù)據(jù)模型需要企業(yè)自己轉(zhuǎn)換
開發(fā)源代碼審計(jì)服務(wù)內(nèi)容有哪些?
對用戶現(xiàn)有系統(tǒng)做源代碼安全審計(jì),服務(wù)內(nèi)容主要分為工具自動(dòng)審計(jì)、系統(tǒng)架構(gòu)分析、接口安全、敏感信息查詢、重要信息修改、輸入合法性校驗(yàn)、數(shù)據(jù)傳輸加密、常見安全漏洞審計(jì)和合規(guī)控制等,覆蓋挖掘源代碼安全漏洞,合規(guī)控制;協(xié)助修復(fù)漏洞,指導(dǎo)安全編碼;定期匯總源代碼安全漏洞,進(jìn)行針對性安全培訓(xùn);制定安全編程規(guī)范,推動(dòng)安全開發(fā)等方面。
服務(wù)范圍包括使用ASP、ASP.NET(VB/C#)、JSP(JAVA)、PHP、Python、node.js等主流語言開發(fā)的B/S應(yīng)用系統(tǒng)、使用C 、JAVA、C#、VB、Lua等主流語言開發(fā)的C/S應(yīng)用系統(tǒng),以及使用XML語言編寫的文件等。
1、全程化服務(wù),有效保證服務(wù)質(zhì)量
幫助用戶發(fā)現(xiàn)審計(jì)目標(biāo)的安全問題,并提供的建議和指導(dǎo),做到問題發(fā)現(xiàn)、修補(bǔ)、驗(yàn)證的全程跟蹤。每一次服務(wù)都會(huì)在前一次的基礎(chǔ)上尋找新的突破口,大程度地保證審計(jì)目標(biāo)的安全性。
2、化服務(wù),解決方案行之有效
實(shí)施人員在源代碼安全審計(jì)、安全開發(fā)、安全加固等領(lǐng)域均有豐富的經(jīng)驗(yàn),能夠?yàn)橛脩籼峁┣袑?shí)有效的解決方案和化服務(wù),幫助用戶解決重點(diǎn)、難點(diǎn)問題。
3、降低成本,節(jié)省投資
審計(jì)過程中,輔助運(yùn)用自動(dòng)化的靜態(tài)代碼審計(jì)工具,以有效節(jié)省代碼審計(jì)的人力成本,提高審計(jì)工作效率,為用戶降低資金投入。