首頁 > 資安知識庫 > 系統與平台安全 > 軟體安全開發

OWASP Top 10 外又一章:追求開放源碼軟體的安全之道

作者:ant -2010 / 04 / 02 列印 加入我的最愛 分享 將這篇文章分享到 Plurk 噗浪

全球開放源碼熱潮,逐年增加其對全球資訊知識經濟體系及各國政府的影響力。除了各國企業紛紛投入開發行列外,各國政府組織也開始推動。在台灣,開放源碼社群每年會舉辦COSCUP (開源人年會)[1],政府也成立了中華民國軟體自由協會[2],以及中央研究院資訊科技創新研究中心的自由軟體鑄造場[3]等單位。台灣企業也紛紛成立開放源碼研發單位並開發出相關解決方案。

熱潮之下總會帶來風險。因為開放源碼的社群模式與一般非開放源碼的商業模式,有著本質上的不同。這些不同點,造成程式安全風險也會不同。因此若直接將一般的風險評估模式套入開放源碼的模式中,勢必會造成偏誤,甚至帶來無法預期的商業損失。

本篇主題將從 OWASP Top 10 沒提到的觀點延伸,來討論開放源碼軟體在商業應用策略上應該注意到的問題,諸如企業內部採用開放源碼的安全要點,以及業者銷售開放源碼整合解決方案的注意事項等。

那些 OWASP Top 10 沒提到的事
OWASP組織一直致力於研究網頁應用安全,雖然今年預計提出的2010年版OWASP Top 10正式報告尚未出爐,但目前已有 RC1 的版本供安全趨勢參考[4]。OWASP Top 10報告具有極高的網頁應用安全代表性,同時也被許多網頁程式設計師奉為網頁程式安全撰寫的最佳實務參考手冊。

然而,這篇被奉為聖經的參考手冊中,很多網頁程式設計師容易誤解其中帶來的指標性意義。OWASP Top 10報告中,其「Warnings」部分有明確指出參考時需要注意之處。這意謂著在參考這份手冊時,若只是盲從遵守其教條,將無法正確避免潛在的風險。

在「Warnings」部分中說明了五大項注意事項,前兩項分別為「Don''t stop at 10」及「Constant change」。這裡開宗名義地指出了 Top 10 只是眾多安全問題中的一部分,並不是所有的潛在安全風險,而且這些風險指標並非固定不變,而是會隨時間持續變化。因此,了解 OWASP Top 10報告的評估方法變得格外重要。

OWASP Top 10 的評估方法

OWASP Top 10是基於MITRE-CVE (Common Vulnerabilities and Exposures,通用弱點與揭露)、Aspect Security、Softtek 及White Hat的弱點知識庫,並將資訊分門別類以類型與風險來區分,最後再以安全專家們的意見加以補強與修正,例如居於2010年版 OWASP Top 10 第五名的 CSRF (跨網站請求偽造, Cross-site Request Forgery),其風險是根據許多專家經驗所做出的排名。

但OWASP Top 10與其它資安風險報告一樣,歷年來的報告也被許多資安專家質疑其代表性。最大的疑問在於其是否能夠反應真實世界的威脅程度?各專家的見解不同,雖然沒有一致性的解答,但接下來將提供幾個方向一同探討。

商業邏輯漏洞

商業邏輯漏洞(Business Logic Flaw)常被稱為最難防止的風險,因為這個風險出自於人類對於流程的邏輯錯誤,並非一般工程上可解的問題。

此概念在 2006年底,由當時擔任Yahoo資安長的Jeremiah Grossman率先提出完整的漏洞分析報告,甚至指出9成網站具有商業邏輯漏洞[5]。在報告中指出,此漏洞難以偵測出來的原因有三項。第一:品質管理(QA)容易忽視。通常未經過專業訓練的品質管理團隊,測試著重的項目在於功能是否達到需求,而不在於功能是否能夠被用來做什麼,這樣的差異容易造成需求功能達成率良好,但是卻也額外帶來了該功能未能預期到的其它安全問題。

第二:漏洞掃瞄軟體難以定義。因為商業輯漏洞通常不屬於工程上可解的問題,因此一般漏洞掃瞄軟體因缺乏智慧型的功能,以致於無法完全偵測出該功能是否還有其它未能預期到的安全問題。

第三:WAFs(網頁應用程式防火牆)及IDSs(入侵偵測系統)無法預防。因為此類漏洞屬於邏輯漏洞,所有的網頁連線方式皆使用正常的操作模式,完全與一般的流量無異,並沒有特別的字串或惡意的行為,使得網頁應用程式防火牆、入侵偵測系統,或甚至是 IPSs(主動入侵防禦系統)都沒有辦法達到預防的效果。

若非要針對此類邏輯漏洞提出商業應用解決方案,目前除了完善的人工檢視流程外,尚沒有更好的方案。

區域性差異

資安威脅會因區域性的不同而產生不同的攻擊方式及其後續的變化,這意謂著不同的區域著重的防禦重點也必須有所修正。雖然全球化以及雲端商機帶來的變化可能使得區域性差異逐漸降低,但各國駭客擅長的技術不同,攻擊對象也不同,甚至前期小規模測試的範圍不同,都會帶來不同的風險程度。以 Symantec (賽門鐵克) 而言,其研究報告會依據各地區的屬性,如亞太區,提出不同的威脅程度報告。但反觀OWASP Top 10報告中,並沒有考量到區域性的變動因子。

舉例而言,台灣往往成為他國或小規模攻擊測試的對象。主要因為台灣網路普及,國人貧富差距不大,人口適中,以及台灣人普遍好奇心強盛之因素。使得在這個環境之下,成為各種惡意樣本的最佳測試平台。因此,由於台灣面臨新型態攻擊的機率普遍較高,所以應該針對數項風險都要有更高的危機意識。甚至要觀察亞太區駭客的技術水平及其擅長的技術,以納入風險評估的考量。


Web 1.0/2.0 與雲端運算時代的新風險

OWASP Top 10 對於不同的網頁服務性質有著不同的權重判斷。近期許多大小型企業紛紛跨足 Web 2.0,以提供豐富的使用者互動介面,或是投資雲端運算 (Cloud computing),除了建置實體雲端中心外,也提供服務託管與資源租用等應用服務。但不幸地,Web 2.0 與雲端時代也面臨了新的資安威脅挑戰。

Web 2.0 為了因應互動介面,必須接受更多客戶端資訊的往返與儲存。對於注入攻擊 (Injection),如 Javascript injection 或介面間混搭(mash-up)的風險也隨之提高。以及,資訊外洩 (Information Leakage),如 AJAX 或 JSON 資料傳輸的隱密性問題。還有遭破壞的鑑別與連線管理(Broken Authentication and Session Management),如跨網域間的認證 (Cross-domain authentication)、或介面間混搭(mash-up)的權限管理問題。

所以對於Web 2.0而言,注入攻擊 (Injection)、資訊外洩 (Information Leakage)以及遭破壞的鑑別與連線管理(Broken Authentication and Session Management)
的風險排名應該要比Web 1.0來的高。

而雲端運算首重隱私問題,諸如企業機密資訊及個人私密檔案等。因此許多人開始評估,將機密資料,甚至整個商業架構,交由雲端服務供應商託管的風險為何,而此資安問題屬於資訊外洩 (Information Leakage) 的範疇。以及,雲端服務供應商的服務穩定性也將面臨新的挑戰,特別是如何面臨殭屍網路 (Botnet) 發動的阻斷式服務攻擊 (Denial of Service)。還有資訊與雲端供應商之間傳遞過程的不安全傳輸防護 (Insufficient Transport Layer Protection) 等安全性問題。

然而,最新的 2010年 OWASP Top 10 RC1 版報告中,並沒有資訊外洩 (Information Leakage)及阻斷式服務攻擊 (Denial of Service),對於不安全傳輸防護 (Insufficient Transport Layer Protection) 也是落於第十名。翻開 OWASP Top 10 的風險排名歷史,資訊外洩 (Information Leakage) 曾經於 2007年 OWASP Top 10 版報告中名列第六,而阻斷式服務攻擊 (Denial of Service)則是於 2004年 OWASP Top 10 版報告中名列第九,在歷史中皆屬於過去式的 Top 10 風險。

因此,參考OWASP Top 10 必須依照網頁服務性質的不同,如 Web 2.0 或雲端運算的服務,針對資訊安全有著不同權重調整,以達到更準確的風險評估。

針對式攻擊

針對式攻擊(Target attacking),泛指專門特定攻擊彼此具有共通之處的使用者族群,這與駭客攻擊行為的轉變有些關係。普遍認為在 2005年,駭客攻擊目的開始由興趣、名聲轉向金錢、利益,這使得駭客開始轉向兩種型式攻擊趨勢。型一,是大量廣泛式的攻擊,以量來取得最大的效果。這類攻擊包含,垃圾郵件攻擊、廣告信件宣傳、或是近年發生的 Mass SQL Injection,這些都是希望在最短時間內取得最大效益的攻擊行為。

型二,則是針對某企業或組織的滲透攻擊,簡單來說就是取得商業機密文件。這類攻擊比較難以為大眾所知的原因是,企業或組織未必會發現機密文件或程式碼遭到竊取,就算事後企業內部得知也不會將此事公開,甚至經由新聞媒體公開後也不願承認,因為這與公司商譽有著密切關係。另外,外傳 Google 對於中國市場的聲明與此型攻擊有著深厚的關係[6]。

至於何種類型的風險較具威脅,仍然依情形各自表述。但型二的針對式攻擊之所以難以防範的原因,可以從《黑街駭客》一書中得到啟發,

「如果有人真的想取得你的個人資料,最後一定能弄到手。你是可以採取預防措施沒錯,不過如果對方打定主意非得手不可,最後一定能得手。就好像如果有人想偷你的東西或是闖你家空門,最後一定能成功,不管你再小心鎖上門窗都一樣。一旦了解了這一點,恐懼的程度也會變小,因為人生就是如此,躲也躲不掉,何必擔心太多。」

此類型的防範方式與前述幾項不同,對於型二的針對式攻擊的防範目前沒有最佳技術典範可供參考,但也不是說完全沒有方法可以降低風險,還是可以從駭客心理學的角度進一步防範。

淺談使用開放源碼軟體的安全之道

除了前述討論的 OWASP Top 10 外應注意的事項外,還有一項特別容易被人忽略的是開放源碼軟體的安全策略佈署。如果網頁程式開發者不瞭解開放源碼軟體的社群模式,僅將視為一般非開放源碼的商業模式來運用,在沒有認清本質上的差異時,極可能帶來更大的資安問題。

盲目的產品整合方案

網路上已經有許多文章探討開放源碼程式的OWASP Top 10範例教學,針對 Top 10 每項風險提供如 PHP、JSP 等的套招解法,但開放源碼的最大的問題不在此,而是在於基於開放源碼的整合方案。

開放源碼的興起,促進了許多公司推出基於開放源碼的產品,但其中有許多是看到了市場上有某些需求,不做研究、不花功夫,隨意將開放源碼的程式整合,就在市場上推出了。這種盲目的整合方案是目前面臨的最大問題。

隨著台灣對於內容管理系統(CMS)的需求增加,以 Joomla/PHPBB/Drupal/Wordpress 等開放源碼內容管理系統為基礎的整合方案紛紛推出,但其中夾雜著許多品質參差不齊的產品,這些產品帶來了更嚴重的資安問題。舉例而言,在產品銷售之後,是否有完善的漏洞修補通知或服務?開放源碼軟體與非開放源碼軟體一樣,有可能潛藏著尚未揭發的安全問題。當問題發現時,是否有後續的售後修補服務,以及修補時間多長等問題。另外,客製化過程是個很容易忽略的資安缺口。許多開放源碼軟體在銷售時,會配合顧客的需求進行客製化,而這些客製化的過程,若沒有專業的團隊來維護品質,很有可能會破壞了原本開放源碼軟體的安全性,甚至額外增加了許多潛藏的漏洞。

因此,企業內部若要採用第三方開放源碼方案,或企業預採用開放源碼開發時,必須要特別注意這幾點。


針對開放源碼的攻擊模式

孫子云:「知己知彼,百戰不殆」。了解駭客可以如何針對開放源碼軟體進行攻擊,將可以進一步預先防範。

針對開放源碼的攻擊模式與非開放源碼軟體有些不同。因為開放源碼有著程式公開儲存地,即版本控制系統 (Source code management),供程式開發者或使用者可以下載程式原始碼,或進行程式的功能強化及安全修補。這同時意謂著,軟體的最新功能以及最新漏洞可以由此得知。

因此,駭客得以隨時向版本控制系統獲得最新消息,以取得最新漏洞來源,並在短時間內撰寫或於網路上購買攻擊程式,以達到漏洞攻擊之目的。更甚者,主動訂閱開放源碼的問題追蹤系統(Issue tracker)或開放論壇(Forum 或 Mailing list),因為此處是使用者使用軟體的問題回報,或是開發者討論安全問題的所在,比版本控制系統能夠更快獲取最新漏洞的消息。

但駭客若要更快、更精準的大量攻擊模式,還可以配合網路爬蟲 (Crawler) 來取得目前網路上各大網站提供之資訊所建立的資料庫,這肇因於資訊外洩的問題。舉例來說,駭客可以撰寫一支網路爬蟲,蒐集網路上所有使用 Joomla 的網站清單,其中包含網站網址、軟體版本等資訊,然後同時用程式監控問題追蹤系統、開放論壇或版本控制系統,以取得最新漏洞消息。當獲知 Joomla 漏洞消息發佈時,得以在獵物尚為更新或修補前,馬上比對之前蒐集的網址及版本資訊做出更有效的攻擊行為。

若要降低此類攻擊,可以適度隱藏開放源碼軟體的程式名稱及版本,甚至將預設樣式做些調整,以減少資訊外洩問題。
=== 1. 新聞發佈 ===
很多整合方案是到了媒體發佈新聞稿後,才得知出了問題。這代表產品銷售後,完全沒有問題回報的機制,屬於完全不合格的商業應用策略,但很不幸地,目前大多數整合服務方案落於此層級。
=== 2. 攻擊的當下或大量攻擊時 ===
若能夠在發生攻擊的當下,或大量攻擊進行時,取得安全回報,並能夠委善修補問題,則屬於第二層級。
=== 3. 版本控制系統 ===
能夠定期自動(非人為)分析版本控制系統的資訊,並提供及時性的更新或修補,則屬於第三層級。
=== 4. 問題追蹤系統(Issue tracker)或開放論壇(Forum 或 Mailing list) ===
能夠定期分析問題追蹤系統或開放論壇的資訊,並提供及時性的更新或修補。此層級的回報機制通常較版本控制系統來的更快,但因為資訊複雜,摘錄的資訊不是用人為判斷,就必須採用智慧型的過濾系統。
=== 5. 駭客組織(白帽駭客圈、黑帽駭客圈) ===
消息流通最快的就屬駭客組織本身。不管白帽駭客或黑帽駭客,都會分享彼此的資訊,其中包括最新發現且未公佈的漏洞消息,如果能夠取得內線消息,將可以遠在攻擊發生前修補。
=== 6. 自行深入研究(白箱、黑箱) ===
漏洞的發現,始於對程式的專研。此層級必須擁有極佳的資安相關經驗,並且投入時間成本研究,甚至內部要成立專案小組負責,也因為如此,此層級的投入成本非常昂貴。

淺談追求安全之道

基礎安全之道,始於了解駭客的實際攻擊模式,並設定開放源碼軟體在商業應用策略的安全層級,最後止於孫子之道。了解駭客的實際攻擊模式有助於實務上的防範,風險預知安全層級則有助於風險評估策略,而駭客心理學的精華為「知己知彼」,唯有「知己知彼」方可「百戰不殆」。

對於 OWASP Top 10 的套招解法,有些網站提供的只是一招半式,未能有效防止,例如針對 SQL Injection 或 Cross-Site Scripting 的攻擊,若只是單純做 Canonicalize 而沒有 Validate 則仍可能存在著風險。

然而目前資安研究最大的盲點在於,多數研究人員,都等到駭客把攻擊技術成熟並市場化後,才進行防堵研究。資安研究不應該跟著駭客的腳步走,而是在更前瞻的預測未來攻擊,如此企業才能夠防範這種未來的攻擊模式。


結語

OWASP Top 10 提供了最佳實務參考手冊,但若只專注於表面上的報告是不足的,必須因地制宜才能夠發揮全面的安全風險評估。而對於開放源碼軟體而言,開放源碼軟體並非不安全,其實與商業軟體一樣,端看使用的人對其特性的了解程度,除了遵守 OWASP Top 10 的參考方針外,還必須針對開放源碼的特性提供額外的保護措施,這才正式踏上開放源碼的安全之道。

台北國際資訊安全科技展暨亞太資訊安全論壇








推薦此文章
2
人推薦此新聞
我要回應此文章
您的姓名:
回應內容:
  輸入圖片數字

你或許會對這些文章有興趣…