網頁應用程式安全評估專家、網頁應用程式安全聯盟(Web Application Security Consortium, WASC)創辦人、WhiteHat技術長Jeremiah Grossman今(27)日應OWASP(開放Web軟體安全計劃)台灣分會之邀,來台參與OWASP亞洲年會並發表演說。 網頁應用程式安全專家認為,商業流程中可能隱藏的小缺失,在進入Web情境後,其風險將會被擴大,影響更多人。
一如眾家資安業者近來紛紛將重心移往Web威脅,Grossman亦認為,在網際網路、Web應用日益普遍的情況下,Web威脅已成為資訊安全極重要的一部分,但他認為,單純以弱點偵測、掃瞄工具針對網頁應用程式進行漏洞掃瞄雖可能解決如資料隱碼攻擊(SQL Injection)、跨站程式碼攻擊(XXS)等程式碼撰寫漏洞,但對於流程設計本身的缺陷--被他稱為商業邏輯漏洞(Business Logic Flaw)的弱點,才是提供網頁服務的業者更應小心留意的標的。
在大會前一日(9/26)Grossman接受了CNET的專訪,以下為訪談內容摘要:
問:從你的演講題目(編按:「未來資安大挑戰:邏輯漏洞」)看來,你此次來打算分享的內容似乎與一般我們常聽到的資安漏洞不大一樣,可否先談談到底你所謂的商業邏輯漏洞是什麼?
答:這是一個還蠻新的概念,過去大家談的網頁應用程式漏洞多半是資料隱碼攻擊(SQL Injection)、跨站程式碼攻擊(XSS),或是跨站請求偽造(Cross-Site Request Forgery, CSRF)等,這些科技型漏洞(Tech Vulnerability)多半已受到足夠關注,也有專門的程式碼弱點檢測工具可以用來協助找出這些弱點,雖然近來的統計或排行都還常看到這些名詞,但我認為,在掃瞄工具與技術精進與普遍下,它們的重要性將漸漸消失。
至於我所謂的商業邏輯漏洞,簡單地說,是流程面,是無法用掃瞄的方式來發現的。舉例來說,改變帳號密碼便是一個流程問題,流程中可能會有漏洞,但這種漏洞不是來自於程式碼本身的缺陷,而是商業流程設計上的邏輯性問題,這種問題不是靠程式碼弱點掃瞄等技術就有辦法解決的。簡單地說,商業邏輯弱點是一種數學上無法解決(mathematically unsolvable)的問題。
問:有沒有你所謂商業邏輯漏洞的例子可以用來說明的?
答:這種例子太多了。舉例來說,有一家提供最新企業新聞資訊給訂戶的公司Business Wire,由於他放在網路上的新聞資料網址會採用一定的規則來編排,例如001、002的順序,如此一來,使用者便能夠預測下一個資訊的網址為何,並且搶先在新聞正式發佈前取得內容,而恰巧這些新聞資訊是有可能影響股價的。
雖然這家公司是在消息預定正式發佈的時間,才會在首頁公佈連結,但由於新聞內容多半已預先上載至伺服器,使得不少內容便因此提早洩露,一家發現這個漏洞的愛沙尼亞籍公司,甚至因為這些資訊而賺進數百萬美金。
此外,某些大型網站常見的安全設計,在特定情境下,也可能變得不安全。
舉例來說,大型入口網站多半都會有一種防止駭客測試密碼的設計,比如說在一定時間內密碼輸入錯誤超過五次,可能得再過一小時或數小時才能再登入,這種「鎖定」的設計本身其實是相當安全的。
可是,當這種設計若和目前被線上拍賣業者普遍採用的「出價前再輸入一次密碼」的確認機制放在一起的話,反而會形成漏洞。
舉例來說,我若看上某個拍賣中的手錶,於是便先出個低價,然後觀察有多少人也開始出價競標,當我蒐集到我的競標對手的帳號後,我便可以另開視窗,用他們的帳號多次登入,讓他們的帳號被鎖住,並因而無法出價,其結果便是我能大幅提高我標到那隻手錶的機會。
其他還有許多例子,像是美國知名電視台CNBC曾舉辦過獎金高達百萬美元的投資競賽,也是因為比賽流程設計有漏洞,讓使用者不必憑真本事,便可贏過其他參賽者,提高取得巨額獎金的機會。
問:但這些問題聽起來,似乎與傳統的業務流程設計漏洞似乎沒有太大的不同?
答:的確。一般企業內的業務流程設計的確也可能有缺失,但通常比較容易被發現,且影響的範圍通常不會太大,多半隻是那些和特定流程相關的工作人員與客戶。
但這種流程設計邏輯上的漏洞若搬到網路上,則情況便大不相同。一個在網路上做生意的企業,若有類似的邏輯漏洞,則受影響的客戶可能是要以百萬來計算,後果與嚴重性完全不同,漏洞所產生的問題會因為web而被放大。
因應策略
問:不過您剛剛提到此類漏洞多半無法透過工具掃瞄的方式找出,但影響卻又可能非常大,那企業應該怎麼處理或面對?
答:這的確是個難題,但企業必須慎重面對。我的建議是從開發線上服務開始,就必須要有安全專家參與其中。一般說來,開發網頁應用或是設計線上服務的人員多半沒有受過資安訓練,事實上,你要他們去重學資安也不切實際,但至少要有資安專家能提供他們教育訓練,或是編寫程式時的指導準則,讓他們知道,哪些設計可能是危險或容易產生漏洞的。
開發人員就如同設計汽車的人,他們懂得設計,卻不一定要學怎麼開車,而企業的責任,是要幫他們找出參考準則,讓他們知道怎麼去設計,車子才會安全。
除了開發,日常週期性的弱點評估也很重要。由於商業邏輯漏洞多半是隱性的,很多情況是連專家都未必想得出來的漏洞,卻在使用者不經意的使用下被發現,因此,不論是採用工具或委託顧問進行的弱點評估,都是建基在評估當下那個時間點所擁有的知識為基礎,因此加入新檢查項目的週期性評估是必要的,而且最好密集一些,例如一星期一次。
問:雅虎工程師曾經提過,每次有新服務要上線前,都要反覆想盡各種使用者可能的使用行為去測試安全性與穩定性,但偏偏服務上線後,還是會有一些極怪異的使用方式出現導致服務異常,甚至引起使用者抱怨,一個網路服務的使用者可能數以百萬計,到底企業該怎麼去預防這種問題?
答:你提到雅虎,其實我以前在雅虎的工作,就是要想盡辦法入侵雅虎的系統,雅虎付我錢來搞破壞(笑)!
在我還在雅虎的時候,發現約有1%的使用者可能是惡意使用者,有的是使用行為很奇特,可能會對系統造成傷害,有的則是想盡各種方法想要駭掉雅虎。1%聽起來似乎不多,但對雅虎來說卻是一百多萬個使用者,因此,我們必須要比這一百多萬個人更聰明才行,必須比他們更早發現可能存在的漏洞,並且儘早修補好。
問:可是似乎有些企業並不喜歡讓別人知道自己的網站有漏洞,對於某些幫助企業找漏洞的白帽駭客並不友善,或是認為若沒有爆發大規模事件,就不打算在網頁安全上投資。
答:我不清楚在台灣的情形,但在美國,我很高興有上百家企業花錢請我們幫他們的網頁找漏洞。
我認為,企業要認清一個事實,網頁應用如同作業系統、應用軟體等,都可能存在漏洞。如果企業可以接受微軟每個月定期要求他們安裝修補程式的話,就應該要能認知到自己在網頁上提供的服務一樣可能存有漏洞,一樣需要修補。
更何況微軟是有全球性的社群在幫他找漏洞,一般企業可沒有一群人去幫你找漏洞。
任何軟體都可能有漏洞,如同任何企業經營都藏有風險,要有效降低風險,就是必須先知道風險的程度,如果你不瞭解它,你便不可能是安全的。如果你不去做評估,你便不會知道自己面臨的風險有多大,當然,找專家、用工具,還是不可能讓你100%安全,但至少能大大降低風險。
記者馬培治/台北報導
27/9/2007
原文網址 : http://taiwan.cnet.com/news/software/0,2000064574,20124185,00.htm