隨著代碼安全審計(jì)被越來(lái)越多的軟件開(kāi)發(fā)企業(yè)和開(kāi)發(fā)人員所了 解和認(rèn)識(shí),采用代碼安全審計(jì)的方式來(lái)避免軟件中安全漏洞的產(chǎn)生也正在各個(gè)企業(yè)中積極地開(kāi)展。作為這個(gè)行業(yè)的老兵,在與很多企業(yè)的管理人員和安全技術(shù)人員交流過(guò)程中,我發(fā)現(xiàn)大家或多或少對(duì)代碼安全審計(jì)和代碼安全審計(jì)工具還有一些理解上的誤區(qū),造成了工作上的困擾。下面,我將就四個(gè)方面的個(gè)人理解分享給大家。
1、代碼安全審計(jì)就是漏洞挖掘
一提到代碼安全審計(jì),大家首先想到的就是可以從代碼中找到各種各樣的安全漏洞。所以很多軟件開(kāi)發(fā)人員或者管理人員都想用代碼安全審計(jì)工具這種“神器”,一下子就能挖掘出很多新的、未知的“漏洞”。
不得不說(shuō)這是一個(gè)誤區(qū)。代碼安全審計(jì)工具雖然它可以發(fā)現(xiàn)程序中潛在的安全漏洞,但并不能算作是漏洞挖掘工具,特別是對(duì)于沒(méi)有較強(qiáng)安全知識(shí)和滲透攻擊知識(shí)的開(kāi)發(fā)人員來(lái)說(shuō),代碼安全審計(jì)工具就是安全編碼的輔助工具。
從字面上就可以理解到“代碼審計(jì)”——英文“CodeReview”,它只是對(duì)代碼安全性的復(fù)查、審查,查看程序是編寫(xiě)是否符合相關(guān)要求和編程規(guī)范,是程序員的一種自查方式。代碼安全審計(jì)工具也只是用自動(dòng)化的工具去代替了人工審查而已。
而對(duì)于那些有較強(qiáng)安全知識(shí)和豐富滲透攻擊經(jīng)驗(yàn)的“黑客”們來(lái)說(shuō),代碼安全審計(jì)工具又能看作是他們“攻擊”的輔助工具。這是因?yàn)樗麄兂3?梢岳么a安全審計(jì)工具查找出來(lái)的“蛛絲馬跡”來(lái)找到那些深藏在代碼深處的“0-day”或“獲 root 級(jí)權(quán)限”的安全漏洞。所以我們可以看到有很多滲透攻擊的大牛們,也紛紛編寫(xiě)一些小的、很實(shí)用的代碼審計(jì)工具來(lái)查找漏洞的原因。但我還是要說(shuō),代碼安全審計(jì)工具對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),不能作為漏洞挖掘工具來(lái)用,不然你就會(huì)陷入第二個(gè)重大誤區(qū)。
2、代碼安全審計(jì)工具都會(huì)很高的誤報(bào)率
我常常聽(tīng)到很多用戶或者開(kāi)發(fā)人員討論說(shuō)代碼安全審計(jì)工具的誤報(bào)率很高,因?yàn)闄z測(cè)出來(lái)的漏洞大部分都不能被直接利用或者被滲透驗(yàn)證。這是一個(gè)很大的誤區(qū),這個(gè)誤區(qū)就是上文的第一個(gè)誤區(qū)的延伸,當(dāng)用戶把代碼安全審計(jì)工具作為漏洞挖掘工具時(shí)就會(huì)產(chǎn)生。原因是代碼安全審計(jì)工具是以靜態(tài)的方式在程序中查找所有可能存在的安全漏洞特征,這些特征表面上就是我們不安全的編碼方式,或者說(shuō)是不安全的編程習(xí)慣,這些方式是產(chǎn)生安全漏洞的必要條件,但不是絕對(duì)條件,不能用滲透的方式來(lái)驗(yàn)證和證明。打個(gè)形象的比喻就是:“人人都知道吸煙有害健康,吸煙會(huì)導(dǎo)致呼吸道疾病或者肺癌;但我們不能證明某人吸煙后就一定會(huì)得肺癌。”
所以我總結(jié):代碼安全審計(jì)的主要宗旨就是在編碼環(huán)節(jié),以(自我)審計(jì)的方式去盡量減少和消除這些不安全的編碼方式和編碼習(xí)慣,確保不會(huì)有安全漏洞的產(chǎn)生。
這個(gè)宗旨就告訴開(kāi)發(fā)人員在編碼的時(shí)候,把所有不好的、不安全的編碼方式規(guī)避掉,盡量以正確的方式,來(lái)編寫(xiě)出安全的程序。
當(dāng)代碼安全審計(jì)工具輔助開(kāi)發(fā)人員發(fā)現(xiàn)了這些不好的編碼方式時(shí),我們不必要去糾結(jié)它是否能夠被利用或者被滲透驗(yàn)證。而是用最簡(jiǎn)單、最直接、成本最低的方式把它消除掉就 OK了。
這也是 SDLC 開(kāi)發(fā)模式所倡導(dǎo)的“在軟件開(kāi)發(fā)每一個(gè)環(huán)節(jié)中來(lái)避免安全漏洞的產(chǎn)生”的安全開(kāi)發(fā)理念。當(dāng)我們以幫助開(kāi)發(fā)人員在代碼中查找和消除所有不好的、不安全的編碼方式為目標(biāo)的時(shí)候,代碼安全審計(jì)工具的所謂誤報(bào)率就變得很小、很小了。
3、代碼安全審計(jì)應(yīng)該由專業(yè)的人員來(lái)干
關(guān)于代碼安全審計(jì)工作到底應(yīng)該由誰(shuí)來(lái)負(fù)責(zé),我之前曾寫(xiě)過(guò)一篇文章,《“讓開(kāi)發(fā)者愛(ài)上安全測(cè)試”系列 3 之(軟件安全測(cè)試誰(shuí)負(fù)責(zé)?)》大家可以參閱。同樣,代碼安全審計(jì)工作在我看來(lái)不能僅僅交給“專業(yè)的人員”來(lái)干,這是個(gè)誤區(qū)。這個(gè)誤區(qū)主要是存在于管理人員對(duì)軟件安全開(kāi)發(fā)理念上的誤區(qū)。代碼安全審計(jì)是軟件安全開(kāi)發(fā)的其中一個(gè)環(huán)節(jié),代碼安全審計(jì)如果想要有很好的效果,就一定要開(kāi)發(fā)人員從開(kāi)發(fā)意識(shí)上和編碼習(xí)慣上有所改變。如果只是把代碼安全審計(jì)交由安全測(cè)試人員,甚至是外包的安全測(cè)試團(tuán)隊(duì)來(lái)干的話,效果一定是不好的。而往往管理人員會(huì)受到“專業(yè)的事由專業(yè)的人員干”思想的影響。
把代碼安全審計(jì)工作只交給安全人員來(lái)做,甚至以服務(wù)的方式將和外包給安全服務(wù)團(tuán)隊(duì)來(lái)做,這樣做就真的只是“代碼安全審計(jì)”了(代碼安全審計(jì)=代碼安全測(cè)試+代碼安全開(kāi)發(fā))。就把安全編碼“最專業(yè)”的開(kāi)發(fā)人員給排除在外了,把安全漏洞審計(jì),與安全開(kāi)發(fā)相對(duì)孤立起來(lái)了,效果怎么會(huì)好得了呢?
為此,我們思客云公司以找八哥產(chǎn)品為基礎(chǔ),提出了“讓開(kāi)發(fā)人員愛(ài)上安全測(cè)試”的測(cè)試?yán)砟?,就是希望在這一點(diǎn)上能給讓廣大的用戶避免這些理念上的問(wèn)題。能夠在企業(yè)內(nèi)自建一個(gè)完整的安全開(kāi)發(fā)(審計(jì))團(tuán)隊(duì),并給予全面的安全知識(shí)培訓(xùn),使得安全漏洞審計(jì)和安全開(kāi)發(fā)有效地結(jié)合起來(lái),成為一個(gè)高效、相通的整體。讓代碼安全審計(jì)真正流利起來(lái)。
4、代碼安全審計(jì)越全面越好
當(dāng)代碼安全審計(jì)工作在企業(yè)中執(zhí)行的時(shí)候,管理人員或者安全負(fù)責(zé)人員又會(huì)受“從代碼層面杜絕一切安全漏洞的產(chǎn)生”這樣的理想主義的影響,而采取較“左”的思想。希望開(kāi)發(fā)人員將全部的不安全編碼特征全部解決掉,這樣又陷入了一個(gè)誤區(qū)。
代碼安全審計(jì)也不是越全面越好,也要追求開(kāi)發(fā)與安全的平衡。因?yàn)榇a安全審計(jì)會(huì)給開(kāi)發(fā)人員帶來(lái)知識(shí)上的挑戰(zhàn)和一定的工作量。開(kāi)發(fā)人員如果一開(kāi)始就受到太多安全漏洞特征和安全編碼的約束時(shí),很可能逆反心理,不與配合,甚至以“各種理由”不改,這樣就很難開(kāi)展工作。
即使在“強(qiáng)行手段”下不得不配合,也會(huì)在修改時(shí)百般變通,能逃則避。代碼安全審計(jì)正確的方式是企業(yè)以自身特點(diǎn)為基礎(chǔ),定制出一套安全人員和開(kāi)發(fā)人員都能夠接受的“代碼安全審計(jì)標(biāo)準(zhǔn)”,在企業(yè)中有序開(kāi)展相關(guān)工作,并在后期不斷地補(bǔ)充和完善這個(gè)標(biāo)準(zhǔn),使之成為一個(gè)既能迎合安全趨勢(shì)的不斷發(fā)展,又能適合開(kāi)發(fā)人員的安全審計(jì)標(biāo)準(zhǔn),這樣代碼安全審計(jì)工作才能在企業(yè)中順利地開(kāi)展。
代碼安全審計(jì),一個(gè)簡(jiǎn)單又高效的軟件安全保障手段,如果能夠有效地在企業(yè)中展開(kāi),它會(huì)讓您的軟件安全建設(shè)工作事半功倍。反之,則只會(huì)讓開(kāi)發(fā)人員,安全人員和管理人員徒增煩惱。思客云找八哥系統(tǒng)以提供最佳“代碼安全”整體解決方案為己任,希望能夠給您提供必要的幫助!
分享到微信 ×
打開(kāi)微信,點(diǎn)擊底部的“發(fā)現(xiàn)”,
使用“掃一掃”即可將網(wǎng)頁(yè)分享至朋友圈。