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