論壇文章
美國知名銀行利用Fortify SCA 將軟體安全轉為競爭優勢
人工審查程式碼的方法不僅曠日費時,更耗用寶貴資源。結果常常不是應用程式發佈時程延後,需要硬著頭皮發佈明知已存在漏洞、需要事後特別作風險管理的應用程式。

用戶背景:
美國知名銀行,其線上銀行交易服務的客戶人數超過百萬。

挑戰目標:
‧維護公司品牌及商譽
‧修復大部分明顯的程式漏洞
‧分析橫跨數以千計的應用軟體,程式碼總數超過5千萬行
‧有效整合程式碼審查流程
‧將軟體安全流程整合至軟體開發生命週期中

產品效益:
‧程式安全漏洞大幅降低
‧降低程式碼審查所需成本
‧強化程式碼審查能量
‧加速軟體開發時程
‧維護公司品牌及商譽

在安全的軟體平台進行交易

用戶公司(以下簡稱A銀行)是線上銀行領域的先驅領導者,擁有1萬名軟體開發人員,同時是世界上最大的商業Java應用程式開發單位之一。然而,A 銀行深知,其面臨的安全威脅與日俱增。線上銀行客戶正遭受駭客精心設計的詐騙攻擊,新型的駭客攻擊手法層出不窮,成長速度超越以往。若銀行客戶發現銀行的交易系統不安全,則銀行獲得立即的 "懲罰" 是客戶迅速流失、業績大幅滑落。

一份由Ponemon機構於2006年所提出的研究報告指出,若銀行遭受駭客入侵一次,則34%的客戶會選擇更換銀行;若銀行遭受駭客入侵兩次,則 45%的客戶會更換銀行。A銀行非常瞭解,其舊有傳承下來的程式碼仍存有諸如SQL Injection以及Cross-site Scripting的明顯漏洞,這些漏洞不需高深的駭客技巧即可入侵。此外,應用程式也暗藏了許多隱晦不明的安全漏洞。

A銀行嘗試透過一般的審查流程解決上述的程式安全漏洞問題,但由於應用程式是由眾多的程式撰寫團隊為各種不同的事業群所撰寫,其結果是程式碼膨脹超過5千萬行,雖然安全團隊希望審查流程發現的漏洞能照計畫時程修復,但事實是需修復的漏洞累日積存,無法如期修復;同時程式開發進度也深受影響而落後。

A銀行採用人工審查程式碼的方法不僅曠日費時,更耗用寶貴資源。其結果常常不是應用程式發佈時程延後,就是偶而需要硬著頭皮發佈明知已存在漏洞、需要事後特別作風險管理的應用程式。假如A銀行需要同時確保應用程式的安全以及應用程式如期發佈,需要採用自動化的安全檢測流程,並且將這些安全流程整合至軟體開發生命週期中。
 

階段一:內部採用Fortify解決方案

選擇正確的靜態原始程式碼分析工具

A銀行面對的最大挑戰是需要能夠有效率並準確地審查大量的程式碼。其採用傳統、人工的程式碼審查方式根本不足以應付銀行內部成千上萬的應用程式。2004年,A銀行決定採用原始碼程式分析器,期望繁瑣的審查應用程式安全流程能夠加速並自動化。

在經過密集的評選後,A銀行發現Fortify的原始碼分析工具擁有獨具一格的功能,能讓資安團隊在短期內分析大量的應用程式、評估不同等級的漏洞對商業可能造成的影響並且產生報表。Fortify擁有最完整的程式碼漏洞分析解決方案,其產品整合容易,而且程式開發團隊樂於使用。透過使用 Fortify SCA(Source Code Analyzer)的協助,程式開發者不需要高深的軟體安全知識就可發現並修復軟體漏洞,而且SCA的操作方法容易。當程式開發者採用Fortify,審查團隊只需要讀取程式開發者利用SCA掃描所產生的結果檔(又稱fpr檔)以及原始程式碼,就能進行審查工作。Fortify同時支援業界最廣泛的程式語言,共計17種,包括Java, C, C++, PL/SQL, XML以及DotNet。此外,Fortify可輕易與不同的開發環境整合,這項功能對A銀行至關重要,因為每一個開發團隊都採用不同的方式開發程式。

讓程式設計師擁抱軟體安全

Fortify在確知獲選用後,立即在初始建置階段執行軟體安裝以及基本的產品教育訓練。當軟體建置完成,Fortify執行一項「種子教師培訓」計畫,協助A銀行的核心安全團隊以及重要軟體開發團隊瞭解Fortify的解決方案。Fortify派駐一位專家,為期12個月,協助諸如建立客製化報表以及建構專案管控等專案建置細節。

在教育訓練過程中,學員掃描自己的程式碼,當學員發現自己撰寫的程式居然存在漏洞,驚訝之餘同時也獲得深刻的印象。這樣的教育訓練不僅相關性高,而且極具價值,因為學員透過實際上機並完成修復程式漏洞,可確認學員已確實瞭解修復程式漏洞的方法,除了單純的訓練外,講師在培訓過程亦如良師益友,提出中肯的建議。大約每兩週,就會有一群程式開發人員將Fortify納入其程式開發流程。如今已有超過1千位分佈在美國各地的程式開發人員使用Fortify 的解決方案。

使用Fortify

A銀行的程式審查單位使用Fortify 360 server(安全檢測數位儀表管理中心)、Audit Workbench(程式碼審查工作平台),搭配Rule Pack(程式安全規則包)進行原始碼審查的工作。Fortify 360 server提供審查人員整個企業所有軟體專案在軟體安全方面的快速縱覽以及程式碼漏洞細節,並提供量化的資訊,讓審查人員有系統的瞭解並管理軟體安全風險。

Fortify 360 server交互比對整個企業的所有專案團隊,檢查專案量化後的安全數據是否符合公司的規範要求,同時可發掘安全風險過高的團隊,由安全審查團隊對其加強軟體安全的教育訓練。

Fortify 360 server定期提供各軟體專案的詳細稽核報表,以協助相關人員瞭解軟體專案的安全狀況,以及是否符合軟體安全規範的要求。只有獲授權者才可閱讀這些軟體安全稽核報告。

Fortify SCA除了提供內建的軟體安全檢查規則外,亦提供客製化安全規則的功能。原始碼審查團隊協同專案團隊,協助某些特殊專案的開發人員製作正確的客製化安全規則。Fortify SCA的Rules Builder(安全規則建置器)提供自訂客製化規則的功能,可協助A銀行建立整個銀行的安全程式碼撰寫原則。同時,安全人員利用Audit Workbench針對開發中應用程式的關鍵元件,採行目標鎖定式分析。

程式開發人員亦可利用Fortify 360 server、Audit Workbench以及Rules Builder協助其開發流程。Fortify 360 server提供web介面,協助開發人員瞭解完整的漏洞分析及審查結果,並且獲得報告。他們也可以比較不同專案間的漏洞分析結果、監控漏洞成長趨勢、修正並收斂漏洞的產生,以符合A銀行的企業軟體安全要求標準。

程式開發人員使用Audit Workbench,分析複雜的安全漏洞、審查程式掃描結果並依據其本身對於軟體架構及建置狀況的瞭解,排定修復漏洞的優先順序,審查結果將匯入「程式缺陷追蹤系統」,並指派程式人員修正漏洞。

此外,程式開發人員可與審查團隊以及軟體安全建構師合作,針對其專案所使用的共用程式庫(libraries)以及擴充程式庫(extensions),特別自訂客製化的安全規則,進而調校程式漏洞分析結果。

階段二:審查委外開發之應用程式

A銀行定期收到由委外開發商所交付的原始程式碼,深知這些委外程式碼的安全不容輕忽。A銀行於是利用Fortify軟體針對開放源碼套裝組件、大型獨立軟體開發商提供的程式以及專業銀行軟體應用程式進行弱點掃描分析,結果發現存有軟體安全漏洞。A銀行依據明訂在採購契約中的規範,拒絕驗收檢測結果不安全的程式,除非程式供應商實施必要的程式漏洞修復,證明已徹底解決安全漏洞問題。

Fortify使用效益

Fortify持續提供A銀行在程式碼審查、部署策略以及軟體進階使用技巧方面的專業輔導,Fortify也不間斷地對程式開發人員進行安全編程的教育訓練,A銀行估計,這些教育訓練成功協助降低超過20%的程式安全漏洞。

Fortify不僅協助減少程式安全漏洞,亦降低程式碼審查所需成本。此外,A銀行不需再像過去一樣透過人工進行繁瑣的程式碼審查,而是利用Fortify SCA在一個軟體專案的完整生命流程中進行多次的自動化程式碼掃描,並達到百分之百的程式碼覆蓋率。

透過持續不間斷、精準的程式碼審查,以及有效解決發現的程式漏洞,最終審查團隊所見的程式審查安全報告更為清澈明朗,程式碼問題不復存在。

更為快速的程式碼審查,代表與軟體專案開發生命流程更為緊密,並且可降低最多50%的軟體開發時程。程式開發人員在開發階段便自行進行程式碼審查可協助開發人員自我獲得軟體安全知識,同時可維持良好的安全編程習慣,亦在程式碼開發階段就立即發現漏洞,加速漏洞的修復。