搜尋此網誌

2012年5月23日 星期三

[研究報告] 不安全的函式庫

java-e1313592015692之前我提到很多關於更新的議題,包含作業系統、應用程式等,如果沒有做好更新的動作,往往就提供了惡意份子最佳的可趁之機。現在作業系統幾乎都有自動更新的功能,也有越來越多的應用程式開始具備自動更新的能力。即使是沒有自動更新功能的應用程式,我們也可以透過相關工具 (如 Secunia PSI) 來達到通知、甚至是更新的功能。

除了上述的東西需要更新,還有一個很重要的東西一直處於一個被遺忘的角落裡,那就是軟體所引用的函式庫或框架。透過函式庫與框架,可以讓軟體開發人員專心在主要的業務功能上,加快開發的速度。而在 Open Source 精神的引領下,各式各樣的函式庫與應用框架推陳出新,更讓開發人員瞬間擁有許多好用的利器。但是水能載舟、亦能覆舟。這些函式庫與框架,往往在被引入系統後,就遭到開發者的刻意忽略,而不再進行相關更新。很可惜的是,雖然這類函式庫與框架的寫作人員通常擁有相當不錯的技術能力,但是仙人打鼓有時錯,這些函式庫與框架同樣會有安全性的問題。

Apsect Security, Inc 前一陣子發表了一份與 Sonatype 所共同研究的報告 (The Unforunate Reality of Insecure Libraries),內容是針對目前常見的 Java 函式庫與框架進行相關的使用情況與安全性分析。在此份研究報告中包含下列重點:

  • 在所有取樣分析的  31 個套件的 1261 個版本中,有 37% 存在已知的安全漏洞。
  • 在所觀察到的 1.13 億次下載中,共有 0.298 億次 (26%) 的下載內容是包含已知的安全漏洞。
  • 最常被下載的套件包含 GWT, Xerces, Spring MVC 與 Struts 1.x (沒錯,是 1.x)。
  • 諷刺的是,安全相關的套件通常反而包含更多已知的安全漏洞。對此,報告中認為可能的原因之一是這類套件通常會受到較多安全專家的檢視,因此讓安全漏洞難以遁形。
  • 如果以 Aspect Security, Inc 輔導客戶的經驗來看,這些 Open Source 的套件仍有許多未被發現的安全漏洞。
  • 套件的安全與否跟之前版本的安全漏洞數量沒有太大的關聯。
  • 因為通常一個系統會包含多個 Open Source 套件,因此大多數的系統至少包含一個以上的已知安全漏洞。而大型公司的系統因為功能複雜,導致包含的套件也越多,所以包含已知安全漏洞的可能性將相對提高。

嚴格來說,系統存在安全漏洞並不表示就可以被惡意份子成功地加以利用並造成傷害,但是用這種說法來說服自己確實是鴕鳥了點。當然,這些狀況絕對不是 Java 獨有,使用其他語言所開發的系統也存在著類似的問題。

前面我提到開發者刻意忽略系統中所引用套件的更新,其實是一種推卸責任的說法。現實狀況是,這類套件的更新資訊散落各處,要能夠有效地加以追蹤本來就是一個非常困難的事情。而版本之間的相容性,更造成了開發者不敢 (心理因素居大)、甚至不能更新的窘境。更有甚者,有些開發者會針對這些 Open Source 套件進行內部的修改 (修 Bug、提昇效率、或是功能延伸,理由不一而足),如此一來,更新版本將是一個浩大的功能,因此最後只好一直守著舊的版本。而對於那些已經進入維護階段的系統,我相信更是不會有開發者主動去更新其所引用的套件。因此,這類問題不能丟給開發者自由心證,組織必須制定一個明確的管理辦法加以因應。對此,Aspect Security 在報告中提出了下列建議:

  • 列出目前系統所使用的套件。
  • 仔細審核這些套件 (的原始碼)。
  • 限制使用未經授權的套件版本。
  • 關注套件的更新資訊,並適時予以更新。

目前市面上也有一些工具提供上述的功能,但是建置費用與後續的維護成本可能並不是一般企業所能支付的。因此,在此先祝各位好運了。

2012年5月17日 星期四

[資安觀念] 更新,還是不更新?

Patch-Management-Updates過去我們常被告誡,千萬不要下載或安裝來路不明的軟體。即使今天我要更新微軟 Windows 的漏洞,也應該透過 Windows Update 自動更新或者直接到微軟的網站下載才比較保險。至於其他第三方的軟體,雖然可能沒有自動更新的功能,但是至少還是有機會到官方網站下載正式釋出的版本。當然,對於那些你根本就搞不清楚用來幹嘛的軟體,請二話不說就是直接敬謝不敏。姑且不論有多少使用者確實遵守這些”教誨”,但是這些教誨確實是可行而有效的,一直到…

這幾年在企業間很流行終端設備安全 (End point security) 這個概念,主要是為了因應大量來自內部所產生的資安事件。嚴格來說,終端設備安全是一個很廣泛的概念,相關產品也是功能各異。其中有一些產品會檢查終端設備的狀態,並據此決定這個終端設備是否可以正常地使用企業網路。所謂檢查的狀態通常包含是否安裝防毒軟體以及防毒軟體病毒碼是否是最新版、是否安裝防火牆、是否進行相關的更新 (最主要的是 Windows Update) 等。如果檢查不過,這個終端設備就不能正常的使用網路。此時有兩種情況,一種是網路完全不能使用。這種情況很不近人情,所以現在大多是第二種情況,也就是提供使用者補救的手段,讓使用者可以通過檢查。舉例來說,如果是 Windows Update 沒有更新,那讓這個終端設備更新完畢既可。除了 Windows Update 之外,其他第三方的軟體,當然也可以透過同樣的方法更新。除了更新,這些產品可能會要求終端設備額外安裝其他軟體,以符合管理的需求。

聽起來很合理的情境,只是現實生活當然沒那麼單純。如果今天你帶著心愛的筆電到國防部作客,正要連上網時發現被要求更新某個軟體,我想大部分的人都不會有所遲疑。但是如果場景移到你家樓下的阿里不達咖啡廳,此時你是更新還是不更新?好吧,你可能很有骨氣,寧可忍受片刻無網路的生活也不要成為受害者聯盟的一員。再把場景移動一下,如果你正在國外旅行,出發前還特地確認了住宿的飯店有提供上網的服務。正當你興高采烈的連上飯店的 WiFI 網路時,跳出要你更新軟體才能繼續使用網路的訊息,你會做何打算?忍受數日無網路的原始生活,還是眼睛一閉按下去就對了?我不敢奢望自己能夠忍受數的日原始生活,但是千萬也別閉著眼睛按下去….否則可能真的會直達地獄了。

Internet Crime Compliant Center (IC3) 在本 (5) 月初發表了一篇新聞稿警告美國人到外國旅遊時要小心在飯店上網時所跳出的軟體更新訊息。想當然爾,這些訊息絕對不是為了你的安全著想,而是設法讓你在不知情情況下把那座特洛伊木馬帶回家。 其實這類手法之前就很常見,只是當你身在”別人家”時,對方就更容易對你進行網路的攻擊。而終端設備安全檢查的普及,更讓使用者覺得上網前要求更新軟體是很”正常”的一件事,可能將使得這類攻擊的成功率更為提高。也因為終端設備安全檢查的普及,我再也不能說請你一定要到”官方網站”下載正式釋出的版本。通常你能做的,只有斷線跟按下去兩個選項…對了,還有一個選擇,那就是完全不管他,畢竟這類訊息很多只是嚇人的紙老虎而已。

2012年5月10日 星期四

[新聞時事] 你想敲 Rackspace 的硬碟嗎?

430281_3370445021121_1269094318_3387688_1982910351_n前一陣子公司有一批很老舊的硬碟 (大約超過10年) 需要報廢,為此我還特地找了一個可以低階格式化硬碟的軟體,再把相關傢私準備好,一個個從裡到外好好招呼破壞一番。

是的,所有的資訊設備都有一定的報廢程序。目的當然不是怕隔壁那家討人厭的公司把設備搬去回收謀利,而是擔心當中所包含的重要資料被其他人發現、甚至是加以利用。摸的到的設備,如何破壞很清楚,破壞的程度更是一目了然。但是如果換成了虛擬的東西呢?最近很流行的虛擬化,乃至於雲端運算,都讓硬體這件事變得更為簡單。我們 (至少對大多數的人而言) 不再需要擔心硬體的事情,只要像用電一般地盡情享用那無窮無盡的資源即可 (又是一個 IT 界的天大謊言,就算是供電也不足的時候)。但是就跟所有的抽象化過程一樣,雖然在大部分的時間問題確實被簡化了,但是總有那麼些特殊的時候,問題將變得更加棘手。而資料的報廢,就是硬體虛擬化後的一個受害者。這個問題對於內部的虛擬化環境或雲來說,通常比較好解決。畢竟硬體是公司自己的,相關管理人員也是自家人,該怎麼做只要規定好就可以了 (我知道,光規定這件事可能就難如登天)。但是如果是公有雲呢?當我們不再使用這些系統時,原先的資料是否就此從雲的環境消失無蹤?答案是,靠運氣!

根據一篇由 Context Information Security 所發表的報告顯示,在他們所研究的四家雲端服務 (IaaS 形式) 廠商中,有兩家存在著一個很嚴重的安全問題,他們稱之為 Dirty Disks。簡單來說,就是當使用者不再使用系統時,原先儲存空間內的資料並不會被完整覆蓋,僅僅只是標記為無人使用。當日後有人需要使用儲存空間時,就知道哪邊有閒置的空間可供利用。這樣的作法其實並不陌生,我們平常所使用的檔案系統通常也是這樣做的。理由何在?因為將原先的資料加以覆蓋對硬碟來說是很耗費資源的動作。本機如此,雲端也是一樣。而雲端服務為了提供使用者更快的反應速度,再加上對廠商而言時間就是金錢,所以覆蓋資料的動作可能就在有意或無意之間被忽略了。請注意,這兩家可不是什麼小咖,分別是 Rackspace 與 VPS.NET。不過 Context Information Security 倒是很有誠意道德,確認這兩家廠商都已經把問題解決 (雖然 VPS.NET 只是口頭上說他們已經解決了) 了才對外公布這項研究結果。

不過市場上提供類似服務的廠商很多,而到底有多少雲環境存在著類似的問題?這個問題恐怕只有名嘴沒有人知道答案。身為一個使用者,我們甚至連我們所使用的雲環境是不是存在著類似的問題都無法知悉。當然,我們沒辦法拿著雷神之槌子到 Rackspace 的機房去把硬碟敲壞,我們能做的就是對那些重要資料做好必要的加密。此外,如果廠商在移除系統時提供了資料覆蓋的選項,別客氣盡量用下去就對了。至於廠商的說法「惡意份子要剛好拿到你留下的空間,然後從中獲得有用資料的機會微乎其微」,純粹聽聽就好。就像你從沒中過彩券,並不表示中獎這件事就不存在,更重要的是你怎麼知道你永遠都是那個槓龜的倒楣鬼 (喂,這種事還是倒楣的好)。

About