
數百萬人天天倚賴的軟體應用程式正暴露在各種攻擊和威脅之下,而這些威脅每天都在成長。這篇文章將探討如何透過全方位的方法,針對部署在各處的應用系統,使用靜態及動態分析,使企業組織得以快速並有效的找出並修補應用系統中的安全漏洞。
近幾年來,駭客和組織罪犯對於攻擊應用程式的手法越來越專精,也越來越頻繁。根據美國國家標準及技術研究所(National Institute for Standards and Technology, NIST)的報告,92%的安全漏洞出在軟體上,而Gartner公司也估計,有超過3/4的安全問題都是出在應用程式上。
攻擊者利用應用程式中的漏洞竊取如個人身分、密碼、帳戶訊息等機密資料,同時破壞系統,或為了自己的利益,而從事一些惡意攻擊行為。上述情形可能導致嚴重的後果,平均修復一起因機密資料外流的安全性問題就需要付出將近630萬美金的成本,這個數據比2006年高出了31%,而比2005年多出了將近90% 的相關費用。狡猾的攻擊者也能在黑市中快速的將竊取的資料換成金錢。
儘管現今有許多技術:防火牆、防毒系統和邊界保護系統,對於應用程式的攻擊事件還是持續在增加。被攻擊的對象幾乎包括了所有領域,金融、醫療、物流、通訊、教育、ISV,甚至是政府機關。政府監管方面,像是Sarbanes-Oxley、Health Insurance Portability和Accountability Act (HIPAA) 對某些領域要求增加防護措施,而Payment Card Industry 的Data Security Standards(PCI-DSS)則規定跟信用卡交易有關的企業組織必須針對特定的應用程式進行防護。
作業系統中的安全漏洞問題常常占據媒體頭條,大部份的時間和預算也都花在如何解決這些問題上。但大家反而對於更危險的應用程式漏洞視若無睹- 企業用以維持生計,所開發出成千上萬的客製化應用程式。說的更深入一點,最容易成為攻擊對象的就是Web 2.0所開發、服務導向(SOA)和使用Open Source開發的應用程式,這些程式因為成本低、彈性高、開發時間短以及容易使用,是現今成長最快的一群。這些新的技術也使使用者的分布更寬更廣,其擁有廣泛的適應性以及寬鬆的管理環境,反而提供了許多攻擊的機會。根據Gartner所提出的結論「Web 2.0的特性提供了創造力、生產力和合作的方便性,卻也導致其容易遭遇駭客攻擊和竊盜問題。」
企業組織必須克服幾項挑戰,才能確保應用程式的安全。最主要的為下列幾項:在可行的時間內找出最多的漏洞;將找到的漏洞做出最佳的優先排序;在最小化對企業運作影響的前提下,修復這些安全漏洞。以下是針對各種挑戰關鍵問題的討論。
現今大部分的時間、精力和預算都被用在設計出不易受到攻擊的應用程式,然而這些努力卻往往無法真正對症下藥。網路犯罪者知道這一點,並利用這一點圖利。舉例來說,花在邊界防禦的預算年年不斷的增長,被發現的漏洞卻比2007年的兩倍還多。這其實很容易了解,為了攻擊一個軟體,攻擊者只需要找到一條可以繞過網路防禦的路徑 – 例如:透過開放的門戶網站,或是透過掉以輕心的使用者入侵網路應用程式。真正有效率的方式是在應用程式中進行防護,一但應用程式本身就是無法攻擊的,就算網路被侵入,駭客也無法得逞。
為了解決應用程式中的安全漏洞,企業組織必須找出所有有可能造成漏洞的部分。一般來說有兩種方式:靜態分析和動態分析。
這是為了偵測漏洞的方法中最常使用的技術。這個技術使用一個自動化的方式來檢查應用程式的程式碼,可以找出多種型態的漏洞。他們能找出來的漏洞數量往往使技術人員無法有效率地解決。
有些種類的漏洞只有當程式執行時會存在,像是那些牽扯到應用程式配置或是環境配置的部分。自動化動態掃描工具可以在程式執行時找出這些漏洞(例如在測試系統時)。事實上,將動態分析工具接在企業組織現有的測試工具上是非常有效的。動態分析工具只能分析那些會被執行到的程式碼,沒被執行到的部分不會被分析。所以,動態分析的結果只能反映有被掃描到的部分的情況,這對於測試結果有重大的影響。
大部分QA企業常常有交貨期限的壓力,他們變得比較注意較為重要的程式部分 – 也就是高用量的部分,留著比較不重要的部分在佈署之後再解決。根據上述的情形,狡猾的攻擊者就鎖定應用程式中比較不常被使用的區塊,因為這些區塊在開發過程中比較不受重視,較有可能含有漏洞。為了領先攻擊者,企業組織必須使用動態分析工具,無論是在測試時或是佈署後。使用動態分析工具,使企業在開發應用程式的同時能找出在「低用量」區域的漏洞,並在發生任何災情前將其修補。
對於任何企業來說,確保系統的安全都是至關重要的,但也不能單單為了確保安全而影響到生產力和交貨日期。大部分的IT企業都為了趕上進度日以繼夜的努力著,開發團隊大部分的時間都花在開發比較重要的部分,往往只有小部份的時間可以用來解決安全問題。因此,他們不見得有時間解決所有的安全問題。根據估計,依照技術和開發程式技巧的不同,每一百萬行程式碼中可能含有數百至數千的漏洞。如此多的漏洞加上極少的時間,使得將漏洞優先排序變得非常重要。並不是所有漏洞的威脅程度都一樣:有些非常致命、有些次之、甚至有些根本無關痛癢。優先排序可以自動並有效的解決這個問題,這是目前市面上產品大多缺少的功能。
資訊安全公司必須了解每個應用程式所面臨的威脅,並確保能將其修復。然而,應用程式開發者才是真正需要去處理這些威脅的人-在此同時他們還需要確保開發的進度和品質。就算是小小的威脅都有可能對進度產生極嚴重的破壞。在修復軟體中的漏洞時,時間是非常重要的。程式開發者和系統安全人員必須緊密的合作,才能迅速並有效的應付可能面臨的威脅。自動化這個功能可以將修復效率最大化,並有效的縮短修復時間。