IBM Research 已經(jīng)創(chuàng)造出一種新的軟件安全性衡量方法——Horizontal Attack Profile(簡(jiǎn)稱 HAP),其發(fā)現(xiàn)適當(dāng)保護(hù)下的容器(Containers)幾乎能夠提供與虛擬機(jī)(VM)相媲美的安全水平。
虛擬機(jī)是否比容器更加安全?
虛擬機(jī)比容器更加安全!——這可能被大多數(shù)人認(rèn)為是正確答案,但 IBM Research 卻發(fā)現(xiàn),容器完全有可能與虛擬機(jī)同樣安全,甚至更加安全。
容器
可以被視為不在虛擬機(jī)管理程序上運(yùn)行的超極簡(jiǎn)虛擬機(jī)。容器不需要安裝主機(jī)操作系統(tǒng),可直接將容器層(比如LXC或libcontainer)安裝在主機(jī)操作系統(tǒng)(通常是 Linux 變種)上,直接利用宿主機(jī)的內(nèi)核,抽象層比虛擬機(jī)更少,更加輕量化,啟動(dòng)速度極快。
軟件安全性衡量方法——HAP方案
IBM Research 工程師兼頂尖 Linux 內(nèi)核開發(fā)人員詹姆斯·博頓利(James Bottomley)寫道,“目前關(guān)于容器與虛擬機(jī)管理程序間安全性辯論中的一大核心問(wèn)題,在于沒(méi)人能夠開發(fā)出一種真正可靠的安全性衡量方法。所以爭(zhēng)論完全僅限于定性方面(由于接口寬度,虛擬機(jī)管理程序“讓人覺(jué)得”比容器來(lái)得更安全),但實(shí)際上還沒(méi)有人進(jìn)行過(guò)定量比較。
為了解決這個(gè)難題,博頓利創(chuàng)造了HAP方案,旨在以客觀方式衡量并描述系統(tǒng)的安全性水平。博頓利發(fā)現(xiàn),“采用精心設(shè)計(jì)的安全計(jì)算模式(seccomp)配置文件(用于阻止意外系統(tǒng)調(diào)用)的Docker容器提供了與虛擬機(jī)管理程序大致相當(dāng)?shù)陌踩浴!?/p>
垂直攻擊配置文件VAP
博頓利首先定義了垂直攻擊配置文件(簡(jiǎn)稱 VAP)。該配置文件中的全部代碼用于通過(guò)遍歷提供服務(wù),從而實(shí)現(xiàn)數(shù)據(jù)庫(kù)輸入與輸出信息的更新。與其它程序一樣,這部分代碼自然也存在 Bug。盡管其 Bug 密度各不相同,但一般來(lái)講遍歷的代碼越多,其中存在安全漏洞的可能性就越大。HAP就是堆棧安全漏洞(可以跳轉(zhuǎn)進(jìn)入到物理服務(wù)器主機(jī)或虛擬機(jī))。
HAP 原理
HAP 是最為嚴(yán)重的一類安全漏洞。博頓利將其稱之為“潛在的商業(yè)破壞事件”。當(dāng)問(wèn)到如何利用HAP來(lái)衡量系統(tǒng)安全時(shí),博頓利解釋稱:
衡量 HAP 的定量方法表明,安全人員可以選定 Linux 內(nèi)核代碼的 Bug 密度,并將其乘以所運(yùn)行系統(tǒng)在達(dá)成穩(wěn)定狀態(tài)后(意味著其似乎不再遍歷任何新的內(nèi)核路徑)會(huì)經(jīng)過(guò)的惟一代碼量。
這種方法假定 Bug 密度是均勻的,因此 HAP 將近似于穩(wěn)定狀態(tài)下所遍歷過(guò)的代碼量。顯然,對(duì)正在運(yùn)行的系統(tǒng)進(jìn)行衡量時(shí)不可采取這樣的假設(shè),但幸運(yùn)的是 Linux 內(nèi)核中存在一種名為 ftrace 的機(jī)制,可用于對(duì)特定用戶空間進(jìn)程所調(diào)用的一切函數(shù)進(jìn)行追蹤,從而給出合理的遍歷代碼行近似值。(注意,這里只是一個(gè)近似值,因?yàn)槲覀冊(cè)跍y(cè)量函數(shù)中的總代碼行數(shù)時(shí)由于 ftrace 無(wú)法提供足夠的細(xì)節(jié),而沒(méi)有考慮到內(nèi)部代碼流的情況。)
此外,這種方法對(duì)于一切容器都非常有效。控制流通過(guò)系統(tǒng)調(diào)用信息由一組已聲明進(jìn)程發(fā)出,但其并不適用于虛擬機(jī)管理程序。這是因?yàn)槌藢?duì)接口進(jìn)行直接超調(diào)用外,大家還需要從后臺(tái)守護(hù)程序處添加追蹤(例如 kvm vhost 內(nèi)核線程或 Xen 中的 dom0)。
運(yùn)行的代碼越多越可能存在HAP安全漏洞
簡(jiǎn)而言之,你衡量一個(gè)系統(tǒng)(無(wú)論它是裸機(jī)、虛擬機(jī)還是容器)運(yùn)行某個(gè)特定應(yīng)用程序使用了多少行代碼。其運(yùn)行的代碼越多,存在HAP級(jí)別的安全漏洞的可能性就越大。
在確定了 HAP 以及如何對(duì)其加以衡量之后,博頓利隨后運(yùn)行了幾輪基準(zhǔn)測(cè)試:
redis-bench-set;
redis-bench-get;
python-tornado;
node-express。
后兩者亦運(yùn)行有配備簡(jiǎn)單外部事務(wù)客戶端的 Web 服務(wù)器。
博頓利在此次測(cè)試當(dāng)中使用到了:
Docker;
谷歌 gVisor(一套容器運(yùn)行時(shí)沙箱);
使用KVM的同一個(gè)容器沙箱gVisor-kvm(KVM是Linux內(nèi)置的虛擬機(jī)管理程序)
Kata Containers,一套開源輕量化虛擬機(jī);
Nabla,IBM剛剛發(fā)布的、具有強(qiáng)大服務(wù)器隔離能力的容器類型。
博頓利發(fā)現(xiàn),Nabla 運(yùn)行時(shí)擁有“優(yōu)于 Kata 虛擬機(jī)管理程序容器技術(shù)的 HAP,這意味著發(fā)現(xiàn)了一種在 HAP方面優(yōu)于虛擬機(jī)管理程序(即安全性更高)的容器系統(tǒng)。”
不過(guò)體現(xiàn)出安全優(yōu)勢(shì)的絕不只有 IBM 公司的項(xiàng)目。他同時(shí)表示,“具有經(jīng)過(guò)精心策劃的 seccompt 配置文件的 Docker 容器(能夠阻止意外系統(tǒng)調(diào)用)同樣能夠提供與虛擬機(jī)管理程序基本相當(dāng)?shù)陌踩憩F(xiàn)。”
GVisor 的表現(xiàn)則有所不同。好消息是,gVisor 在 Docker 用例方面表現(xiàn)不錯(cuò);但在另一個(gè)用例中,其表現(xiàn)則不及虛擬機(jī)管理程序。
博頓利推測(cè),這是因?yàn)椤癵Visor 試圖通過(guò)在 Go 中重寫 Linux 系統(tǒng)調(diào)用接口以改善兼容性。但是開發(fā)人員并沒(méi)有注意到 Go語(yǔ)言運(yùn)行時(shí)實(shí)際使用的系統(tǒng)調(diào)用量,而這些結(jié)果實(shí)際上會(huì)暴露在外。”如果他的猜測(cè)沒(méi)錯(cuò),那么博頓利認(rèn)為 gVisor 的未來(lái)版本可以通過(guò)重寫來(lái)解決這一安全問(wèn)題。
不過(guò),真正的問(wèn)題并不在于哪種技術(shù)本身更加安全。對(duì)于最嚴(yán)重的安全問(wèn)題而言,容器與虛擬機(jī)的安全水平大致相當(dāng)。博頓利認(rèn)為,“事實(shí)上完全有可能出現(xiàn)比虛擬機(jī)管理程序更加安全的容器解決方案,而這將給兩種技術(shù)誰(shuí)更安全的爭(zhēng)論徹底劃上句號(hào)。”為了弄清二者在惡意應(yīng)用面前的暴露水平,可能需要采用某種類型的模糊測(cè)試。
除此之外,博頓利的工作僅僅只是一個(gè)開始。他表示,這項(xiàng)工作的價(jià)值在于證明以客觀方式衡量應(yīng)用程序安全性并非不可能。他解釋稱,“我認(rèn)為這項(xiàng)工作并不代表著爭(zhēng)論的結(jié)束;但通過(guò)對(duì)此次測(cè)試的詳盡描述,他希望更多的人也可能開始自己的量化衡量嘗試。
-
容器
+關(guān)注
關(guān)注
0文章
499瀏覽量
22125 -
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
940瀏覽量
28429
原文標(biāo)題:容器和虛擬機(jī),誰(shuí)更安全?
文章出處:【微信號(hào):EAQapp,微信公眾號(hào):E安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論