搜尋此網誌

2008年7月26日 星期六

誰騙了你20年

這一陣子,有一個還算蠻震撼的新聞,就是趨勢科技的CEO陳怡樺說了「防毒產業騙了客戶20年」這麼一句話。這一句話,不但打翻了趨勢科技自己一直以來的產品,也打翻了其他公司的防毒產品,甚至也把千千萬萬防毒軟體的從業人事一併賠了進去。這讓我想到有人也提過安全產業是最大的笑話,因為實際狀況是越來越不安全。

早期的防毒軟體確實有它的效用,但是隨著惡意程式的演進,防毒軟體的發展明顯是處於被動而落後的階段。如果據此就說是騙了20年,我想是過於嚴重了。當然,很多使用者的確被廣告的訴求給欺騙了。不過認真看來,哪一個廣告不是如此呢?當然,以較高的標準來看,廠商的確有教育使用者正確觀念的義務,但是並不是經過20年後才忽然冒出來這麼一句。更重要的是,你的解決方案呢?是不是真的就不是再一次的欺騙?你要用甚麼說服已經被你欺騙了20年的人?當然,她說是希望能夠引起注意才這麼說,不過看到大部份的反應是針對趨勢科技的批評,這個應該是她始料未及的吧。

在另外一篇的專訪中,我看到她過於強調雲端運算這個最近已經被吵到發燙的名詞,讓人不禁懷疑是不是又是另外一場騙局。雲端運算本身,並不是防毒專屬的技術。我相信它應該最多只是防毒機制的配角,真正的主角還是用甚麼機制/演算法來偵測或防堵惡意程式的感染。就算現在的機制必須透過雲端運算來提供服務,但是那並不保證你們的解決方案就可以有效解決惡意程式的問題。透過URL+雲端運算的方式有沒有效,其實不需要自己再次在那邊自吹自擂,直接推出產品證明產品的效用最是實在。尤其是當你已經失信於客戶一次了,在那邊繼續講還有用嗎?直接拿出證據來吧!事實上,很多廠商或團隊都不斷在嘗試用新的方法來對抗惡意程式,也沒有用到所謂雲端運算的技術(其中今年的SyScan就有幾場相關的演講)。到底孰優孰劣,還是手下見真章吧。

老實說,我對趨勢科技的產品沒有任何偏見,但是我對這樣的言論是無法理解的。如果她有guts(有嗎)的話,應該就像Roger Chiu一樣,早早看破離開,或是盡快為他們的客戶找尋更好的做法。最後,還是必須回到資安專家的老生常談。套句廣告台詞,不要再相信沒有根據的說法了。沒有一個安全產品或機制是100%有效的,什麼滴水不漏都是騙人的。小孩的尿布不會滴水不漏,女性的生理用品也不會,安全產品更不會。所以,我們需要多層次的防禦措施,所以我們會有殘餘的風險,所以我們隨時都不能鬆懈。

相信我,我不會在20年後告訴我的客戶:「你們都被我騙了,笨蛋!」我會告訴客戶我會繼續幫他找出更佳的解決方法。

相關新聞
趨勢CEO陳怡樺:防毒產業騙了客戶20年

獨家專訪趨勢CEO陳怡樺(上):偵測率競賽是自欺欺人

獨家專訪趨勢CEO陳怡樺(下):防毒產業不合作令人失望


客戶網站被掛馬 趨勢科技15分鐘內得知

2008年7月24日 星期四

Linux之父強烈反擊

被尊稱為Linux之父的Linus Torvalds前一陣子針對PaX Team的指控做出了反擊,PaX Team指控Torvalds與其他人對於程式的Bug沒有針對其安全性危害做出分類與警告。Torvalds則認為找出Bugs已經足夠,並不需要特別去強調安全性的問題。其他跟安全不相關的Bugs,數量甚至更多,也同樣需要加以修正,而過於強調安全性的Bugs其實並無助於解決所有的Bugs。他以為目前很多以做安全為名的人,誇大了安全的議題,甚至只是利用發現安全性的弱點來增加自己的知名度。他也提到了OpenBSD過於強調安全性,並且用了很不好聽的形容詞去描述其開發團隊-a bunch of masturbating monkeys(一群自己爽的猴子)。

對此,OpenBSD的相關成員倒是不想把問題擴大,所以自己打了一些圓場。最後,甚至說其實他們跟Torvalds雖然表面上看法有些不同,不過其實真正的想法是一致的。對我而言,有沒有一致並不重要,因為每個產品本來就有他不同的定位。所以,重點不在對開發者而言安全是不是最重要的,而是客戶對安全的需求是甚麼?或許用比較正式的說法,是Stakeholder(利害相關者) 對於安全的需求是甚麼?所謂的利害相關者,可能是使用者,也可以是付錢的客戶,也有可能是使用者的頂頭上司。所以只要是有關的人都算是利害相關者,而對需求有較強烈的影響的人就是重要的利害相關者。

當然,每個人對於自己用盡心力而誕生的產品無不抱以無限的期望與關愛。但是別忘了,沒有一個產品可以適用於所有的人。如果一個產品真的這麼不堪,市場自然會有一些機制加以淘汰。Linux擁有其支持者,OpenBSD也同樣有死忠的粉絲。並不能用支持者的多寡就決定誰對誰錯,只能說誰的方向是比較符合多數人的需求,而且是過去的需求。Torvalds對於Linux乃至於OSS的貢獻無庸置疑,但是用了不堪的言語來反擊他人的指控,我想只能說他畢竟還是一個人類。人類都有其脆弱的一面,這是無法避免,更不能因為這樣就說他是不好的。就像所有的安全機制一樣,再好的安全機制總有它無能為力的時候。如果我們在規劃乃至於使用時不能夠知道各安全機制的適用與不適用時機,終究是無法發揮其真正的功效。

我本身對於Linux有多年的使用經驗(從Kernel 0.x版就開始接觸了),也一直很肯定所有OSS作者的貢獻,對Torvalds那更不用說了。我想這樣的事件不會減少他的影響(或許還可以稍微增加),不過我還是期望他能夠少引起一些不會有結果的爭端。有時候,軟體的支持者跟宗教或政治的支持者沒有甚麼兩樣,除了理性以外,更是充滿了感性的一面。聰明的人,還是避免無謂的口水之爭才是上策。

原文出處:
Torvalds attacks IT industry 'security circus'

2008年7月22日 星期二

Open Source 軟體安全堪慮 - 談Fortify發布之Open Source軟體安全報告

前一陣子我談到有關Scan發表了一篇對於 OSS (開放源碼軟體)的安全性檢測報告,基本上整個方向大致上是正面的。不過這兩天另外一家應用系統與程式安全的公司 -Fortify- 發表了另一篇的報告,其內容對於OSS的安全性則有完全不一樣的見解。

這篇報告提出了三個觀察到的現象:
1. 沒有提供與資訊安全專家聯絡的方法及相關訊息 (Failure to Provide Access to Security Expertise)
2. 沒有採用考量安全性的開發流程 (Failure to Adopt a Secure Development Process)
3. 沒有善用技術找出軟體內存在的安全弱點 (Failure to Leverage Technology to Uncover Security Vulnerabilities)

另外,該篇報告也提出了兩個建議:
1. 政府與企業在導入開放源碼軟體時應該非常小心謹慎 (Government and commercial organizations that leverage open source should use open source applications with great caution)
2. 開發源碼軟體應該採用與商業軟體一樣有效的安全實務 (Open source projects should adopt robust security practices from their commercial counterparts)

雖然沒有明講,但是最後一點很明顯的指出了OSS的安全性是比不上非OSS的商業軟體。

關於OSS與非OSS之間哪一個比較安全,一直以來有各式各樣不同的論述,對此我也不打算在此討論。事實上,我認為這個問題永遠不會有解答,主要原因有下列幾點。第一個是全世界的軟體這麼多,要全部檢測是不可能的,所以採樣方法就是第一個爭論點。另外一個就是每個方法或工具檢測的項目不一樣,所以評斷的標準是第二個爭論點。另外,非OSS的商業軟體,因為沒有程式碼可以取得,所以根本就不可能做完整的程式碼檢測。最後,除了程式碼以外,有哪些也算是軟體安全的一部份?這部分同樣也是沒有標準。這麼多的不確定性,再加上兩陣營有各自的擁護者,要提出一個可讓眾人信服的結論,可說是比登天還難。

儘管如此,我們還是可以試著從中找出兩篇報告的不同之處。
1. Scan的計畫是以幫助OSS增進程式碼安全性為出發點,跟Fortify只是做檢測有很大的不同,所以參與Scan計畫的軟體大多在程式碼的安全上有很大的改善。而Fortify因為並沒有提供協助,甚至並未告知被檢測的軟體之開發團隊,自然不保證軟體在安全上的提升。
2. Scan計畫有270個(根據網站最新公布)OSS參與,而Fortify只找了11個軟體做檢測,而且都是以Java為程式語言所開發的軟體。對此,Fortify的說服力很明顯的欠缺了。
3. Scan不試著去比較OSS與非OSS之間的差異,因為這原本就不屬於該計畫的部分。而Fortify同樣也沒有提到該計畫有檢測任何非OSS的商業軟體,但是最後卻出現了一些比較的結論,同樣缺乏足夠的說服力。
4. Fortify觀察到的三點現象,雖然跟程式碼本身的安全應該有所關係,但是並沒有相關的證據顯示之間的相關性與其強度為何。所以以較嚴謹的角度來看,同樣不夠客觀。當然,沒有採用考量安全性的開發流程是一個不好的事情,但是這件事跟最後程式碼安全性的關聯並沒有辦法被證明(至少在這篇報告中是沒有辦法的),所以不能因此推論出較不安全的結論。甚至更不能因為程式碼的安全性較差,就反推回去沒有使用考量安全性的開發流程。為什麼我說是反推回去,因為報告中並沒有看到他們與原軟體開發團隊有任何直接或間接的接觸。

事實上,這篇報告在iTWire也幾乎是一面倒的被質疑。雖然我本身也常使用OSS,但是我卻不認為OSS就一定比較安全,只不過這篇報告的說服力的確是很薄弱。不過,薄弱歸薄弱,"觀察"到的三個現象卻是我們開發或使用軟體應該注意並設法改善的地方,不管是OSS還是非OSS的商業軟體。

前一陣子有另外一篇文章同樣提到有關OSS的安全議題,不過他是談論如何避免導入OSS所可能遭遇的風險。既然OSS的使用已經是不可避免,我想這樣的忠告更具實用性,所以附上相關連結以供參考。

後記:根據各項最新的研究報告顯示,OSS相關的工作需求有明顯的成長。雖然並無法明確顯示出OSS與非OSS軟體的使用比例,但至少可以確定企業導入OSS的例子已經有大幅的增加。除了這些看得到的OSS,其實還有很多使用中的OSS是被忽視的。

原文出處:

2008年7月21日 星期一

你知道你在跟誰說話嗎? - 談DNS Cache Poisoning

DNS,對一般網路的使用者來說是個很陌生的名詞。但是幾乎所有網路/系統管理者都聽過,甚至管理過這個服務伺服器。它這麼知名的原因,在於沒有它,現在的網際網路大概沒幾個人願意使用。透過它,我們才能方便地使用像是g.cn這樣的名稱來對遠端的伺服器進行連線。它算是網際網路運作中一個很基礎也很重要的服務。雖然這個服務對管理者來說並不陌生,其運作原理也不算複雜,但是事實上很多DNS服務器的設定存在著不少問題(不安全、甚至是錯誤的設定)。而這個服務利害的地方在於,就算是存在一些不正常的設定,運氣好還是可以正常運作。運氣差一點的,就是不能運作。運氣最差的則是出現網路/服務不穩定的現象,因為這類問題很少人會懷疑到實際上是根源於DNS的錯誤設定。事實上,我在幾年前遇到一個曾在台灣知名網路公司服務過多年的人。當時因為網站不穩定,所以我請對方檢查DNS的設定,但是對方一直堅持不是DNS的問題。為什麼我會這樣懷疑,因為我從外部的查詢出現了好幾個192.168.x.x的設定。看到這些資料,就像我剛剛說的,運氣好還是可以運作,只是我認為我的運氣一向不太好。

也正是因為在種種原因互相作用之下,一直以來它都是網路攻擊的主要目標之一。Cert-US在這個月初公布了一個有關DNS的最新弱點-DNS Cache Poisoning。這個弱點獨特之處,在於它不是因為某個DNS產品的實作不良,或是管理者的設定錯誤而造成的。其發生的原因在於當初設計的DNS協定出現了瑕疵,可以讓攻擊者透過假冒的回應而感染DNS伺服器的快取。DNS伺服器的快取遭受感染會發生甚麼事?甚麼事都有可能發生,你可能會在攻擊者的網站輸入信用卡卡號,你可能會在攻擊者的網站貼上原本只供自己欣賞的自拍照...。而這個攻擊比釣魚網站攻擊更具威脅的原因在於你看到的網址並不是"很像"而已,而是一模一樣。當然,攻擊者也可以透過綁架網站的方式,將網站的內容置換成惡意的網頁。這樣的做法雖然一樣也可以達成使用原先受信任的網址進行惡意的行為,但是綁架網站的手續畢竟還是相對複雜。更何況DNS Cache Poisoning影響的不是只有Web服務,所有的網路服務都會受到影響。而這次的弱點也因為是DNS協定本身的問題,所以幾乎所有DNS實作都受到影響,也就是每一個DNS伺服器都有可能成為這個攻擊下的犧牲者。

因為我不想講到太技術性的東西,所以我直接附上了三個相關的網址。除了Cert以外,DoxPara的版主是這個弱點的發現者,也寫到了這整個過程的始末。另外他也提供了一個連結可以讓使用者測試自己使用的DNS服務器是否會受到這個弱點的影響。但是我使用了好幾次都出現錯誤,所以第三個網址提到一個使用dig的測試方法。在此我直接跳到Cert所公布的建議步驟 :
1. 更新!更新!更新!
2. 限制存取(查詢)的權限
3. 過濾掉不必要的流量
4. 建立內部使用的DNS Cache服務
5. 停用遞迴查詢(Recursion)
6. 使用隨機選擇的來源埠號
注意看來,這六點至少就有四點(1,2,3,5)是DNS服務器的管理者原本就應該遵守的,其中2,3,5更是直接對應到最小權限這個概念(Least Privilege)。不管面對的威脅是新的技術還是舊的方法,其實有很多防範方法都是共通的,而這樣的方法往往也是最有效的。所以我們在一味追求技術的同時,其實有些觀念/習慣還是需要好好的建立。如果不能參透並好好運用這些基礎,再努力也只不過能做到頭痛醫頭,腳痛醫腳罷了。

當然,如果我們再杞人憂天一些,可以回頭看看這些我們已經習以為常的科技。如果一旦這些科技出現問題,對我們的影響可是很全面而重大的。例如當我們連到經常使用的網路銀行網站,卻發現不能夠輕易的相信這是合法的網站,信心的崩潰會不會把網路服務打回原始的時代?我們該怎麼做?我不會勸你把所有的科技產品丟掉,甚至搬到與世隔絕的深山自力更生。我會勸你正視資訊安全的問題,而廠商在提供更好的資訊產品與服務的同時也能將資訊安全的需求當作一個很重要(最重要)的議題加以考量,而不是一個被發現了才做的事情。當然,有些問題是需要進行大幅調整才有可能加以補教,例如現在網站安全問題這麼嚴重,有人就提出了修改HTTP協定、甚至是瀏覽器的建議。這類問題牽扯的就不只是技術性的問題,還有更多政治性的因素牽扯其中。

相關連結:

2008年7月9日 星期三

SyScan '08 現場報導 (下)

第二天的主講人包含邱春樹(Roger Chiu from Malware-Test.com)、馮祥安(Sean Feng from TrendMicro)、邱銘彰(Birdman from Armorize)、PK(PK from 警政署)、Kuon Ding(Kuon Ding from Armorize)與Nanika(Nanika from COSEINC)六位,其主講內容包含:

1. Roger - Gotcha! Most Effective Ways to Catch Malware Behaviors on Live Systems
利用偵測惡意程式常用的行為與數位鑑識的概念與方法,找出系統遭受惡意程式感染的任何蛛絲馬跡,以期發現惡意程式之存在。因為目前惡意程式通常會試著躲過某些安全軟體,甚至隱藏自己的行蹤,因此要完全根據其使用的技術加以偵測總會有遺漏之處。所以Roger透過各類資訊的收集與比對,找出不一致的地方,點出可能是惡意程式存在的證據。但是因為很多牽扯到作業系統核心資訊的收集與解析,這方面是有很高的難度。原因在於微軟的作業系統並沒有提供各式資訊的資料結構說明,所以必須靠逆向工程的方式去找出資料的意義。

2. Sean Feng - Enbedded Script Attacks
介紹目前將程式碼內嵌於各種檔案格式的攻擊方法,並試著偵測出已經被內嵌惡意程式碼的檔案。目前內嵌程式碼的攻擊目標包含可執行檔、多媒體檔與文件檔,可透過程式本身的執行能力或是處理檔案的應用程式臭蟲而達到執行程式的目的。這類惡意程式碼本身主要功能為連上網路下載真正的惡意程式,所以內嵌的惡意程式碼不大,也不會產生其他惡意行為,所以很難被現有的防毒軟體加以偵測到。因為光靠下載網址或是下載檔案的內容很難有效判斷是否為惡意程式,因此Sean利用這類程式都會動態找出下載檔案API記憶體位址的動作,試著去找出惡意的內嵌程式碼。雖然這樣的方法可以面對現在大多的內嵌惡意程式碼,但是當惡意程式發現此一偵測方法,如果有其他的實作方式,就有可能造成判斷的失效。此一技術目前還在Lab階段,並沒包含在TrendMicro的正式產品中。

3. Birdman - Crimeware Forensics Analysis using Toolmarks
利用分析惡意程式特徵值的方式,試圖找出惡意程式的相關性(Grouping),據此找出惡意程式可能的來源。講解方式生動有趣,不過我要轉成文字說明就不容易了。分析方法為透過Sandbox的方式,實際觀察惡意程式的行為,並據此轉換為特徵值。此Sandbox可模擬網路環境的存在,已欺騙部分惡意程式會透過檢查網路連線與否而反制Sandbox的機制。

4. PK - CSI Live: Windows Memory Forensics
主要介紹Windows記憶體內的資料鑑識。之前的數位鑑識比較多著重在非揮發性設備(如硬碟)的資料上,而記憶體內資料的鑑識則是比較缺乏。除了記憶體內容的鑑識,休眠檔也因為存有記憶體內的資料,同樣也可以提供鑑識。鑑識時可以使用1394的DMA功能,直接透過1394介面將另外一台電腦的記憶體內容複製下來。現場有兩個展示,一個是利用1394的DMA功能,直接Patch記憶體內的指令,將檢查登入密碼的程序置換指令,達成不需要密碼就可以登入作業系統的目的。另外一個則是放置一個Patch過的休眠檔,同樣將檢查登入密碼的程序置換指令,達到不用密碼直接登入的目的。PK主講經驗應該果然豐富,講的雖然算不上活潑生動,但是具有相當的知識性與效果。

5. Kuon Ding - Python Makes You Fly Safely
介紹Python程式語言相關的安全議題。包含Python與C程式語言的結合、Python Bytecode、Deassembler、Decompiler與JIT (Just In Time) Compiler等。雖然曾經寫過一陣子的Python,不過後來沒再接觸,而大多的與會者也沒接觸過Python,算是比較沒有辦法引起共鳴的議題。講的東西有些多,所以顯得有些雜亂(Sorry for that)。

6. Nanika - The Powerful Evil On Mobile Phones
另外一場跟Mobile Mobile安全相關的議題,不過談的內容並不侷限於Rootkit。只是後來有一大段時間在講解怎麼寫ShellCode,這部分如果不是真的寫過的人,還是很難引起共鳴。不過還好有展示(透過模擬器),展示的程式是將名稱符合特定字串的檔案或目錄隱藏起來。另外一個是透過Rootkit將Mobile Device的位置回報,並顯示在Google Maps上。只不過這部分並沒有實際的展示。因為講的東西比較多,同樣顯得有些雜亂了(Sorry again)。

2008年7月8日 星期二

SyScan '08 現場報導 (中)

第一天精彩的六場演講分別如下


1. Adam Laurie - Hacking RFID Without A Soldering Iron
Adam Laurie是Apache SSL的作者之一,不過這次他講的跟SSL沒有任何關係,是RFID(含Smartcard)的安全。首先他放了一段他在飯店破解飯店房間保險箱的影片,成功的吸引了大家的注意力。之前破解RFID的方式,很多都是利用一些"特殊的裝置"去破解。儘管這樣的方式的確成功破解了RFID,但是RFID的廠商硬說因為不是複製出"一模一樣"RFID裝置,所以還是可以被發現而不算真正破解。當然,在有些時候,RFID裝置的外觀的確也是判斷的條件之一。但是在以設備為主的自動化環境下,外觀其實並不是一個檢查的項目。儘管如此,Adam硬是利用自製的破解工具,將RFID複製到另一個一模一樣的裝置上,連外觀都無法判斷。另外他也談到ePassport的安全問題。展示部分則是繼操作了他自製的破解工具與程式,成功將RFID複製到另一個裝置。另外一個展示則是讀出ePassport的資料,並加以修改。雖然ePassport有經過加密,但是因為CA也寫在ePassport內,如果沒有檢查CA的有效性,還是有可能遭受竄改而不知。本來Adam還想展至讀取晶片卡內的資料,不過現場取得的晶片卡,似乎不太合作。Adam稱他的破解工具可以在數十公分的距離內讀到RFID裝置的資料,讀到之後要做甚麼?應該不用我說了。

2. Fyodor Yarochkin - Cooperative Offensive Computing / Abusing XMPP infrastructure
Fyodor是snort與xprobe的作者之一。因為Fyodor工作之一是進行滲透測試,所以他也順道開發了一個這樣協同式攻擊的工具。簡單來說,這樣的協同式攻擊跟一般單機攻擊不一樣的地方在於這些散布各處的攻擊點(Fyodor稱之為drone)之間怎麼溝通與做資訊的交換。所以Fyodor利用了XMPP這個協定,再加上Jabber這個伺服器,達到難以被追蹤的目的。而其使用的Jabber伺服器,可以自建,當然也可以找網路上開放(有意或無意)的伺服器。想當然爾,我個人猜測應該是不太可能自建(在自己的機器)。而這些蒐集到的資訊,可以透過特定語法加以查詢。其後端使用的技術是Knowledge Machine,而前端就是使用支援Jabber協定的界面(例如GTALK?)。當然,他應該也可以透過這樣的方式去執行特定的動作,以期獲取更多的資訊或...。另外他也成功將Jabber伺服器的服務隱藏起來,目的為何請自己想。最後,Fyodor因為看到Adam的議題,順道做了一個RFID的小展示,不過就跟原先的主題沒有任何關係了。老實說,Fyodor的口音很重,整場聽下來幾乎是邊看投影片邊想像。不過神奇的事情發生在他回答聽眾問題的時候,他忽然冒出了幾句的中文。雖然中文也有些口音,不過至少比英文聽得懂。那...為什麼他不直接用中文講呢?是怕其他外國講師聽不懂嗎?

3. Petr Matousek - Subverting Windows Embedded CE 6 Kernel
Petr Matousek是主辦單位之一COSEINC的成員,之前則是29A的成員。介紹了Windows Embedded CE 5與CE 6 Kernel的破解(Subverting)方式。主要是透過User-Mode或Kernel-Mode的hooking,以達到rootkit的功效。並實際呈現與展示隱藏檔案、機碼、網路埠、程序與載入模組的程式碼與範例。另外也提出了幾個找出rootkit的做法,其中一個他稱之為Virgin Verifier,意思應該是要找出系統是不是原裝的,還是已經被rootkit"玷汙"過了。Virgin Verifier利用比對API Set hooks與process handles找出可能的修改/隱藏行為。另外的做法包含了透過比對SD-Card上的原始資料與API輸出結果找出被隱藏的檔案。還有就是機碼與檔案的監視程式,這個就像是Win32平台上SysInternals的RegMon與FileMon。Petr同時也做了相關的展示。

4. Matt Conover - Buffered Code Execution: Detecting Program Behavior & Malicious Drivers

Matt目前是Symantec Research Labs的Principal Software Engineer,他這次演講的目的是怎麼觀察到惡意程式的行為。觀測的目的當然是為了知己知彼,但是要知彼可不是一件容易的事情,因為要讓對方不知道你的存在,甚至有些對方會試著去找出你是否存在,以避免被觀察。傳統上可以透過單步除錯的方式加以觀察,另外還有就是API或System call的hooking。而這些方法當然有它的不足之處,所以Matt就開發了利用模擬出真實環境的作法,來觀察惡意程式的行為。而比較特別之處,就是Matt的解決方法(他們稱之為BCE)並不是去模擬所有(或該惡意程式會使用到的)原先系統應該有的行為,而是只模擬必要之部分,而不必要之部分則再交由原先的系統執行。所以除了可以大幅提升執行的效率,更可以避免需要模擬過多行為的窘境。因為系統的行為很複雜,尤其是在一些特殊狀況下要無誤地的處理更是需要好好設計,這也是他講解內容中一個很重要的部分,不過那個對我而言就太偏實作方面了。而目前他們的挑戰是如何處理有關Callback的問題。

5. Rich Smith - PhlashDance: Fuzzing your way to expensive bricks
Rich目前是HP實驗室的Offensive Technologies & Threats (RiOTT)研究計畫的主導人。這個標題其實讓人有點看不懂,PhlashDance應該是一個新創的名詞。我用Google Trends找尋,甚至還沒有足夠的資料可以顯示。基本上他講的是一種稱之為Permanent Denial of Service (PDoS, 永久性阻斷攻擊)的攻擊手法之一。傳統的DoS/DDoS,不管問題的嚴重性,都可以透過重開、隔離等方式回復原先的服務。而PDoS手法則是讓系統在遭受攻擊後必須透過置換硬體或重新設定硬體的方式才可以加以回復至原先的狀態,而Bricking指的正是服務無法透過重開而回復這件事。而其討論的方法,其實就是利用攻擊韌體的方式,來達到破壞設備的目的。韌體因為很多原因,所以是一個容易遭受攻擊的目標(當然目前這樣的攻擊還是不多)。原因包含這些設備通常在網路的最前線(包含防火牆本身)、安全稽核沒有包含韌體(事實上根據我接觸有關資訊安全相關認證與稽核的經驗,都沒有提到韌體這個名詞)、韌體從業人員資訊安全概念薄弱(連軟體從業人員都薄弱了,更遑論韌體從業人員)、與設備的多樣性等等。而為了達成遠端攻擊的目的,最簡單就是利用大多數設備所具備的韌體更新功能。解決之道就是把遠端更新韌體的功能加以關閉,並對韌體的檔案進行加密或雜湊值的保護等方式。而PhlashDanac就是一個自動化的工具,可以找出設備的韌體檔案本身是否有風險存在。以台灣硬體製造的能力與數量,這個議題對台灣這些製造商應該是很重要的。因為不管設備上應用系統的安全機制有多強,如果連自己都保護不了也是白搭。

6. Jack Yu - 反恐與國家資訊基礎建設保護
Jack Yu目前是阿瑪科技的人員,而這也是當天唯一一場中文的演講。一開始講的東西有些鬆散,介紹了一些資訊安全上的威脅(DDoS、DNS Poisoning、SQL Injection、SEO Poisoing與Rerouting等)。後面則介紹了CIIP(國家資訊基礎建設保護)的目的與一些作法(透過演習)。基本上,這樣演習的目的主要還是為了能夠更加了解可能發生的問題與因應之道,所以著重在監控、分析與應變的能力上,而不光是事前的偵測與防堵。而其保護的目標則包含了服務、頻寬、Routing、實體設備與線路與監控的資料。相較於世界各國,台灣政府對這些事情做了多少?

SyScan '08 現場報導 (上)

這次SyScan在台北舉行的年會,看了現場的報告編號,大概有4,5百人。老實說,不只主辦單位自己覺得很意外,我也覺得很意外。因為這是技術導向的年會,在台灣有這麼多人搞資安的技術嗎?而且這是要付費的活動,也不太可能光是因為興趣而參加。不過我看了身邊的人,有不少似乎還是學生(所以應該是用人民的錢),另外一些可能就是公司強迫的了。因為第二天,坐在我身邊的老兄竟然拿了一本簡體中文的書在看...第二天都是國產的講師耶,不但看還看到打呼。

KeyNote是由主辦單位之一 - 阿瑪科技(Armorize)的CEO黃耀文(Wayne Huang)主講,講的是亞洲在資安市場的特殊地位。尤其因為兩岸的特殊環境,更因此形成了資安問題的主要戰場。對使用者來說,的確是一件壞消息。但是對資安廠商而言,尤其是本地化的資安廠商,倒是一個比較正面的消息。當然,這樣的條件並不保證在地的資安廠商就能順利取得優勢,還是要靠其他方面的努力才行。

兩天的主講人各有六個,其中第一天以外籍兵團為主,其中有五場是講英文。老實說,有些人講的英文因為腔調的關係,聽的過程還真是囫圇吞棗,還好Wayne適時體貼的做了重點的翻譯,也讓大家能夠更加了解主講人的意思。

不過在議題安排上,我個人認為有些可以再改進的部分。
1. Coseinc與阿瑪科技兩家主辦廠商就包辦了五個場次(Coseinc兩場、阿瑪科技三場)。而Coseinc兩場都是講Mobile設備的安全威脅,其中又多著墨在Rootkit,似乎有些重複。雖然這是Coseinc的專長,也確實是未來下一個資安的戰場,但是重複的內容似乎有些累贅,兩個主講人好歹應該先互相知會一聲。
2. 扣除主辦單位自己的五個場次,另外四場是由其他國家的資安專家當主講人,而國內則有三場。雖然參加這樣的會議當然希望能夠多吸收國際上的知識,但是國內的主講人似乎過少了。回到第一點,主辦單位自己的場次似乎是有些多了。也有可能是因為國內要找資安技術的專家並不容易,而且是要活耀在這個社群中。
3. 整場會議並沒有提到與Virtualization相關的安全議題。以目前Virtualization相關技術的熱門程度與各家大小廠商的推動,這個議題應該是有研究的空間。不知道是因為技術太難還是太簡單,所以並沒有看到這樣的研究報告。
4. 台灣IT人員很關心的USB病毒也沒有看到相關議題。雖然有人提到USB病毒這個名詞,也一直說很難去防範,但是應該還是有人已經在研究或開始深入研究,畢竟這是目前及可見的未來對使用者很大的威脅。這點我承認是有點過頭了。因為講的資安技術,而不是目前流行的資安威脅。

經過12個場次下來,看得出來有些講師經常參加演講,有些人則是很少上台,所以表現的良莠不齊。我會參加這個會議有一半的原因是衝著阿瑪科技這個主辦商而來的,因為阿瑪科技主要專長在網站程式碼的安全檢測,這是我最近想好好研究的議題,甚至也不排除作為未來的發展方向。當然,網站安全不是只靠程式碼本身就可以達成,整體的設計與架構都有可能產生安全的問題。不過,這個已經不是這篇文章的主題了。在下一篇中,我會針對每個主講人的內容做一個簡單的介紹。不過因為我不是主辦單位的人員,所以沒有辦法提供圖片,只能憑記憶用文字說明了。

活動官方網站
SyScan 前瞻資安技術年會 官方網站與BLOG

2008年7月5日 星期六

你準備好降落傘了嗎? - 談雲端運算的安全議題

延續之前的熱潮,雲端運算(Cloud Computing)持續成為熱門的話題。之前我們看到在推廣雲端運算時可能遭遇到的問題,其中有多項議題與安全相關。在一份Gartner所發表的研究報告中,特別針對雲端運算所面臨安全上的議題做了一個完整的整理,共包含下列七項:

1. 特權使用者的管理 (Privileged User Access) - 特權使用者(如Windows的Administrator或是*nix的root)因為擁有幾乎絕對的權力,所以在使用上必須經過嚴密的管控。舉例來說,這些人員在進入公司前可能經過較為嚴格的背景調查。但是一旦將運算及資料都交付到服務供應商,這些系統的特權使用者將不再直接受公司管理,如何確保服務供應商能夠有效管理特權使用者將是一個很重要的議題。

2. 法規的遵守 (Regulatory Compliance) - 雖然公司透過服務供應商的服務執行公司營運的活動,但是遵守法規的責任仍舊屬於公司本身,而不是服務供應商。因此必須確保服務供應商的作業方式能夠符合法規要求,甚至在必要時加以稽核。

3. 資料所在的位置 (Data Location) - 這部分其實跟法規的遵守有關係,不過比較著重在有關資訊處理的隱私保護上。事實上,每個國家或地區對於隱私權的保護有不同的規範。所以如何確保資料處理能夠符合資料收集地點的法規以及
資料處理時所在位置當地的法規,是一個必須絕對遵守的要求。有些隱私權保護的規範,甚至會限制資料在未經授權前不可傳送至其他的國家或地區。

4. 資料的隔離 (Data Segregation) - 因為服務供應商同時提供服務給許多客戶,各個客戶間的資料是否已被有效的隔離,以避免資料被其他客戶看到而產生資料外洩的疑慮。

5. 回復能力(Recovery) - 雖然雲端運算之一的特點就是分散式的處理,所以不會因為單一設備的問題而中斷服務。但是再怎麼強調不中斷的系統,終會有服務中斷的機會。當發生問題時,服務與資料的回復能力,也是必須加以考量的。

6. 支援調查的能力(Investigation Support) - 因為服務供應商同時提供服務給許多客戶,再加上同一個客戶的服務可能在任意地方被執行,所以如果一但有法律調查上的需求時,這些可能交互混雜的使用紀錄是否能夠有效地的被取出並加以追蹤,將可能是一個複雜的問題。

7. 永續的使用性(Long-Term Viability)
- 即使雲端運算的系統可以提供長時間不中斷的服務,但是服務供應商本身卻不見得會永續經營。服務供應商可能退出市場、被併購或是客戶主動希望轉換平台,這個時候原先的資料是否能夠完整的取出甚至轉換到新的平台,就是一個很重要的議題。

這些問題除了透過SLA來規範服務供應商所應該具備的服務水準外,服務供應商更必須主動(或是被動)提出更為透明的資訊,以便讓使用者能夠完整了解服務供應商內部的管理與運作模式。當然,如果能夠有一些公正的第三方針對服務供應商作認證,我相信對使用者而言可以省下不少事情。不過我想,以目前的時機點而言,這樣的規範要產生並順利被推廣,應該是八字還沒一撇。雲端運算這樣的運作模式,對原先IT環境產生了不少本質上的衝擊,在資訊安全方面也是一樣。

原文出處:
Gartner: Seven cloud-computing security risks
Assessing the Security Risks of Cloud Computing (付費文件)

天生不平等 - 談資訊分類的重要性

根據一份研究報告指出,企業內儲存在網路上的資料,有高達90%的比例從未被讀取過。而其中被讀取過的檔案,有65%只被讀取過一次,只有極少數的檔案會被多次重複使用。當然,這個研究報告的觀察期僅為3個月,並不能完全代表資料真正的使用狀況,不過基本上的趨勢應該是一樣的。對此,該報告舉出兩個需要進一步思考的方向。第一個是雖然現在儲存設備的價格大幅下滑,但是實際上儲存其內的資料有很多是幾乎不會再被使用到的。所以為了達到更有效率的使用資源,這些大量且不常使用的資料可以儲放到較為慢速但便宜儲存設備。另外一個就是因為資料讀寫比例的接近,原有的預取(Pre-fetching)與快取(Caching)機制必須重新加以檢視,以便在新的使用狀況下保持快速存取的目的。而這些常被重複使用的檔案,有下列幾個特性:
  1. 跟使用者工作相關的檔案(這個應該是廢話)
  2. 在目錄結構上屬於較上層的目錄
  3. 很小的檔案大小
這件事跟資安有甚麼關係?廣義來說,資料的可用性(Availability)是屬於資訊安全的鐵三角(AIC - Availability, Integrity, Confidentiality)之一。如何有效率的規劃資料的儲存方式,除了從使用頻率的角度來考量外,也必須一併考量資料的重要性與機密性。一般而言,使用頻率會決定該資料最有效率的儲存方式,而資料的重要性與機密性則必須透過保護措施來加以確保,但是實際上兩者之間卻不是完全獨立的。舉例來說,如果大部分存放在網路的資料是不會再被存取的,那麼或許這些資料根本就不需要放在網路上讓人"自由"存取,因此保護機制的考量就不需要考慮網路存取所面臨的威脅。這類保護措施屬於風險規避(Avoidance)的類型,事實上是一種相當划算且有效的保護措施。而這樣的保護方式,如果沒有在規劃時將資料的實際使用情況考慮進去,是很難發現的。

因為資訊數量與種類越來越多,所以目前都是透過資料分類(Data Classification)的方式,將資料分成數個類別,而讓每個類別擁有自己的安全政策,而不是直接針對資料本身去定義。如果不這樣做,在安全管理上將會產生大量到無法有效負擔的工作內容。資訊的分類是最基本且重要的一個環節,如果沒有明確的做好資訊分類,會發生將寶貴的資源放在保護不重要資訊的憾事。更甚者,會發生重要的資源沒有足夠的保護措施加以防護。如此一來,不再只是沒有效率的問題,而是連基本的保護目的都沒有達成。所以說,資訊分類的好壞可以決定一個組織的資訊安全目標是否能夠順利達成。俗話說,人人生而平等,這句話在資訊安全的領域中,可絕對是不成立的。

另一方面,長久以來,對於資訊安全的定義都沒有一個明確的界線。從實務來看,從事資訊安全的人員,能夠對組織掌握的越多,就越能找出組織所面臨的風險與可採用的解決方案。所以,資訊安全跟很多管理議題一樣,都是組織層面的問題,也必須由組織的層級去加以考量與規劃,而不是IT (Information Technology)或IS (Information Security)單一部門的事情,甚至是任由系統管理者自己土法煉鋼。

原文出處:
Most Network Data Sits Untouched

2008年7月3日 星期四

看不見就等於不存在? - 如何安全刪除檔案

很多人都知道,Windows的作業系統有一個資源回收筒的功能(現在很多作業系統都有這樣的功能了),它會幫你把刪除的文件移到這個地方,以讓 你不會常常忽然喊出"Fxxk"這類不雅的文字。但是可能很少人會主動清除資源回收筒內的資料,因為既然這是一個防止誤刪的機制,主動去清除不就違反了它 原先的好意了嗎?幸運(還是不幸?)的是資源回收筒有使用空間的上限,所以就算你不去主動刪除,它也會正常運作。但是這樣的機制,從安全的角度來看卻是危險的。因為使用者可 能以為不存在的資料(尤其如果是使用者根本不知道有資源回收筒這個東西),其實就安靜的躺在筒子裡,等著任何稍具電腦知識的人去發現。

所 以,從資料安全的角度,至少我們應該確保重要的資料不會乖乖的躺在資源回收筒內。但是,如果我們主動將刪除的資料從資源回收筒加以清除,資料就真的不見了 嗎?再稍具電腦知識的人還知道,檔案的刪除在作業系統來說,不過是將檔案在硬碟的位置做個標記,讓日後作業系統要使用硬碟空間時知道這個空間是可以使用 的。所以,你的資料還是躺在那裏,只是作業系統會當作它不存在。以目前硬碟空間越來越大的情形,除非你是沒事灌爆硬碟的使用者,不然這些資料可能會躺在硬 碟內很長一段時間。而且,有很多工具可以找出這樣的檔案資料。這類工具可以用來解救誤刪再誤刪的檔案、可以用來解救損毀的硬碟,當然也可以讓別人找出你不 想要他看到的資料。以下,我會透過實際的例子讓大家看到這類工具的使用以及如何做才能有效的刪除檔案,我使用的工具為Undelete Plus(救回檔案)與Eraser(有效的刪除檔案)這兩套。相關的工具其實有很多,使用方式與功能也各有不同,但是觀念都是一樣的。Undelete Plus提供免安裝的版本(Green),而Eraser則必須經過安裝才能使用。Eraser為Open Source的軟體,有興趣的人還可以研究它的程式碼。

關於刪除檔案我需要補充說明一下,這類軟體的原理簡單來說就是在原先資料所在的磁碟位置,進行重複且雜亂的資料寫入,以期蓋掉原先的資料。但是因為硬碟本身是磁性物質,所以即使經過複寫,還是有可能被讀取到原先的資料(資料殘存),因此這類的工具都提供了不同的覆寫方式。大致上越複雜的演算法與越多次的覆寫可以達到越好的刪除效果,但是相對所花費的時間也就更多。另外,對硬碟的傷害也會越大。不過再好的演算法,原先的資料仍舊有可能被讀取到,只是困難度會增加很多,也需要很特殊的工具。這也是我說有效的刪除檔案,而不是完全的刪除檔案的原因。

到此,看圖說故事的時間到了:


Undelete Plus可以列出硬碟中可以找到的已刪除資料。為了測試方便,我使用一個剛格式化的USB隨身碟(G:),Undelete Plus顯示沒有任何已刪除的資料可以救回。

將某個檔案複製到USB隨身碟。

將檔案刪除,因為USB隨身碟沒有開啟資源回收筒的功能,所以不需要也沒辦法從資源回收筒救回。

Undelete Plus再次掃描USB隨身碟,發現一個檔案可以回復,而且狀態為良好(也就是很容易回復)。

使用Start Undelete功能將檔案救回,畫面顯示救回的檔案存放在"我的文件"資料夾之下。你可以檢查兩個檔案的MD5或是直接開啟檔案,確定救回的檔案跟原先是一樣的。

那麼,那我們該怎麼做才能確保資料不會被"救回"呢?該Eraser上場了。

安裝Eraser後會在右鍵的功能選單出現"Erase"與"Eraser Secure Move"兩個選項。我們要刪除檔案,所以選擇"Erase"。

出現確認的畫面,因為一旦刪除就真的再也救不回了。

選擇"Options"會出現設定畫面,可以選擇不同的覆寫方式。因為是測試,選甚麼都可以。

再次使用Undelete Plus掃描,發現一個可以回復的檔案。不過檔名變成亂碼,檔案大小也不對。你可以試著回覆這個檔案,不過內容已經沒有任何意義了。

Eraser也可以針對整個磁碟區做刪除保護的動作,不過時間上可能會很長。這個功能不是刪除磁碟區內的檔案,而是把已經刪除的檔案(未使用空間)做覆寫,以確保原始資料不復存在。我用USB隨身碟測試所花的時間還可以接受,不過對內接式的硬碟則沒有耐心等到程式執行完。

執行完再利用Undelete Plus掃描,找不到任何可以回復的檔案。

以資料安全的角度,作業系統這樣的設計是有很嚴重的問題。但是如果不這樣做,作業系統的效能會受到很嚴重的影響,甚至到了無法使用的狀態。另外,作業系統當初的設計就不是從安全的角度出發。這個又是一個使用性與安全性的取捨,而且我相信使用性會持續壓過安全性的需求。除非電腦的儲存裝置有根本的改變,否則這樣的問題就是會一直存在。我們如果有重要的資料不想被發現,那就最好找一個類似Eraser的工具,以避免在多年後發現自己當年不堪的資料(如自拍照)被人拿來當作勒索的工具。雖然有人來勒索通常表示你是一個有名或有錢的人物,不過這種事還是能免則免吧。

About