軟體安全老兵的程式構建建議

2021-06-26 10:34:01 字數 3249 閱讀 9448

即使是最好的軟體也有漏洞,但通過在開發周期早期階段的關鍵控制,企業可以像進行功能測試和質量保證一樣檢查安全漏洞。現在很多企業安全人員沒有時間顧及應用安全性,而健康保險公司aetna首席資訊保安官james routh已經在引領開發第五個軟體安全程式。

根據routh表示,構建軟體安全程式可以提高軟體靈活性和開發者生產效率。routh本月與marcus ranum分享了他學習到的從上到下部署省錢的軟體安全程式的經驗。他還分析了軟體安全的未來:移動應用和開源元件的持續擴張會給很多企業帶來更大挑戰。

james,感謝你抽時間來談談軟體安全程式。我認為這是非常重要的話題,而這個話題仍然沒有得到行業足夠的重視。長期以來,你一直在推動軟體安全程式的建設。你是如何做到的?是什麼讓你意識到部署軟體安全程式的重要性?

當時,大多數新開發都是web應用。我意識到攻擊面越來越大,而我想要避免安全事故(當時避免事故似乎還是可能的事情),所以我開始教育應用開發人員加強編碼做法的安全性。

我覺得我比他們學到了更多東西。開發人員及其專案領導將安全控制視為開發過程中的障礙,阻止他們完成真正的工作,並且,他們沒有預算來應付發現安全漏洞後的修復工作。我的部署做法讓我非常受益,但並沒有讓他們同樣受益。

在我離開後,mark後來想到了如何給開發人員提**有的培訓。而我隨後去了美國存管信託和結算公司(depository trust & clearing corporation,dtcc),在dtcc,我意識到提高軟體靈活性的重要性,這樣做可以避免業務中斷和資料洩漏事故,要知道這些事故可能影響全球對金融市場的信心。在那裡,我調整了我的方法,並得到ceo和cio的支援,我部署了全面的安全軟體程式,我的程式是基於盡可能簡單的前提,即「較少漏洞的軟體需要更低的支援費用,以及在生命週期的較早期發現漏洞需要更少的時間來修復」。我還比較了通過《在成熟模型中構建安全》(bsimm)知識體系部署的做法。這讓我可以對比其他8家投資於軟體安全程式的公司(例如微軟)所部署控制的成熟度。

這種經驗幫助我了解到如何基於經濟利益為程式獲得高管的支援,同時讓他們投資於開發者培訓。我能夠測量漏洞密度方面的減少,而開發人員可以在開發過程使用靜態分析工具,以及學會如何避免漏洞。我學習到的是,開發過程中發現的安全漏洞必須優先處理和修復,同時,整合安全漏洞與功能缺陷以及發現高風險漏洞可以讓開發團隊更容易地分配修復漏洞的責任。

現在我仍然在使用經濟利益來說服企業部署成熟軟體安全程式,並且我發現,應用開發人員已經意識到盡早發現漏洞以及提高軟體靈活性的重要性。在摩根大通,我向全球17000位開發人員教授軟體安全控制,而他們非常樂於學習更有效的方法用以開發系統。我建立了乙個模型,向選定的開發人員提供軟體安全方面的全面培訓,同時,他們會幫助其他開發人員部署技術來減少漏洞。在aetna,我們稱他們為安全專家,通常由他們來執行關鍵控制。

你能告訴我們你在aetna是如何進行軟體開發的嗎?

james routh:目前軟體開發已經發展到這樣的情況:大多數定製應用開發會從使用開源資源開始,所以,我新增了乙個控制來強制使用選定的開源框架,這些開源框架的選擇是基於對庫的安全風險的掃瞄結果的;我還有一些很酷的針對移動應用的新功能,用以應對移動應用分發系統中的特有的安全風險。

總是有些人反對軟體安全程式。我肯定你也聽到過他們的反對意見,他們常說:我們不能慢下來,我們不能受到限制。你如何應對這些反對意見?

james routh:人們真的很難會反對省錢、提高質量和降低風險的程式。我擺出了簡單的事實,說明每個屬性和承諾,這件事情我常常做,所以比較容易。現在開發人員並沒有異議,但專案經理仍然怨聲載道,他們還沒有明白這樣做的好處。我現在使用的很多移動應用工具並不知名,所以我通常是從不熟悉它們的移動開發人員那裡獲得反饋。在這些情況下,我只是使用行業可用的資料來說明攻擊者可以非常容易地感染移動應用,以及通過二級渠道傳播它。現在發現的大多數漏洞都是移動軟體分發過程受到攻擊的結果。

底線是,當你使用經濟利益作為推動因素時,推動軟體安全程式會變成簡單的工作。成功部署程式更多是關於改變行為,而不是部署技術,因此,我們將安全作為軟體質量的屬性重新明確了開發領導者的角色(掌握過程和結果),而安全部門則負責設計控制和衡量有效性,這主要也是為了有助於開發領導者的工作。

讓我驚訝的事情是你在使用資料指標,而不只是口頭上說,「這是我們應該做的事情」,你可以解釋它如何能節省資金來避免損失和週期外維護。你能否告訴我你的資料指標有哪些?

james routh:當安全控制部署到開發過程時,主要有兩個提高生產效率的基本驅動力:首先,企業安全api(enterprise security api)等框架和開源元件選擇及靜態分析工具,可以防止漏洞進入應用構建過程,這消除了修復漏洞和缺陷的成本。其次,與在生產過程中發現漏洞相比,在質量保證中檢測到漏洞,然後修復高優先順序的缺陷,在時間方面更節省時,且成本更低。

我計算了修復生產後期漏洞所需時間(高度複雜漏洞修復=8小時;中等複雜程度=4小時;簡單修復=2小時),並比較開發過程中修復漏洞所需時間,然後乘以高風險漏洞的數量。我使用每小時標準恢復量作為成本,例如125美元,這是fte開發人員(**商和第三方顧問公司進行開發)的行業平均每小時成本。其結果是,除了將漏洞修復從生產後期轉移到質量保證或生產前期節省的成本外,這樣做還可以「提高生產效率」。而通過消除或減少修復漏洞的工作所節省的開發時間還可以重新投資於在更少時間內提供更多功能。

我不明白的是,為什麼很少高管像你這樣「懂」。你認為我們可以怎樣做來提高對這個話題的理解?在過去15年,我們看到很多「滲透和修復」,以及各大軟體**商不斷推出修復補丁,如果這不是危險的訊號,那是什麼?我們可以做些什麼?

james routh:70多家公司現在使用bsimm資料衡量其軟體安全程式的成熟度,軟體安全的知識體系已經明顯改善。你問我為什麼領導們很少明白這一點,這是很合理的問題,我的觀點是,很多人明白軟體安全的經濟推動因素,並且跨行業部署了更有效的控制。我們比十年前更懂得軟體安全做法,我在這裡與你分享的資訊其實已經公開化。

在推出補丁修復的很多軟體廠商中,他們也有成熟的軟體安全程式,包括微軟、adobe systems和emc等。現實情況是,完美和軟體並沒有關係,我們總是會有機會來發現和提高軟體漏洞。

我們正在嘗試新的東西,我們將所有控制部署到web應用,並且基本上眾包了應用的滲透測試來檢視應用的情況。這意味著軟體研究人員將會執行滲透測試,並與我們分享其結果。

我非常希望在這個過程中發現新的漏洞,儘管在此之前對相同軟體版本已經執行了幾十次測試。這也有可能幫助我了解我們開發過程中部署的很多控制正在如何執行以及**有改進的機會。隨著時間的推移,我們還會追蹤漏洞密度,這些資料清楚地顯示了開發人員的顯著改進,因為他們使用了更好的工具來發現開發中的漏洞。

只要我們構建軟體,在這個過程中就會發現漏洞以及提高其質量的機會。顯然,投資於質量改進可以獲得更好的經濟性,但軟體的完善將仍然還有很長的一段路要走。(無錫恆創商鋪網)

10年老兵給程式設計師的10條建議!

image 程式設計師雖然薪資待遇好,但是也得付出努力,技術好才行。特別是對於剛剛進入程式設計工作的新手程式設計師和正在學習程式設計的同學來說,一寫 就報錯,出bug。作為乙個工作了10年 的老兵,總結了下面10條建議送給程式設計師。1.想清楚,再動手寫 剛入行的新手,為了展示自己的能力,拿到需求迫...

資料處理專案Beta階段軟體架構建議

string serverip string serverpassword string sqlaccount string sqlpassword bool dataupdate int id,string key,string content 用來更新資料,id用來定位更新的位置 key是要更新...

優化Webpack構建效能的幾點建議

webpack 作為目前最流行的前端構建工具之一,在 vue react 等 framework 的生態圈中都佔據重要地位。在開發現代 web 應用的過程中,webpack 和我們的開發過程和發布過程都息息相關,如何改善 webpack 構建打包的效能也關係到我們開發和發布部署的效率。以下是一些關於...