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