接下來(lái)我們看一下,業(yè)內有一些做得比較好的安全產(chǎn)品,在安全方面沙箱方面如何解決的用戶(hù)隔離問(wèn)題。
首先我們看一下Docker目前使用哪些機制,這張圖主要是使用了三個(gè)緯度,有兩個(gè)緯度產(chǎn)生了LXC,使用了Namespaces,Namespaces它可以在多個(gè)方面實(shí)現一定的隔離能力。這個(gè)能力需要在2.6.x以后才能部分開(kāi)始使用。Cgroups機制保證操作系統資源的合理管理。另外,Docker啟用了AUSF的分層文件系統。傳統文件系統,我們可以認為是縱向的文件系統,你寫(xiě)哪個(gè)文件,這個(gè)文件一直到硬件,而AUSF是可以進(jìn)行疊加的。一層層的文件夾疊加,會(huì )映射成一個(gè)相同的文件夾。Docker里面,最下面的image用來(lái)做系統環(huán)境,中間會(huì )做APP,最上面是用戶(hù)運行期的東西,這些東西會(huì )被Docker封裝成一層層,實(shí)現了類(lèi)似于集裝箱式的部署能力。
對于Docker來(lái)說(shuō),對一個(gè)攻擊者來(lái)說(shuō),眼中看到的Docker應用有哪些東西?從剛才的圖上也是類(lèi)似的,整個(gè)系統有一個(gè)Docker container,右邊是DockerEngine。如果你在Docker上直接部署C進(jìn)程,下面兩層就是C的程序。對于惡意用戶(hù)來(lái)說(shuō),如果想得到所在機器的root權限,要突破你在Iibc上做的措施,還需要突破kernel中seccomp-bpf,這是kernel提供的一個(gè)安全機制,允許你定義某一個(gè)進(jìn)程所能進(jìn)行的系統過(guò)濾。第二、第三層攻破,seccomp-bpf可以進(jìn)行額外的安全判斷。你如果把這個(gè)也突破了,其實(shí)這臺機器也直接root掉了。
接下來(lái)我們看google chrome的沙箱。Chrome使用過(guò)SUID/Namespaces sandbox,這也是對linx container機制的利用。使用過(guò)seccomp-legacy。在沒(méi)有seccomp-bpf之前google使用seccomp-legacy。seccomp-legacy使用限制非常大。也同樣使用過(guò)seccomp-bpf。
我們剛才看了兩個(gè)業(yè)內的安全產(chǎn)品,可以簡(jiǎn)單的總結一下,對于沙箱來(lái)說(shuō),我們有哪些安全機制可以使用?參考這張圖,首先對于JVM來(lái)說(shuō),我們可以用Java security Manager 以及 Classloader機制。如果是Linux Kernel,那么我們還可以直接利用Kernel Namespaces,Cgroup ,Chroot、umount。這些東西在LXC已經(jīng)封裝好了可以用,而且通常它們在一起使用才可以產(chǎn)生比較好的效果。然后是aufs,2.6才開(kāi)始支持。Seccomp-bpf是3.5,如果版本不夠你就要使用其他方案來(lái)做內核層的一些過(guò)濾了。
另外一個(gè)角度,對云計算上的安全沙箱來(lái)說(shuō)有哪些層次可以做防御?JVM內的防御是否有必要?Java的安全沙箱攻破的難度不是很大,它是不是不要了?剛才我們說(shuō)了,安全沙箱沒(méi)有絕對安全的設計,如何在安全上做到盡可能可靠的防護?多層防御可以有效提高安全防護能力。
第二是進(jìn)層隔離,用于提供安全機制。
第三層要在kernel space里面要有安全過(guò)慮。
前面做完了,基于現有的安全機制來(lái)說(shuō),至少可以認為在目前,可以直接使用的防護措施就這些了。
剛才我們看到了一些安全機制,接下來(lái)看看飛天安全在沙箱方面使用哪些機制?其實(shí)前面我們說(shuō)的這些,該用的都用到了。
飛天安全沙箱,是這樣的一個(gè)系統。簡(jiǎn)單來(lái)看,這張圖和我們之前的兩張圖有相似的地方。最終的方案,我們方案融合了前兩個(gè)的優(yōu)點(diǎn)。我們這一層的User code可以放到C語(yǔ)言下進(jìn)行,Iibc可以有一些攔截。這個(gè)地方是基于IPC的,所以你在當前進(jìn)程要做的破壞或者說(shuō)做的事情,是無(wú)法影響到另一個(gè)進(jìn)程的。最后是Linux container,我們有一層內核過(guò)濾機制來(lái)保證。
我們今天的分享還是比較聚焦的,就是講沙箱和安全機制。我們看了一些業(yè)內主要的安全產(chǎn)品實(shí)現,以及它使用的安全機制。最后針對一個(gè)具體的案例-飛天安全沙箱,我們了解了該如何實(shí)現融合多種安全機制來(lái)實(shí)現與著(zhù)名安全產(chǎn)品相同等級防護能力的安全沙箱。