眾所週知,微軟最早並沒有踏入資訊安全的領域,之所以開始發展相關的系統防護措施,主要跟2000到2001年時透過網際網路大量繁殖的病毒、蠕蟲等安全威脅有關。

這些能夠干擾、癱瘓電腦系統運作的惡意程式,之所以能夠滲透到連上網際網路的個人電腦,主要是利用微軟作業系統的安全性漏洞。因此,使用者在自己的電腦上,除了仰賴自行安裝防毒軟體來偵測、阻擋惡意程式之外,微軟也積極針對這些被濫用的漏洞發布修補程式,讓使用者能夠自行下載來安裝,強化對於威脅侵入的抵抗力。

在此同時,微軟也逐漸意識到自身對資安威脅反應力不足的問題,而且必須找到正確的方法來解決,不過,當時微軟只能投入小型團隊,透過特殊流程來處理這些需求。

2002年Bill Gates宣示做好資安,成為全公司恪遵的重要政策

微軟真正開始發展資安防護,是Bill Gates在2002年對全公司員工發出的備忘錄中,提到了高信賴度運算(Trustworthy Computing,TwC)的概念,意思是人類生活相當依賴電腦運算,因此微軟應該建立一個這樣的平臺,讓電腦運算像水、電、電話的服務供應一樣──不只是隨手可得,而且還要安全、可靠。

他認為,雖然微軟對於提供安全性修補的反應速度做得不錯,但應該從軟體設計的層面著手,才能更有效地降低軟體出現這類問題的機會,同時,也要讓使用者能自動取得這些修正程式;最後,軟體可以做到徹底安全,讓用戶不再擔心。

在微軟開始推動TwC後,他們首先開始著手的,是對於安全性的宣導與教育訓練,當時主要依賴一支小型專家團隊來進行。

這段期間,Windows與其他微軟產品的安全性,繼續遭受到更大的挑戰。例如2003年先後出現了SQL Slammer、Blast等網路蠕蟲程式的快速繁殖。前者主要針對部分主機發動阻斷式攻擊(DoS),並且嚴重影響了整個網際網路的傳輸效能;後者則是使電腦在感染後,不斷出現重開機的狀況而無法使用。而這些蠕蟲之所以擴散,就是利用了微軟Windows的安全性漏洞。

因此微軟決心要強化Windows的安全性功能,最重要的成果就是2004年推出的Windows XP Service Pack 2,例如開始內建個人防火牆、增加了資料執行防止(Data Execution Prevention,DEP)、強化對IE瀏覽器外掛的管理、自動啟動系統更新機制。

此外,2003年下半,微軟也正式宣布在每月第二週的週二定期發表安全性更新,由他們成立的安全反應中心(MSRC)來統籌更新程式的研發、測試,以及公布相關的安全資訊。

SDL登場,微軟所有產品線都導入

對於威脅的應變,除了持續提供修補程式和安全公告,微軟也發現,在他們的軟體研發作業上,需要一個持續進行,同時又可延展規模的制式流程,因此在2004年開始,他們針對全公司實施了安全開發生命週期(Security Development Lifecycle,SDL)的政策,目的是為了進一步地確保所有軟體產品的安全性,將安全性與個人隱私的考量,能夠深入地整合至微軟自身的文化與推出的軟體產品。

微軟認為,SDL之所以要全面施行,並用務實的方法來執行,目的是為了降低軟體安全性弱點的數量與影響程度。此外,因為結合了SDL的應用,因此後續微軟在軟體開發過程中經歷所有的階段,都已經涵蓋到安全性與隱私的考量,同時也將SDL視為可持續改善軟體安全性的開發框架。

實施SDL之後,微軟新版產品的安全性弱點數量大幅降低

為了達到這樣的目標,微軟必須將SDL的理論化為實務,所以他們需要建立對應的檢查清單、工具和標準,在2005年到2007年期間,他們發展出自動化處理與減輕威脅的機制,而SDL執行後的效果也相當顯著,微軟後來研發出來的產品受到威脅影響的程度、漏洞被利用與系統遭到感染的機率也降低了。

最典型的例子是Windows Vista和SQL Server 2005,同樣以產品發行後一年被揭露的安全性弱點數量來看,微軟看到在Windows Vista上有66個,Windows XP則有119個,新版的弱點數量少了45%;SQL Server 2005有3個,而SQL Server 2000有34個,弱點數量減少的比率更驚人,達到91%。

以微軟Office這套產品來看,根據DoxPara Research針對不同版本執行模糊測試,2003版有73個弱點,到了2007版只有12個,而2010版時,繼續減少,僅有7個。相較之下,同時受測的另一套Office軟體Star Office/Open Office,在2003年的版本中,安全性弱點雖然較微軟Office 2003少,但有73個之多,後續版本的弱點數量雖然也變少,但2007年的版本弱點還是有62個,而在2010年的版本還有20個。

另一份數據也可呈現SDL的有效性──當軟體開發結合SDL後所推出的產品,電腦感染惡意程式比率降低。這裡的統計,主要是微軟透過每月定期發布到用戶端電腦的惡意軟體移除工具(MSRT),來計算因為Autorun漏洞受到惡意程式感染的電腦比例,結果顯示,同樣都是套用安全性更新後,XP SP3、Vista SP1與SP2的感染率,比XP SP2下降了6成到8成。

因此,對現在的微軟而言,SDL並非只是一些核心概念,他們已經將它實際應用在自己研發的數百種產品之上,而這些軟體或服務能執行在多種作業系統和硬體平臺類型上,所以在如此複雜的開發過程中,仍能順利應用SDL、提升應用程式安全性,這意味著相關作法是可行的,而非紙上談兵。

此外,微軟在產品開發上面臨的另一個巨大考驗,如何將SDL應用在跨國開發團隊的協同作業上。實際上,微軟的開發團隊分散在100個以上國家或地區,但他們所導入的SDL作業流程也已經能順利搭配上去。這表示,對於各地應用微軟產品時所提出的特殊安全與隱私性要求,微軟在產品開發過程中也能夠因應。

SDL的下一步:建立相關應用的生態系統、發展為國際化標準

從2008年到2012年,微軟將本身實作SDL的作法公諸於世,並且推出了許多輔助開發人員使用的軟體,例如建構威脅模型的工具、流程範本、攻擊面向分析工具。

針對目前網頁應用程式開發時,出現了越來越多的敏捷式開發(Agile Development)的需求,微軟也加以調整、簡化,讓SDL能夠適用在這樣的開發流程下執行,並且推出了一份專屬的指導文件《Security Development Lifecycle for Agile Development》(簡稱為SDL-Agile或SDL for Agile)。

最近幾年以來,實際採用微軟SDL的公司和單位也變多了。有一些自行開發軟體的企業或組織,開始積極擁抱軟體安全開發實務,像是印度政府、能源和水資源管理解決方案提供商Itron、石油天然氣公司Apache Corp、能源控股公司MidAmerican Energy。

而在獨立軟體開發商當中,也有幾家大型IT公司開始導入SDL,例如Adobe發展的SPLC(Secure Product Lifecycle)、Cisco建立的CSDL(Cisco Development Lifecycle)。

此外,資安顧問公司Accuvant也支援SDL。該公司加入了微軟SDL Pro Networks這個組織,當中結合了應用程式安全專業領域相關的顧問、教育訓練公司和工具廠商,裡面的成員都必須對SDL的方法論和技術有豐富經驗。而Accuvant主要負責的部份,是針對整個產品團隊或開發單位,來進行各個不同層面的SDL審查工作,同時也提供服務,協助個別客戶通過SDL導入過程中的每一個階段。這意味著可應用SDL的環境已經不只是微軟本身,而是擴大到整個IT應用供應鏈都能適用。

除了上述的成就之外,今年微軟在SDL的應用上,又邁入新的里程碑──他們打算將安全開發流程予以標準化。在安全開發大會(Security Development Conference)上,Scott Charney正式宣布微軟將推動基於國際標準的安全開發方式,並且會加以遵循。

在微軟的聲明中指出,自從2004年至今,SDL已經成為全公司施行的重要政策,他們採用了一種以風險為考量的方式來考量軟體安全的投資,並以此建立了持續改善流程的計畫。在2012年,微軟決定採用ISO/IEC 27034-1這套國際級的應用程式安全標準,作為評估委任開發的政策、標準與處理程序,當中將會利用可提供支援的人員、流程與工具──這些都將符合或滿足2011年所公布的ISO/IEC 27034-1的要求。

微軟之所以要鼓吹SDL要走向標準化,Scott Charney認為,主要是因為安全開發已經不只是每家軟體公司所需要關切的,也關係到整個IT應用供應鏈能夠正常運作,上下游供應商、用戶都需要關切安全開發這項議題。

在ISO/IEC 27034-1當中,軟體開發人員將可以得到更清楚的需求、品質指標,以及安全開發流程的範例。有了這項標準,購買軟體的用戶和開發人員討論安全開發流程時,能更有條理地進行。同時,若要針對特定的需求或現實考量,開發人員能夠依據這項標準以保留足夠的彈性。

如此一來,開發人員可以遵循一套比較容易描述和讓人理解的良好流程,而採購軟體的人員也能以此要求軟體供應商,在落實安全開發程序的過程中,堅守國際知名的標準。

以效益來看,微軟認為,安全開發若能走向標準化,對軟體供應商、用戶與政府等不同角度的運用,都會有很大幫助。

首先是產品的品質,對供應商和政府來說,都能夠憑藉一套妥善定義的指標來看待軟體優劣;而對用戶來說,可以明確以此辨識所購得得軟體產品是否有足夠的可靠度。

其次是效率,供應商能藉著標準的施行,改善內外溝通的效果,而用戶和政府可以因此提升IT採購和要求遵循法規的效率。

在需求管理上,有了ISO/IEC 27034-1這樣標準化的安全開發流程,也有助於供應商快速協調跨國的開發需求,以及避免政府執行相關應用時的計畫產生分歧。此外,這項標準可以確保人員、流程與產品的一致性,改善軟體安全性。

綜觀SDL這麼多年的發展,微軟已是推動這個領域的重要角色,但對他們而言,如何提升安全性仍然面臨了很多挑戰,例如雲端運算的興起、更多運算裝置與應用程式的出現、巨量資料處理的需求,以及針對性攻擊、持續性威脅的增加,同時,以整個國家為基礎的IT治理開始成型。這些都是微軟去年慶祝高信賴度運算邁向第十年里程碑時,所認定要不斷關注的目標,該公司的研究暨策略長Craig Mundie表示,高信賴度運算的下一步,將聚焦在裝置與服務。


跟微軟學安全開發流程:讓安全性考量成為產品開發的基因

1. 將安全性融入開發過程是必備作法。

2. SDL利於符合法規需求及降低成本。

3. 需依時機、資源與實務作法實作。

4. 訓練、持續改善及專責是關鍵。

5. 標準化SDL利於全球協同運作。

 

微軟發展出來的軟體安全開發生命週期導入,分為7大步驟,包括教育訓練(Training)、需求管理(Requirements)、設計(Design)、實作(Implementation)、驗證(Verification)、發布(Release)、反應(Response)。

 

圖中是SDL如何做到最佳化的應用模型。要做好安全開發,有賴於開發團隊本身的成熟度,橫軸是基本、標準化、進階與動態等4個成熟度等級。而在不同成熟度下的開發團隊中,對於能力的要求,又可分為教育訓練、政策與組織能力,以及需求與設計、實作、驗證、發布與反應等5類。

 

 

 


相關報導請參考「軟體開發安全實務大公開- 跟世界頂尖IT公司學安全開發!」

熱門新聞

Advertisement