上回我在"應用程式間的安全隔離問題(1)"中介紹了硬體虛擬技術的乙個特點:由於vmm的不可被旁路的強制性監控性質,不同的客戶虛擬機器之間具有很強的隔離效果, 跑在不同虛擬機器上的使用者應用程式是很難做到實現互訪而同時又不被vmm所監控到. 那麼將不同使用者的應用程式部署於不同的虛擬機器上,是否應用程式間的嚴格隔離就得到滿足了呢?
如上問題的回答其實是安全作業系統要解決的乙個問題. 假定在客戶vm中跑的作業系統本身不存在安全漏洞可被利用來攻擊使用者程式, 那麼對如上的問題我們可以給出肯定的回答. 當然這也是乙個有點兒奇怪的回答: 如果這樣安全的作業系統存在, 使用者程式之間的隔離則無須走硬體虛擬化技術的途徑. 其實當前利用硬體虛擬化技術來解決作業系統安全問題這樣的做法變得越來越熱門.這一現象本身恰恰是因為安全作業系統的缺失才使得人們考慮另闢蹊徑走虛擬化道路的. 常用的商業作業系統(如windows, linux, unix各種版本, mac等)可以說沒有乙個能被認為是安全的作業系統. 如果跑在乙個客戶vm中的作業系統是這些商業作業系統中的任何乙個, 則客戶虛擬機器之間哪怕是再怎麼強的隔離效果都無法在使用者程式之間形成有效隔離. 哪怕是在乙個vm中只跑乙個使用者程式也不解決問題! 原因是如此簡單: 你無法在使用者程式及作業系統之間做隔離! 使用者程式需要作業系統對其提供服務.而其中最起碼的一項服務就是記憶體管理. 很不幸,所有商用作業系統偏偏在記憶體管理上尤其弱得不堪一擊(理由我在上一講中敘述過,下一講中我還將給出攻擊例項演示).廣為所聞的堆疊緩衝區溢位攻擊就是利用了商用作業系統在記憶體管理上存在的設計漏洞. 你也許可以要求讓你的程式"獨享專用"乙個vm,即不允許其他任何程式使用你的vm.可是你的"僕人",作業系統,卻始終在為你服務!這個僕人的確能為你提供許多優質的服務使得你已經離不開它.可是它卻有許多與生俱來的缺點和毛病可以被隱藏的敵人利用而給你帶來危險!如今似乎沒有人能知道常用的商用作業系統中隱含的安全漏洞在**.人們已達成共識:發現乙個漏洞打乙個補釘的方法是不能夠得到乙個安全作業系統的.
這就是為什麼我們說vm之間的隔離無法延伸到使用者程式之間的隔離. 在下一講中我要用乙個播客來展示如何利用商用作業系統的漏洞來攻擊乙個使用者應用程式. 這一雜談系列將引入道裡專案試**決應用程式間的安全隔離問題的技術手段.
該文原文是作者當天在道裡部落格上發表的 http://daoliproject.org/wordpress/ 道裡網頁請見 http://daoliproject.org/
PHP應用程式安全
繼續php應用程式安全的 主要一定要注意以下幾個方面 1 過濾sql注入攻擊 可以使用addslashes等php內建的直接給出函式,方便使用 function verifyinput input 而在顯示時則用 正常顯示之 或者乾脆就用 mysql real escape string函式過濾,就...
PHP應用程式安全
繼續php應用程式安全的 主要一定要注意以下幾個方面 1 過濾sql注入攻擊 可以使用addslashes等php內建的直接給出函式,方便使用 function verifyinput input 而在顯示時則用 正常顯示之 或者乾脆就用 mysql real escape string函式過濾,就...
應用程式間通訊 URL Scheme
ios 的設計思路是原則上禁止不同的應用程式之間相互訪問彼此的資料。雖然對於像我這樣的桌面應用開發人員而言,不能訪問程式以外的資料是不能想象的。但是從安全角度來說不失為乙個有效的策略。不過凡事總有例外,所以賈伯斯還是為程式間通訊開放了幾個介面。ios 上的應用程式可以通過向其它應用程式傳送乙個url...