每一套應用軟體在開發過程中,難免有瑕疵,有時盡管整合了很嚴格的品管與測試作業,還是有可能趕不及在產品上市前,找到所有問題、進而修正,等到使用者實際應用時,這些狀況才會浮現,並回報給廠商處理,其中,像安全性漏洞這類產品瑕疵的發現、修正,也是軟體品質管理所要涵蓋到的部份。

而對於大型軟體廠商而言,由於安裝產品的用戶數量眾多、本身的產品線廣泛,再加上在每一套產品上需維護各種版本,就安全性而言,所要守護的戰線相當漫長,因此如果他們沒有採用妥善的作業流程來因應,同時,想要在產品開發與維護的過程中,能持續落實軟體產品的安全性,將是相當困難的。這也是微軟、Adobe等軟體廠商,之所以要發展或導入軟體安全開發生命週期(Security Development Lifecycle,SDL)的主要原因。

以微軟的產品而言,單就作業系統就涵蓋了智慧型手機、平板電腦、個人電腦、伺服器等平臺,同時,他們所發展的應用軟體執行環境,也包含企業、家庭與個人,後來還有各式各樣的雲端服務要維運,複雜性之大可想而知。相較之下,Adobe的產品線較為單純,雖然少了作業系統平臺,但就該公司目前的應用軟體發展趨勢而言,也有越來越複雜的跡象——先前僅針對個人電腦桌面應用,隨後擴及網頁伺服器與商用環境整合,近期更推出雲端服務。

對於軟體安全性的提升,Adobe公司內部目前已經推動了3項組織變革。首先,是成立了軟體安全工程團隊(Adobe Secure Software Engineering Team,ASSET),負責和不同的產品安全性團隊合作,確保公司產品的安全性達到最高等級的要求;其次是建立了產品安全事件反應團隊(Product Security Incident Response Team,PSIRT),主要是和公司內部的產品開發團隊合作,針對危害產品安全性的各種威脅,找出適當反應計畫;最後,是導入Adobe自己發展的產品安全生命週期(Secure Product Lifecycle,SPLC),裡面包含了嚴格的軟體安全性開發實務、流程,以及專門針對使用Adobe軟體時所設計的安全性維護工具。

Adobe軟體被盯上,成為漏洞利用和偽冒等惡意行為的主要目標

之所以推動這些軟體安全性措施,最主要的原因是因為Adobe應用軟體當中,幾乎每一臺個人電腦上都安裝了這些產品,於是這成為駭客想要利用其漏洞來發動攻擊的熱門目標,因為投資報酬率很高——只需要投入很少的力氣,就能影響最多人的電腦。

當前安裝在個人電腦中的軟體裡面,除了一般人所熟知的微軟Windows和Office之外,Adobe公司所開發的Flash Player和Reader也是相當普遍的,因為使用者瀏覽網頁的Flash動畫和檢視PDF文件時,經常會需要用到,因此普及率之高也不在話下。尤其是Flash Player在個人電腦安裝的比率最高曾達到99%,雖然現在智慧型手機與平板電腦崛起,這些行動平臺不願意支援Flash,使得Adobe決定中止發展相關技術,但根據該公司的統計,目前仍有5億個連網裝置在用Flash。

軟體的高市占率往往引來駭客的覬覦,因此在這幾年來,Adobe也開始面臨和微軟類似的軟體安全性危機,不只是Flash Player、Adobe Reader,該公司其他軟體產品當中的安全性漏洞一旦被發現、揭露,很快地將會成為許多駭客想要利用的目標。這樣的態勢特別是在2009年以後,更為顯著。為了不讓安全性漏洞的問題越演越烈,Adobe也持續加快腳步,儘快針對已知弱點發布修補更新程式,降低零時差攻擊(0 Days)發生的機率。

這是一場長期抗戰,但去年Adobe還發生了另一個有別於上述手法的資安事件——並不是直接針對Adobe軟體的漏洞來,而是先滲透Adobe公司使用者電腦,接著從這些電腦以APT(Advanced Persistent Threat)的侵入技巧,取得登入程式碼組建伺服器(Build Server)的權限,再透過這臺組建伺服器,用一般Adobe軟體的標準協定去拿到該公司的程式碼簽署憑證(Code Signing Certificate);這些非法取得的Adobe程式碼簽署憑證,後來被嵌入惡意程式內,假裝是該公司所開發出來的應用軟體,並散播出去,等到Adobe接到有人通報這些惡意程式,才開始展開調查。最後,他們公告了這件事的始末,並且計畫撤銷所有受影響的憑證,也就是該公司在2012 年7月10日以後,簽署的所有軟體程式碼都要作廢。

弱點修補應聚焦,針對那些可能遭濫用的部分

面對Adobe Reader和Flash Player的漏洞大量遭到駭客濫用狀況,Adobe資安長Brad Arkin表示,他們除了持續研發出修補程式,也設法透過發現與修正弱點的方式,讓程式碼執行起來更安全,但情況改善的程度有限。

例如他們曾經針對Adobe Reader 9,用模糊測試(Fuzz Testing)來找出弱點並予以修正,但後續還是出現了很多針對PDF、Adobe Reader漏洞的零時差攻擊;直到推出Adobe Reader 10,當中加入了保護模式(沙箱技術),相關的漏洞濫用行為還是會有,但數量上已大幅降低。

在Flash Player上,Adobe也觀察到類似狀況。當Chrome瀏覽器內建了針對Flash Player執行時的沙箱技術後,所遇到的零時差攻擊也減少了——這時Flash Player被濫用的弱點,主要是跨站腳本(XSS),而不是遠端程式碼執行(RCE)。因此,Adobe認為與其耗費很多時間執行很多次模糊測試,對於程式碼安全性的改善僅能到達一定程度,之後即使投入再多,仍無法再提升。

分析過很多次利用漏洞來發動攻擊的行為,Brad Arkin發現駭客選擇攻擊目標的軟體時,是會考量投入的成本是否划算——如果你的產品不再那麼容易被攻陷,過一段時間仍沒辦法找到安全性漏洞,他們會轉移目標。因此他推測,軟體本身若以減少弱點為目標,是無法增加駭客發動攻擊的成本,唯有降低被威脅影響的程度(Mitigation)才能奏效。

就另一個層面來看,駭客要研發出能利用漏洞來發動攻擊的模式,是要付出代價的,因此他們會設法降低這個成本,因此在不同時期所進行的研發,所耗費的代價也不同——大部分利用漏洞來發動攻擊的行為,在剛被駭客發明的初期,他們的成本是最高的,因為其他的攻擊行為無法分攤這些投資;但等到後續有人以這個漏洞利用方式作為基礎,加以調校所發展出來的攻擊,它的成本相對於前者是較低的。

因此就防禦威脅的角度而言,若能及早修補弱點,不只能阻止第一種成本較高的攻擊模式,也可同時防範第二種成本較低的攻擊模式奏效。那時,就算第二種成本較低的攻擊模式被發展出來,對於被攻擊的軟體而言,也已經沒有明顯可利用的地方,因此兩種攻擊的效果都會變得很差。反之,如果沒有擋住第一種攻擊模式,等到第二種攻擊模式被發展出來後,因為研發起來更容易,相關的攻擊行為數量就會快速增加。

就弱點修補的工作來說,Adobe也觀察到傳統的更新程式部署步驟中,每一階段之間有很大的鴻溝,尤其是在開始部署到系統組態趨向一致的過程中,無法完全保證相關更新程式套用上去,這將使得系統的平均故障時間(MTTF)無限延長,也因此,用戶對於這類利用漏洞來發動攻擊的行為,沒有後續反應時間(例如偵測、封鎖、消滅)。

該如何改變這樣的劣勢?Brad Arkin認為唯有透過快速更新的方式(Rapid Refresh),才能真正降低修補程式部署的空窗期。但這裡的快速更新並不是縮短使用者電腦下載修補程式的時間,或加快安裝修補程式的速度,而是持續維護一個超級映像檔(Gold Master Image),不斷地將漏洞修補程式整合到這個映像檔內,同時,映像檔部署到電腦系統內上線之後,下一次執行超級映像檔重新部署的頻率必須提高。

透過這樣短暫、頻繁且不斷循環反覆進行的超級映像檔上線、汰換程序,若超級映像檔能源源不絕地將修補程式整合其中,每一臺電腦的系統狀態在這種映像檔本身內容持續更新,又搭配短期部署的特殊作法下,對基於同一個超級映像檔的全部用戶端電腦來說,是有機會做到逼近零時差的修補程式套用。

以一般PC系統來說,若偶爾要維護這種超級映像檔,透過手動方式進行會耗費很多時間,勉強可行,但若要長期持續維護,就可能要透過一些專屬的軟體來幫忙。

像是IBM,他們有這方面功能的產品,例如Tivoli Provisioning Manager和Virtual Desktop for Smart Business,分別對應實體與虛擬化系統的映像檔管理。

另外, VMware在去年併購Wanova後取得了Mirage這套軟體,而這當中也提供超級映像檔管理機制,今年初推出的VMware Horizon Suite也包含了Mirage,可將映像檔安裝在實體的Windows PC,以及架設在Mac OS X下的VMware虛擬化環境(VMware Fusion Professional)當中的Linux虛擬機器與Mac虛擬機器。

當危機來臨時,要妥善運用,不要輕易浪費

面對上述駭客濫用漏洞來發動零時差攻擊,以及竊取、冒用了Adobe程式碼簽署憑證等狀況,Brad Arkin認為挑戰有兩個部分,其中之一,是如何讓開發團隊能夠覺醒、開始認真看待軟體安全性這項議題,另一個如何在衝突的軟體工程優先執行順序上,能夠與安全開發的應用達到平衡。

而為了要突顯目前軟體安全性不足所導致的種種危機,其實也代表改變的時機已經到了,Brad Arkin也引用了莫內的名言:「人們只有在面對必要性考量時,才會接受改變,而這必要性之所以出現,往往在於相關的危機已經迫在眉睫了」

要怎麼危機扭轉為轉機?Brad Arkin認為,首先在還沒開始進行這樣的變革前,你要做好足夠的準備。

例如建立自己的人際社交網路,以及了解業務端需求,接著需要掌握可能出現的情境,再開發出一套簡易的計畫,同時要讓開發這件抽象的工作變得可以去具體評估。

他說,第一步,是要用對方聽得懂的語言。在溝通上,我們可以先用一些事實作為開場白,但先不用管細節,此外,要能提供清楚的推薦。

而第二步,是將計畫加以實作。這當中成功的關鍵因素,包含人、流程與技術等。

第三步是準備擴大應用規模。你需要開始導入與擴大規模相關的教育訓練計畫,其次是建立(與使用)自動化處理的工具,然後是要讓既有的管理架構發揮影響力。

第四步是保持住這樣的氣勢。首先,你可以利用這樣的危機來推動組織文化的改變;然後,你要遵循(與適應)那些已經妥善驗證過的流程;其次是將危機的應變計畫提升為一個長期的安全藍圖,同時,你要長期地去導入不同的健康指標。


跟Adobe學安全開發流程:掌握關鍵,做對事

1. 認清敵人的規模與能力比你強大。

2. 墨守成規對提升防禦力不管用。

3. 應專注在駭客利用的漏洞上。

4. 降低威脅影響程度,才能嚇阻攻擊。

5. 接受你被打敗的事實,重新思考。

6. 用危機驅動所有人接受改變。

 

用模糊測試的方式來找尋應用軟體或系統的安全性弱點,效果是有其極限的,而且當投入的成本高到某一個程度時,程式碼修改後所提升的安全性反而會越來越有限。

 

透過以超級映像檔(Gold Master Image)為基礎的快速更新(Rapid Refresh),企業只需持續將漏洞修補程式整合至映像檔內,同時提升部署、汰換映像檔到用戶端電腦的頻率,即可更進一步地落實將系統組態更新至最健康、已知弱點最少的狀態。

 

Adobe雖然對Adobe Reader 9進行了模糊測試,但事實證明,後續仍然出現許多漏洞被駭客利用來發動攻擊的狀況。反而是等到Adobe Reader 10推出之後,因為內建了沙箱技術,所以,這樣的漏洞利用行為次數才大幅降低。

 

即使軟體開發商快速釋出弱點修補程式,然後從部署到用戶端電腦,到系統真正將修補套用上去的時間是無法確定的,因而使得系統發生故障的平均時間有可能無限長,這也將導致系統真正面臨攻擊時,是處於完全沒有反應時間的狀態。

 


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

熱門新聞

Advertisement