Web應用程序安全:通過設計來保證安全
應用程序并不是一成不變的,它們可能一開始只是一組功能,然后添加上元素并與其他應用程序合并變成其他復雜的應用程序。隨著應用程序的越來越復雜,漏洞越來越多,特別是托管在Web上的應用程序以及遷移到云端的應用程序都會出現(xiàn)很多安全問題。
“Web應用程序是頭等攻擊目標,因為它們很難被保護。今天,云部署完全由web驅動,這意味著云和web應用程序漏洞將直接碰撞。”OWASP志愿者連接委員會主席兼White Hat安全架構的副主席Jim Manico說。
OWASP主席兼Mozilla安全保障總監(jiān)Michael Coates認為,為這些技術開發(fā)一個“通過設計保障安全”的架構已經(jīng)是一個挑戰(zhàn)。一旦發(fā)展中的企業(yè)將新應用納入受信任架構之下,下一個障礙就是在這些應用隨時間改變以及遷移到云中保持一種安全態(tài)勢。
據(jù)2011年Ponemon Institute和加密供應商對Vormetric對安全與服從性進行的調查發(fā)現(xiàn),大多數(shù)安全和服從性方面的專家相信當前部署到云的趨勢到來了更多漏洞。在此項調查里,不到40%的受訪者信任自己的技術有能力保護其云中的敏感數(shù)據(jù)——不到三分之一的受訪者對其云中的敏感數(shù)據(jù)進行了加密。
專家稱,加密是一個基礎設計點,所以應在含有敏感數(shù)據(jù)的應用中充分考慮到,然而這也是云中最難實現(xiàn)的進程。
在一個安全的設計方案中還需要些什么要素?人們會根據(jù)自己所在的行業(yè),所設計的云或Web服務類型來給出答案。不過,有一些常見的設計領域可同時應用于Web和云應用。這包括收集商業(yè)請求,開發(fā)和測試;訪問,驗證和數(shù)據(jù)保護;配置和分區(qū);可視性;維護和持續(xù)性。
開發(fā)
專家稱,應用程序是由程序員在不同的時間編寫并進行升級,且通常也沒有總體規(guī)劃,程序中包含了一堆有著已知漏洞的代碼,對象和平臺。
賽門鐵克高級技術總監(jiān)Gary Phillips
賽門鐵克高級技術總監(jiān)、SAFECode董事會成員Gary Phillips稱,隨著應用程序將更多的部署到虛擬化環(huán)境、云計算環(huán)境甚至是移動平臺中,一個安全的程序設計要在開發(fā)完成前和開發(fā)期間都對應用程序進行測試。
據(jù)Phillips透露,安全的代碼開發(fā)實例正在商務供應商之間興起。最新的IBMX-Force2011年中趨勢與威脅報告中提到的Web應用程序漏洞在減少也證明了這一點。報告中提到這是六年來Web應用程序漏洞第一次出現(xiàn)減少,從去年的49%降到了37%(占2011上半年所報告漏洞總和的比例)。
IBM高級安全總監(jiān)Jack Danahy
另一方面,IBM高級安全總監(jiān)Jack Danahy稱,漏洞的數(shù)量翻了三番,而寫這份報告的人預計移動漏洞的數(shù)量在2012年會翻兩倍。SQL注入,XSS,輸入驗證和大量傳統(tǒng)攻擊方法都盛行于Web應用程序當中,這些則不應該帶到云中去。
為了在應用完成開發(fā)前確認哪些漏洞可能被攻擊者利用,必須從整體的角度看應用。應用開發(fā)顧問公司Denim集團CTO Dan Cornell稱這就是通常所說的攻擊面。
OWASP,SAFECode,云安全聯(lián)盟提供的工具,庫和API等可以幫助程序員模擬應用威脅,發(fā)現(xiàn)應用程序中可能出現(xiàn)故障的代碼,調用,互動和功能。
Cornell稱,從確定數(shù)據(jù)價值開始,應用程序會包含或訪問。例如,如果涉及個人可識別信息(PII),醫(yī)療保健或金融信息,應用就會成為目標。然后,通過查看應用的單獨組件模擬威脅。
Cornell建議企業(yè)設計安全的工作區(qū),如連接器,API,增強系統(tǒng)。可能的話,使用新的應用設計作為升級舊的不安全系統(tǒng)的契機。#p#
配置
Verizon公司Terremark安全方案總監(jiān)Omar Khawaja
Verizon云服務子公司Terremark安全方案總監(jiān)Omar Khawaja舉例稱,假設一個客戶面對的是處理金融交易的Web應用程序。在設計期間,必須在Web和交易服務器之間創(chuàng)建信任邊界來保護數(shù)據(jù)。這看似明顯的設計點,但是在虛擬環(huán)境和云環(huán)境中,這些信任區(qū)域常被忽視了。
賽門鐵克Phillips稱,當設計商務云服務供應商時,安全的區(qū)域也包括云中的客戶是如何彼此分隔的。
身份與訪問管理供應商Symplified公司CEO Eric Olden稱,身份聯(lián)盟,驗證和訪問標準——如OAUTH,XACML,SCIM和SAML——現(xiàn)正處于設計種,目的就是滿足訪問需求。
業(yè)內(nèi)專家認為敏感數(shù)據(jù)加密還應該與驗證聯(lián)系起來。不過,據(jù)云安全聯(lián)盟去年十一月發(fā)布的一項調查結果顯示,云加密產(chǎn)品并不是非常有效。該份由TrendMicro贊助的報告推薦給傳輸,存儲中的數(shù)據(jù)設置多層加密,并進行密鑰管理。
▲Voltage安全產(chǎn)品管理副總裁Mark Bower
Voltage安全產(chǎn)品管理副總裁MarkBower透露,驗證應該與數(shù)據(jù)加密聯(lián)系起來以減少實時數(shù)據(jù)的暴露——特別是新技術,如隔世保存加密。他說,“加密還應該用于保護授權用戶的實時數(shù)據(jù),例如,為了驗證一個交易或是將用戶與其賬號匹配,運營商或許只要查看社保卡號碼碼的最后四位數(shù)字或者只查看信用卡號碼的最后一節(jié)。”
目前,大多數(shù)企業(yè)應該可以用數(shù)據(jù)集中方式加密自己的敏感數(shù)據(jù),這意味著存儲中,傳輸中和使用中的敏感信息都處于加密狀態(tài)。如果企業(yè)過渡到IaaS,他們就要為自己的應用負責,或許他們可以通過基于標準的API在云中復制相同技術。
如果購買SaaS,企業(yè)應該了解供應商如何幫助自己加密數(shù)據(jù),特別是如何進行云中的密鑰管理。例如,Voltage為Voltage云服務文件和郵件加密客戶管理云中密鑰。企業(yè)或許也想用on-premise密鑰服務器控制自己的密鑰。
OWASPManico稱,當思考云中的應用程序部署時,托管環(huán)境的特殊類型決定了安全功能(如加密和監(jiān)控)會怎樣獲得支持。
例如,在IaaS模式中,要求這項服務的企業(yè)要對自己的應用程序負責。而如果是SaaS,供應商則會為企業(yè)管理應用。SaaS服務供應商還能管理云中的安全應用,并為客戶提供新的安全服務。
可視性和維護
在研發(fā)的關鍵階段和應用程序投入生產(chǎn)后,靜態(tài)分析和功能性測試也同樣重要。所以必須在設計,開發(fā)和后期生產(chǎn)期間測試應用程序以維護應用程序的安全態(tài)勢。
賽門鐵克Phillips稱,這意味著設計必須包括基本的監(jiān)控支持,如產(chǎn)生有用的日志,數(shù)據(jù)和訪問注冊的更改。
有大量工具與服務可用來測試Web應用程序看是否存在SQL注入,XSS和其他源于代碼的功能型漏洞。不過,專家認為在公共云應用的可視性方面,企業(yè)必須依靠其云服務供應商提供的監(jiān)控工具來監(jiān)視自己的數(shù)據(jù)。對供應商網(wǎng)絡的監(jiān)視主要依靠合同和年度審核。
安全的設計需要在業(yè)務,開發(fā)和安全部門之間共同計劃和協(xié)調。做起來雖難但并非不可能。#p#
程序安全設計的資源
為程序員尋找指導方針比為設計師和規(guī)劃者尋找指導方針要容易。下面就是例子:
云安全聯(lián)盟有很多用于開發(fā)和部署云的指導方針,包括:
云計算重點領域安全指南——描述了云類型和組成要素以及映射出架構,管理和運營中關鍵區(qū)域威脅的方法。
一個CloudControlsMatrix樣式表為云服務運營商和客戶列出了控件區(qū)域,規(guī)格和架構組件。
訪問公共云,私有云和混合云環(huán)境的工具集
OWASP有一個常用的代碼審查指南,它將安全,設計和業(yè)務環(huán)境聯(lián)系起來。其他流行的資源包括:
給程序員的安全小抄;
威脅建模指導;
安全編碼與測試指引。
SAFECode最近發(fā)布了安全軟件開發(fā)基礎實例的第二版,其他資源包括:
供應鏈應用的軟件保障;
軟件完整性控制的概述;
軟件安全工程師培訓。
程序安全設計要點
不論應用程序被部署在何處,基礎設計架構都適用。在賽門鐵克案例中,開發(fā)團隊都遵循這些基本設計原則:
1、在信任邊界數(shù)據(jù)重復驗證與保護
在信任邊界進行的數(shù)據(jù)傳輸必須受到保護,如在跨優(yōu)先級別的處理或是兩個獨立電腦之間進行處理。數(shù)據(jù)的類型,數(shù)值范圍,客戶端和服務器端的語義都必須進行驗證。數(shù)據(jù)保護可通過數(shù)據(jù)簽名這類機制來部署。
2、服務器和用戶代理的共同驗證
由于許多不受信任的實體都涉及用戶代理和服務之間的互動,所以用戶代理和服務必須創(chuàng)建共同驗證,而最好是通過PKI和多要素驗證實現(xiàn)共同驗證。
3、防止偷聽——強加密
敏感數(shù)據(jù)和關鍵數(shù)據(jù)可能暴露在用戶代理和服務器之間不受信任的實體面前。FIPS140-2服從加密法則必須用于傳輸中的數(shù)據(jù)。即便是閑置的敏感數(shù)據(jù)也必須加密。要使用加強型密碼增加解密的難度。
4、會話超時和一次性密碼
長時會話可能導致攻擊重現(xiàn)和會話劫持。特別是在云應用中,一次性密碼和短時會話可以顯著降低這類漏洞的威脅。
5、最小特權
由多個要素組成的應用程序只能授予最低許可和最小權限,以減少攻擊者提高優(yōu)先權帶來的風險。
6、分區(qū)
隔開開規(guī)定的權限和資源,從而減少資源消耗和ddos漏洞。