GSS 資安電子報0014期【網路銀行之安全演進(下)】

SDLC第一階段:保持100%被動

網路銀行早期嚴格遵守軟體開發生命週期(SDLC),以符合使用者的需求。以功能面來看,程式的執行效能、使用者的使用經驗與程式臭蟲是程式開發週期注重的問題。相較之下,資安團隊通常配置網路安全專家與白帽駭客(white hat hackers)。資安牽扯問題非常廣泛,大多數人仍把焦點擺在網路安全,資安重點並非是不是有駭客入侵問題,而是駭客何時入侵。由安全觀點來看,SDLC的順序變成是1.撰寫程式碼,2.遭到入侵,3.進行修補。

銀行的資安團隊對於入侵無法避免這件事並沒有良好的對策。當入侵發生,需立即反應進行修補。這樣做法必須付出非常昂貴的代價—弱點出現在線上系統環境裡。這樣的風險是:

  • 系統無法服務就無法創造公司利潤
  • 品牌聲譽受創,登上媒體版面
  • 無開發時間表

對於銀行的資安團隊,這樣的態勢就是一直被動修補弱點,疲於應付駭客入侵。

第二階段:白帽駭客/機器駭客

瞭解問題根源,下一步就是擊退駭客,並找出解決方法。通常銀行會找來白帽駭客或滲透測試工具,找出潛在的弱點,或者選擇使用滲透測試工具(如黑箱工具測試或Web網站掃瞄),在真的遭受駭客攻擊前,找出線上系統的弱點。

即使這些方法都相當重要,銀行仍發現滲透測試有著戰術上與策略上的缺點。戰術上來說,有兩個問題:
1. 首先,這些測試在已上線的環境中執行,資安團隊必須非常謹慎的進行測試,不可讓系統當機。再者,資安團隊必須跟QA團隊測試這些應用程式。假如應用程式損毀,可能會影響現行版本發行時程。
2.黑箱測試第二個障礙是,沒有與程式碼相關的訊息,對開發人員並沒有助益。當報告顯示出數個SQL Injection問題,開發人員就可能會問:「能指出問題在哪裡嗎?」。對於無法指出問題根源(root cause)的報告,修復起來就不是那麼容易。例如,某些cross-site scripting問題起源於應用程式層或應用程式伺服器的不當設定,但,到底是哪一種?最糟的狀況是開發人員猜錯地方也改錯低方,弱點根本沒有改善。

策略上,滲透測試的確是一種很好的安全實踐方式,但無法確切指出弱點暴露於何處。銀行業者於是很快瞭解黑箱測試的確有加值效果,但效果並不足夠。黑箱測試仍是目前重要的安全測試,但銀行業者仍無法回答以下的問題:

  • 應用程式弱點到底在哪?
  • 程式碼涵蓋度到底有多少?
  • 那個地方真的有風險?
  • 應用程式真的因此變安全了?
  • 我們真的改善弱點,還是只是頭痛醫頭?

銀行業者資安團隊治標不治本的方法凸顯了解決方案的根本錯誤。

第三階段:程式碼查核

想要真實的瞭解風險弱點,必須深入瞭解軟體開發本質,銀行業者於是開始人工程式碼安全檢測。這樣做的好處是:
1. 在現有與新撰寫的程式碼中找到真正的弱點。
2. 實際以開發人員寫的程式碼進行檢核,資安團隊都會非常訝異竟然存在這麼多弱點風險。
3.程式碼檢核使資安團隊的信賴度上升,明顯的改變資安團隊與開發人員的互動。找出真正與可能存在的弱點使得資安團隊有機會更容易推廣安全程式碼撰寫。這樣良性循環之下,對於安全要求程度最高的銀行業者,資安團隊認為不夠安全的應用程式,將要求開發人員必須修復弱點才能上線。比起實質的獎勵,開發更安全的程式碼可能變成工作考核的項目之一。

程式碼檢核雖已成為銀行業者確保應用程式安全的手段,但這樣的方法成本仍高。重點是,從何開始檢核?應用程式規模與複雜度呈指數性成長,透過人工分析達成資訊安全是不可能的。人數少的可憐的稽核人員,面對數百萬行程式碼,該從何下手?單是人工稽核一個應用程式就得花兩個星期,想要做到全面性的安全稽核,必須使用更有效嚴謹的方式才行。

第四階段:採用程式碼靜態分析

應付大量的程式碼,銀行業者開始進行程式碼靜態分析。資安團隊很快的就可以感受到好處:
1.比人工查核速度更快更好—程式碼查核時間縮短了一半以上,檢核的涵蓋度也呈指數性增加。更好的是,程式碼檢核每天都能作。
2. 弱點知識庫內建在工具中。
3. 掃瞄結果一致。
4. 非入侵性作法—以技術角度來看,靜態程式碼分析可獨立於開發階段進行,不影響開發過程。
5. 稽核人員可作邏輯層面或其他範圍查核,人力配置更有效率。

然而,有些事情還是不變:開發人員仍舊會寫出有弱點的程式碼。即使銀行能更快的找出問題,弱點產生的速度卻不比抓到問題的速度慢。雖然靜態程式碼分析工具可以儘早抓到問題,倘若開發人員持續寫出漏洞,那導入工具不但不符合效益,而且失去意義。

第五階段: 全面導入:導入軟體安全開發生命週期

在這最後階段,以SDLC為主的開發方式才是真正內化的過程。銀行業者資安團隊可以主動的綜觀整個安全開發流程。資安團隊可以做到:

  • 定期檢核應用程式
  • 深度檢核重要的專案
  • 遇到簡單的資安問題也不再困擾

怎樣才算導入成功?資安團隊無法在系統找到S1弱點(Web Application弱點)。策略上,軟體安全開發生命週期改變了傳統SDLC兩個重要的點:

  • 教育訓練—銀行業者瞭解聰明的開發人員能寫出臭蟲較少的的系統,所以,教育訓練是很重要的。銀行業者導入線上或Web式軟體開發安全教育訓練,這些訓練能減少20%的弱點出現。不過業者也發現,單靠教育訓練並不足夠,即便短期能看到成效,長久下來效果也不明顯,尤其開發人員的轉職率高,有些業者便把開發業務交給沒有受過訓練的外包廠商。能夠整合教育訓練和工具才是確保程式碼安全成功之道。靜態分析工具可單機或集中掃瞄,開發人員也可從中獲得許多程式碼改善建議。
  • QA結合滲透測試—有了有效的靜態分析工具,滲透測試能找到的弱點就少了很多。然而滲透測試仍佔有重要地位,滲透測試結合QA流程可進行系統上線的最後把關,能有效找出與設定有關的一些弱點。

結論

「大多數的Web應用程式安全可由系統管理員執行,開發人員不需要花費心思管控應用程式安全…」
– BEA WebLogic Server Security Documentation
上述的引言表達了一種現實想法:現今頂尖的軟體廠商的軟體開發流程並未真正包含安全觀念。Web應用程式安全導入更是困難重重。公司何時才會尋求協助?大型的網銀已經上了軌道,可以成為後進仿效的對象。
這些成功案例值得注意的地方是:

  1. 網銀系統比臨櫃更加安全—即時的系統代表銀行與客戶可隨時控管帳戶的活動,帳戶不被詐騙集團所利用。
  2. 網銀系統給人的負面印象減少—弱點減少代表暴露在外的漏洞減少,能損害公司聲譽的事件也減少。
  3. 網銀系統以安全性招來客戶—許多銀行自豪的以安全性做為廣告拉攏客戶。

關於Fortify公司

Fortify公司是軟體安全市場的領導者。我們的產品—Fortify Source Code Analyzer、Fortify PTA與Fortify RTA—
提供最準確、最完整的可信賴安全解決方案,供業界保護重要的應用程式。我們提供您在軟體生命開發週期最高等級的自動防護措施,降低組織的成本與風險。

我們頂尖的資安專家,與導入財星前100大企業的業界最佳範例,證明我們為資安業界頂尖廠商。我們保護全美前10大中的9家銀行,政府機關、通訊業、電子商務業者、出版業、保險業、系統整合業與資訊管理業間大型、重要的應用系統。

歡迎瀏覽我們的網站www.fortifysoftware.com