阿碼外傳-阿碼科技非官方中文 Blog: 2009年6月10日

2009年6月10日

[No Tech] SQL Injection 火線--談印度、創業與資安道德

昨天晚上好幾個irc channel中,突然傳出這個新聞,引起大家很多的討論:LxLabs的創辦人自殺了。LxLabs的創辦人K T Ligesh,今年32歲,昨天被發現上吊於班加洛(印度矽谷)的家中。看到這個新聞,心裡真的是非常震驚,也非常難過。印度我們大概兩個月得去一次,其中又以印度的矽谷--班加洛,為最常跑的城市。雖然我不常陪同事去,但是也去過好幾次了,在當地有了不少朋友。班加洛是印度一個非常特別的城市。由於位於高原上,高海拔使得班加洛雖然在印度南部,但是卻擁有非常舒服的氣候。我第一次去,就被這個城市吸引了。到處都是高樓,還有漂亮的購物中心,跟印度其他地方的貧窮完全不一樣。雖然孟買也是有很多高樓與購物中心,但是孟買是商業中心,比較沒有IT的氣息。但是班加洛卻不一樣,這個城市一開始發展就規劃要成為印度的矽谷,並利用氣候與各種優惠條款吸引外商投資研發中心。第一次走進機場時,嚇一跳,好漂亮的機場,另外,怎麼感覺所有人都是工程師?不論是當地人,或是像我們一樣外來的,都是很geek的感覺。放眼看去,每個人肩上都背了一個電腦包,衣服上的logo...嗯嗯,MS,Intel,Oracle,Siemens,IBM,HP...怎麼大家連穿衣服都那麼geeky?然後坐著的人好像都在回email,有的用手機,有的用筆電。去吃飯,怎麼周圍所有人討論的都是IT話題?FaceBook API又怎樣了,Java的某framework又出問題了,某家公司的SDL竟然也改成scrum了。有時候在其他地方,這種討論會引來異樣眼光,好像在這麼好的餐廳,盡是討論技術,真是煞風景,還會被笑是geek。但是在這個城市,這是主流,不懂IT,大概會被笑。除了談技術,最熱門的話題大概就是創業了。好多人創立了自己的公司,好多人正在計畫,大家對於美國的新創公司如FaceBook、Twitter等的一舉一動,總是是那麼的熟悉,那麼的有興趣地討論著。這真是一個屬於geeks與創業家的城市啊!

除了本地的企業外,這裡外商非常多,大部分知名的歐美外商都來此建立研發中心,動不動就是三五千人的規模,人才則是來自印度各地的菁英。印度語言並沒有統一,北方話(Hindi)在此是沒有人懂的,於是唯一共同的語言就成了英文。這麼多這麼大,塞滿工程師的研發中心,每天寫出來的程式量非常可觀;當然,每天寫出來的弱點數,也非常可觀。這種規模的研發中心採用的管理模式與各種軟體開發流程,跟亞洲的其發地方很不一樣。大家非常在意各種軟體開發的模型與流程(up, xp, dsdm, agile, scrum, etc),也大量的使用各種軟體開發工具,來協助流程的建立。下面照片是在某客戶家裡的布告欄照的,由於有嚴格的控管,當時經過了層層主管的同意才得拍,還答應之後把公司名稱馬賽克掉:

這個客戶有一個專門的「工具評估」部門,大約有三十人,工作就是負責評估各式的軟體工具。一旦選擇,就大量的採用,並訓練內部的種子講師,知識管理系統,並協助各團隊將工具導入於開發流程中。照片中右方是一個「The Tools Open Challenge--May the best tool win!」(工具的公開挑戰--讓最好的工具贏吧!)

去這些公司裡頭做簡報,一開始還真有幾分壓力。客戶對於每個廠商瞭若指掌,對於工具的評估也非常有經驗。很多工程師基本上是看不起「資安專家」的,認為我們就學了那麼一招半式,其實對於軟體的開發,不論在實務上或流程上,都比不上他們的經驗與規模。記得第一次去的時候,來到一家公司,非常.com的裝潢,簡直快比Google豪華了。報告選在中午,公司自己的廚房讓每個人點自己要的菜,一堆工程師捧著午餐,把整個會議室擠滿了,後來的人就都爬到櫃子上坐著居高臨下,三十幾個人打量我們六個人,要看看我們到底有什麼厲害,還有什麼樣的工具他們沒看過的。聽他們的聊天內容,夠專業了,在美國也沒碰到這種陣仗,感覺左右兩邊的老外業務同事,與陪同的當地代理商,都感受到對方帶來的壓力,開始緊張了。嗯,這個時候一定要先利用時間,一一擊破,於是我趕快脫下西裝,加入他們的討論,讓他們慢慢發現,我們對語言,對開發技術,對各種模型都很熟,也與很多相同規模的客戶工作過。一邊聽他們最近在做的專案,一方面分享我們接觸過的其他國家同性質專案,慢慢的大家開始喜歡我們了,覺得原來「資安專家」也懂軟體開發。「讓我看看你們最近做好即將上線的系統吧!」對方驕傲的給了個內網URL,並解釋這個專案的整個流程,使用的工具,還有在資安上的作法。「可以測看看嗎?」「Sure, go ahead!」

簡報時間到了,先用視訊與在印度另一省的團隊連線,那邊也有約三十人。簡報開始,兩位阿碼的業務同事,一位白人一位印度人,負責大部分的簡報內容,講得又穩又專業,看來剛才的功夫對我軍有達到穩定軍心的作用。我則 fiddler + burp,忙了一陣子,運氣很好,SQL-i, XSS, CSRF 都找到了,同事講完,我做demo,資料庫直接dump出來。一下子變得很安靜,連電話那端都聽不到聲音了。沒人打電話,但是門口突然出現一堆人,大概是裡面的人用msn通知的吧。大家七嘴八舌一陣子猛問,終於瞭解了弱點與攻擊方式。「也沒什麼嘛!」「是沒什麼,但是不容易避免。這是我手動找的,用工具可以找到更多,工具才可以結合你們的流程,每天重複使用,這個你們比我們還專業,不用我多說」。「那是否下午就直接掃程式看看?」「沒有問題,我們下午有排其他會議,但是我們代理商會留下來協助各位POC」。雖然這個客戶目前其實對資安並不熟,但是整體技術能量很夠,這種團隊最容易,經過一陣子教育訓練以及導入工具後,很快就能開發出高安全性的系統。

記得下午跑的客戶,某外商大廠設的研發中心,三千五百人,幾乎所有黑箱工具都買了,白箱目前也都正在測試。跟這種客戶工作,廠商其實收穫很大,用這麼多特別設計過的程式碼,來測試這麼多黑白箱工具,連我們自己也沒有這麼完整的測試環境。跟測試團隊聊,各家黑箱的強處,不足,客戶經驗,建議的新功能,都在很短時間內分享給我們,這些資訊對我們實在很寶貴。回想起照片中那張海報:「工具的公開挑戰--讓最好的工具贏吧!」--這真是這裡的寫照。只要你團隊有實力,工具好,客戶大都會採用,這樣的環境阿碼就佔很大優勢。反觀台灣,常常我們都是測試結果比對手強很多,但是對手業務通常有辦法模糊測試結果,然後很敢放一大堆謠言:「阿碼資金有問題,快倒了,絕對稱不過年底」、「阿碼都只是一群駭客,工具亂做的而已」、「阿碼的工具,是開放源碼的FindBugs兜出來的」。Wow,真敢講,改天我們再反駁吧(沒營養)。如果是針對工具評比,我們很專業,也很有把握,但是常常要花時間在消毒這些謠言,這種時間就不那麼值得了。現在想起來,在班加洛,大家的話題總圍繞著技術或創業,每次的POC總是那麼愉快,這也許是為何我對這個城市印象一直很好的原因吧!

這也許是為何,在聽到新聞,有班加洛創業家因為產品有的SQL injection與其他弱點,造成客戶重大損失後,無法承擔壓力而上吊自殺後,感覺特別沈重,也讓我靜下來思考了許久。LxLabs是位於班加洛的一家虛擬化公司,位於班加洛,由印度人KT Ligesh所創辦。LxLabs的主力產品Kloxo(之前稱LxAdmin),在VPS hosting產業擁有相當的市佔率。LxLabs的網頁上有對Kloxo的資安宣言:Kloxo是已近乎偏執的態度來設計資安模型。基本概念就是每一個模組都不信任其他模組。我們將資安視為最重要的問題並投入了很多努力,建立了一個您可以有信心的資安環境。頁上並介紹了Kloxo的五層資安架構。

6月4日,milw0rm上登出了Kloxo一共24個資安問題,其中大部分是local exploit,但是包含了一個remote exploit--SQL injection,可以達成以root權限執行任意指令。這篇當時很多人都有注意到,因為Kloxo市佔率還算蠻廣的,尤其在低價的VPS方面。6月7日,很不幸地,位於英國,並在美國也有IDC的hosting公司VAServ Ltd(vaserv.com),被攻擊者利用上述漏洞,毀了超過十萬個網站。VAServ使用的虛擬化方案,正式LxLabs的Kloxo與HyperVM。除了VAServ的客戶外,該公司並持有其他品牌的hosting服務,包含了FsckVPS Hosting(fsckvps.com),CheapVPS(cheapvps.com),以及A2B2 Hosting(a2b2.com)。事發至今已經六天了,但是上述網站仍無法復原,使用上述個品牌做hosting的客戶,也只能等待,或趕快將網站搬家其他hosting廠商。



其實除了VAServ與相關品牌,我們發現利用Google就可以輕易找出其他使用LxLabs產品的Hosting,很多都還有上述弱點,攻擊過程也並不困難,LxLabs創辦人Ligesh與團隊之心裡壓力可想而知。這次的SQL injection弱點揭露,造成十萬個網站之損失,目前VAServ與客戶都還處於兵荒馬亂狀態,更造成LxLabs選擇結束生命之悲劇。網路上的討論也瞬間如疊高樓般,一個標題一下子可以有超過150頁的討論(例如這裡)。就我的記憶裡頭,資安事件雖多,造成受害者結束生命的,可能是第一次。可能因為同樣身為技術創業團隊,總覺得班加洛的人特別親切,特別有話聊,對於創業的種種艱難,我們大家也很多體會。看到一個弱點的揭露後所造成接連的悲劇,讓心情十分沈悶。

這次攻擊者可以大規模植入惡意連結或javascript(掛馬),或利用這些漏動作其他攻擊,但是都沒有,只是把檔案都砍掉了。於是很有可能的情況之一是,一個不到18歲的青少年,看到了milw0rm上的揭露,由於自己也是VAServ的使用者,試了一下,帶了 "rm -rf" 指令,就這樣不預期地,攻擊成功了,瞬間把十萬個網站都砍光了。十萬個網站這種規模的掛馬,經濟價值之高,圈內人都很清楚,如果是犯罪集團所為,大可不必「浪費」了這麼一個機會。那麼如果真是這樣,那就像小孩玩火,一不小心燒了一條街一樣,這種悲劇該如何避免?

看看網路上的討論,其實責怪攻擊者的人,遠超過責怪LxLabs或VAServ的人。我對這個留言特別有印象:

「任何人都可以破壞。創造與建設才是美。我的小狗都能小便與破壞。」 (dribbleworld.com留)

資安是一種藝術,滲透測試中,每個系統都是一個不同的謎題,考驗著資安專家的經驗,敏感度,與靈感;這是為何hackers樂此不疲的原因之一。但是真正難的是創造,是建設,不是破壞。問題是,人的成長過程中,似乎很容易先學習破壞--19歲的MySpace Samy17歲的Twitter Mikeyy,都是例子。人越成熟後,才越能體會建設之美,這是為何對於年輕人犯錯,社會常能給予寬容。小孩玩火,燒了一條街,大家都是輸家,要怪誰?反觀在這次事件中,是否要怪LxLabs,為何有這麼多漏洞?問題是,不用說像LxLabs這種創業團隊,即使是大銀行,大企業,在資安方面的預算都很有限。資安是很特殊的技術,除非長期注意威脅,接觸的技術面夠廣,不然一般人很難做好安全的產品開發。在金融風暴下,大公司都撐不住,更何況新創公司,要額外投資做好資安,有時的確有困難。但是有時弱點實在太過簡單,是否也因此引誘了犯罪?

網路上對於milw0rm,也是一片撻伐。大家認為,此弱點揭露的作者,於5月21日聯絡LxLabs,並有獲得回應,只是LxLabs處理得不夠快,作者就自行判定「廠商沒有興趣處理」,於是逕自完整揭露。三天後,十萬個網站毀了,LxLabs創辦人自殺了,這些事件,跟milw0rm上的揭露,有直接的關係。很多人認為milw0rm該負起責任。

負責的弱點揭露不是個容易的議題。有時,廠商就是吃定消費者。資安專家回報弱點後,過了一年還不見修復,或顧及廠牌形象與法律責任,修復後便不承認曾有漏洞。這常常造成資安專家像是啞巴吃黃連,明明看著對方漏洞百出,消費者權益蕩然無存,卻無法完整的揭露資安漏洞。

這次究竟milw0rm有沒有責任?還是要怪LxLabs?還是要怪惡作劇者?還是對方就是LxLabs的競爭對手,藉由此來打擊LxLabs?那麼豈不是罪大惡極?問題不容易回答,但是往後我會常常想到這個事件。當然,雖然主流媒體報導很一致,認為VAServ的入侵事件與LxLabs的0day有關(間隔三天),但是也有不同的說法,認為其實沒有關係,是VAServ的密碼重複使用並被竊聽導致(見irc log)。但是無論真相為何,一位創業家生命的喪失以及十萬網站的毀壞都已經是無可挽回的事實。我知道創業家的辛苦,很遺憾Ligesh生命的結束。以後在我感嘆手上的漏洞因為種種理由而無法公開時,我會想到此事;因為如果我們不負責的公開某漏洞,而造成類似的事件,那會是心裡一輩子的負擔;這些漏洞,在對方還沒修改時,就讓它永遠埋著吧!

這也是為何我很喜歡SySCANOWASP的會議。這兩個會裡,並不強調0day的展示。就像這次,milw0rm公佈的是LxLabs的0day,但是只不過是個老掉牙的SQL injection罷了,我覺得並沒有給資安社群帶來多少新的知識,但是卻帶來了十萬個網站的毀滅,十萬個中小企業突然沒了網站,一群可憐的IT工作人員不斷的加班,以及一位創業家生命的結束。就是像這種0day的公佈,增加了社會的成本與恐懼,污染了 "hackers" 在大眾心中的形象。即將舉辦的SySCAN所強調的,是前瞻性的資安技術與威脅,而不是各別產品的0day,內容包含了雲端運算與虛擬化安全性,iphone安全性,Android安全性,PHP核心安全性,ruby fuzzing技術,Web與RIA(Rapid Internet Applications)技術之安全性,RFID安全性,路徑安全性,以及新型惡意程式分析,讓我真的非常期待。

「任何人都可以破壞。創造與建設才是美。我的小狗都能小便與破壞。」--講得真好!

作者Wayne為阿碼科技創辦人
此文紀念班加洛創業家Ligesh,希望類似悲劇別再發生

繼續閱讀全文...