专家深入剖析Docker容器常见攻击手法与防护对策
2017-04-16 14:22:33 | 来源:ithome | 投稿:小柯 | 编辑:dations

原标题:专家深入剖析Docker容器常见攻击手法与防护对策

Docker部署流程就拥有许多潜在弱点,让不法人士有机可趁发动攻击。例如,映像档储存库上可能有恶意映像档,如果不慎让这些映像档发布到容器主机上执行,攻击者就可以对容器主机或储存库伺服器发动攻击。或是容器间沟通也很容易遭到窃听、拦截,甚至骇客可以直接攻击存在漏洞的容器,藉此取得完整系统权限。

图片来源:

趋势科技

在全球IT界引起使用热潮的Docker,不再是门叫好不叫座的新兴技术,当前在正式环境导入容器技术,在业界已逐渐形成风气。因此容器相关资安议题,也将成为众人的关注焦点。趋势科技研究开发部资深技术经理李劲颐表示,利用容器技术只能将应用程式打包,还需要透过其他服务,才能完成集中、派送容器的任务,「提及容器安全,我们得建立更广的认识。」

在常见Docker部署流程中,开发者从储存库下载容器映像档供开之用后,更新程式再上传到储存库,接着容器映像档会被发布到容器主机上执行。

但李劲颐表示,光是这常见的使用流程中,就拥有许多潜在弱点,让不法人士有机可趁。例如,公开的映像档储存库上可能有恶意映像档,如果不慎让这些映像档发布到容器主机上执行,攻击者就可以对容器主机或储存库伺服器发动攻击,或是容器间沟通也很容易遭到窃听、拦截,甚至骇客可以直接攻击存在漏洞的容器,藉此取得完整系统权限。

借用Linux Kernel技术建立隔离环境

虽然Docker开启轻量虚拟化技术的热潮,不过在容器技术的实作上,李劲颐表示,Docker借用许多Linux Kernel的技术,确保容器的隔离性,例如命名空间(Namespace)机制,确保容器仅能存取、读取部分被核准的资源。但在命名空间机制尚未涵盖的漏网之处,骇客就可藉此为跳板破坏系统。再者,Linux Kernel本身亦存在漏洞,让攻击者可以突破命名空间的隔离机制,进一步取得更高的系统权限。

除了利用命名空间机制,达到基本的隔离效果外,Docker也透过cgroup,对资源进行管理。李劲颐解释,cgroup除了可以对CPU、记忆体资源进行控制,「其中一个特别的功能是建立装置白名单(Device Whitelist)」,可以限制容器可存取的装置类型。

不只透过命名空间、cgroup,实现Docker容器的资源隔离性,Docker也引入其他Linux Kernel机制,限制容器执行程式的权限,加强容器环境的安全。

李劲颐举例,开发者可以用安全机制Linux Kernel Capabilities,针对相异容器权限,控制其允许执行的程序。他解释,使用者透过Root,就拥有完整存取权限,而Linux Kernel Capabilities则把权限细分成几十个类别,根据需求分配给不同的容器,「有效减少容器可以执行程式的权力。」他表示,Docker也预设移除许多重大执行权限,例如修改、插入Kernel模组,「因为这些权限都能直接影响Docker主机的安全。」

另外还有Linux内建的安全模组AppArmor,此机制也被Ubuntu Linux大量使用。他解释,利用AppArmor,开发者可以限制每个容器、程序的执行权限,像是存取网路、挂载特定文件系统等。

再者是安全运算模式(Secure computing mode,Seccomp),用于限制容器进行某些系统呼叫。李劲颐表示,Docker目前禁止容器执行超过40种系统呼叫,像是尚未支援命名空间隔离的资源外,也可以过滤某些潜在安全疑虑的系统呼叫。

可用内容认证机制确保映像档安全

Docker之所能达到轻量、快速部署的特性,其中映像档是个关键,平时它仅储存在映像档储存库,直到开发者有部署需求,再发布到容器主机执行即可。而李劲颐表示,Docker为了确保映像档来自可信来源,推出了内容认证机制(Content Trust),透过更新框架(The Update Framework,TUF)这个公开金钥基础架构(PKI),验证、签署Docker映像档,不需要额外申请特殊凭证。

「TUF是所有认证机制的根源」,李劲颐表示,在每个相异的帐号都有一只Root金钥,用于签署Root中介档案文件。而Root金钥又可往下细分,其中包括了时间戳记金钥(Timestamp Key)、目标金钥(Target Key)、快照金钥(Snapshot Key)以及授权金钥 (Delegation Key)。

每个金钥也拥有不一样用途,例如时间戳记金钥,除了用于签署时间戳记中介档案,确保档案都是最新版本外,它也用于确保快取文件的一致性。再者是目标金钥,其目的是用于签署目标中介档案,此文件的重要性在于确保容器储存库内档案的一致性。第三个金钥则是签署快取中介档案的快取金钥,而快取中介文件纪录容器储存库内所有中介档案的大小、杂凑值等资讯。

在2015年时,Docker推出了Notary专案,其运作的Notary服务是由Notary伺服器及Notary签署工具所组成。使用者可以透过Notary伺服器,对已经过签署的中介档案,进行更新、储存,而Notary签署工具的用途则是储存私密金钥,并且协助Notary伺服器签署中介档案。

而李劲颐表示,Docker内容认证机制的运作原理,是透过Notary伺服器,管理TUF中介资料以及相关金钥。除了Notary客户端,开发者也可以利用Docker客户端与Notary伺服器沟通,「但是更进阶的金钥管理,必须透过Notary客户端操作。」

但是危险的不仅是容器映像档,提供映像档储存的基础架构也是一大隐忧,根据趋势科技的研究就发现,去年光是美国就有超过1,000个公开储存库,紧接着在中国也发现超过500个公开储存库。李劲颐表示,公开储存库的危险在于,骇客可以上传遭感染的映像档,「一旦它被部署到正式环境,攻击者就可以透过这个容器,攻击容器网路或是容器主机。」为了加强容器储存库的安全性,他建议开发者必须开启TLS认证。

也能靠漏洞扫描工具加强容器安全

同时李劲颐建议,开发者也要搭配容器漏洞扫描工具,确保映像档内容安全。像是Docker官方推出的漏洞扫描工具Docker Security Scanning,让开发者可以在私人容器储存库,对容器映像档进行扫描,确认它们是否暴露在已知风险,或是存在漏洞。开发者启用Docker内容认证机制后,当映像档上传至储存库后,系统自动会启动Docker Security Scanning,进行漏洞扫描。

而Docker Security Scanning完成扫描后,除了可以看到哪些系统元件存在风险,必须进行更新,同时也会列出每一层Image Layer存在的可能风险,「但这样呈现方式的缺点在于,开发者必须要自行彙整资讯,判读映像档中存在哪些已知漏洞。」

李劲颐认为,易于使用是Docker Security Scanning的优点,不仅扫描结果準确,它也能辨认应用程式究竟是透过手动安装还是自动安装。不过他表示, Docker与作业系统厂商对系统漏洞的看法并不一致,「有时它虽然扫出漏洞,但在作业系统厂商的观点中,那并不是漏洞。」

另外,他也推荐CoreOS释出的开源容器扫描工具Clair,用于分析应用程式容器中的漏洞。李劲颐表示,Clair拥有许多漏洞资源来源,包含Debian Security Bug Tracker、Ubuntu CVE Tracker、红帽资安档案、Oracle Linux资安档案。当这些来源更新漏洞资料,Clair除了会发布通知,也会透过API,比对映像档过去及当前状态的差异,确认容器是否受到新漏洞影响。

常见容器攻击手法

另外李劲颐表示,开发者也常疏忽对容器引擎进行权限控管,使得容器成为公开容器节点(Open Container Node),导致外部人士可以任意存取、操作,他举例,去年趋势科技的研究员光是在美国,就发现超过300个门户大开的公开容器节点,「其中还有某家知名美国企业在AWS上的容器引擎也对外开放,没有进行权限控管。」

他表示,目前公开容器节点总共有两种攻击方式。第一种攻击手法中,首先骇客得要取得开放Docker主机的控制权,建立一个特权容器。进一步,利用这个容器,攻击容器主机或是主机中的容器。

第二种攻击手段则是瞄準存在资安漏洞的容器。李劲颐表示,即使该容器并未开放网路存取权限,骇客仍可以透过容器网路与管理介面连线,藉此取得容器主机的权限。

因此李劲颐建议,开发者可以利用外部工具,确认组态设定的正确性。例如CIS Docker Benchmark就能指引使用者,进行安全的组态设定。此外企业也能利用开源专案Docker Bench Security,替部署在正式环境的Docker容器进行组态设定检查。

?

?3种常见Docker容器攻击手法?

?第一种??攻击手法中,首先骇客得要取得公开Docker主机的控制权,建立一个特权容器。进一步,利用这个容器,攻击容器主机或是主机中的容器。(图片来源/趋势科技)

?

?第二种??攻击手段是瞄準存在资安漏洞的容器,即使该容器并未开放网路存取权限,骇客仍可以透过容器网路与管理介面连线,藉此取得容器主机的权限。(图片来源/趋势科技)

?

?第三种??攻击手段则是利用映像档作为媒介,骇客可以上传遭感染的映像档,在它被部署于正式环境后,攻击者就可以透过这个容器,攻击容器网路或是容器主机。(图片来源/趋势科技)

?

容器网路得要设定加密

再者是容器网路传输资讯的安全,李劲颐表示,目前Docker总共提供3种不同的网路架构。首先是Docker预设的桥接网路架构(Bridge Network),系统会自动建立一个Docker0的桥接器,并将所有容器都会加入此容器网路。

在此架构中,容器主机扮演Routing及NAT伺服器的角色,无论是容器连线至外部网路,或是对外提供服务,都必须经过容器主机。因此李劲颐指出,桥接网路架构存在的危险在于,在此容器网路中,不只所有都可和容器主机连线,容器间预设的连线也没有使用防火墙保护。

再者,第二种网路架构则为MacVLAN,它是一个轻量级的网路虚拟化技术,相比过去Linux常用桥接模式达到网路隔离的作法,MacVLAN则与Linux乙太网路介面连接,加强与实体网路的隔离效果,但李劲颐表示,在此种网路模型中,位于同一虚拟网路下的容器,彼此间连线也没有进行权限管控。

最后则是Overlay Network,透过VXLAN技术,结合不同的容器主机,形成一个巨大虚拟网路。李劲颐点出,此架构最大的问题在于VXLAN的网路流量并没有加密,让传输内容容易遭窃取、窜改。此外,就如前面的桥接网路、MacVLAN,内部容器间连线亦未受控制。李劲颐归纳,目前容器网路普遍存在的共通问题,除了没有限制内部容器彼此间的传输行为,亦没有控制容器对容器主机的连线。不过李劲颐表示,其中的Overlay Network架构,虽然系统预设VXLAN并不加密,但 Docker使用者在设定IPsec Tunnl参数时,可以选择加密,藉此强化容器网路的安全。

Docker提供了一种网路架构Overlay Network,透过VXLAN技术,结合不同的容器主机,形成一个巨大虚拟网路。此架构最大的问题在于VXLAN的网路流量并没有加密。虽然系统预设VXLAN并不加密,但 Docker使用者在设定IPsec Tunnel参数时,可以选择加密,藉此强化容器网路的安全。(图片来源/趋势科技)

?

?HITCON创办人3招安全术加强容器安全?

HITCON创办人徐千洋表示,使用者可透过Docker中内建的3个原生机制,加强使用容器的安全性。第一个安全术是善用命名空间(Username Space),让容器不再使用Root权限执行。过去推出的Docker 1.9.0版本中,Docker就将此机制纳入其中,「即使在容器用Root权限执行服务,也并非Host主机握有的Root权限。」

当容器在运作程式时,位在使用者命名空间的执行环境,系统会透过Host主机取得其执行身份。即使在容器中,某使用ID利用Root权限执行程式也不会有影响,「因为Username space中,系统会以该使用者真正握有Root权限」,但是在容器底下有Root权限的帐号,仅是Host主机底下的一般权限帐号,「从Host主机的角度来看,所有容器下执行的程序都只是一般权限执行而已。」

第二是善用安全机制Capabilities,划分特权帐号所能能执行的数十个程序,一一给予控制。徐千洋表示,虽然此机制早在Linux中就能使用,但是碍于使用者必须要熟悉Unix底层操作,并且具备Linux Kernel的相关知识,「因此一直无法普及。」

利用Capabilities机制,使用者可以将Root权限所能执行的功能,向下切割成数十个,让无Root权限的使用者也能执行某些程序。举例,在Unix的设计中,使用者如果想要启用数字小于1024的port,必须取得Root权限。但是利用Capabilities,不需要透过Root权限,就可以让某些服务开启低于1024的port。

最后一招则是Linux内建的安全模组AppArmor,掌管某程式在执行的当下,对于其他档案的操作。例如,如果某档案被限定只能读取,即使使用者取得可以任意读写的Root权限,也会被AppArmor所阻挡。

徐千洋也归纳,使用者可以利用3个基本法则,加强网站服务的安全性。第一原则就是避免使用Root权限运作服务,「即便使用容器也尽量不要使用Root权限。」

再者,不得将网页程式、设定档写入纳入服务执行的权限。他表示,许多开发者会因为使用者群组的设定而轻忽此事。例如网站管理者、网页应用程式拥有者都给予相通的权限,当骇客成功利用远端攻击打入网站时,就可以将许多恶意程式植入其中。但是,要防範此事,「只要让网页应用程式拥有者的权限,跟网站伺服器拥有者的权限不一致即可。」最后则是服务程序具有写入权限的档案不可以被执行。

HITCON创办人徐千洋表示,可善用命名空间(Username Space),让容器不再使用Root权限执行。过去推出的Docker 1.9.0版本中,Docker就将此机制纳入其中。

iThome Security

tags:容器   剖析   对策   手法   防护

上一篇  下一篇

相关:

微软买下Kubernetes容器编排管理工具开发商Deis

图片来源: Deis 随着容器成为云端时代的主流技术,微软于周一(4/10)宣布已决定买下专门开发Kubernetes容器管理技术的Deis。Kubernetes为Google所设计的开放源码系统,它能自动化部署、扩充及管理容器化程式,Googl

微软企业级资料防护服务AIP,开放企业自备金钥加密云端文件了

图片来源: 微软 微软企业资料防护服务Azure Information Protection(AIP)近期新增三项新功能,分别为自带金钥(BYOK)、也可追蹤企业员工上传到外部SaaS服务的文件,另外,可以在Gmail、Hotmail等免费电子信箱服务

选购安全防护鞋的方法有哪些?

选购安全防护鞋的方法有哪些?
在生产车间,一般都需要用到安全防护鞋,以此来保证工人在生产加工时候重的东西砸到脚上的危害,保证了工人的生命安全。那么这时候采购们是如何选购安全防护鞋的?选购安全防护鞋的方法

Container双周报第31期:Google自家容器作业系统正式推出

重点新闻(03月25日-04月07日)·Google自家容器作业系统正式于GCP上线去年9月,Google利用自家开源Chromium OS作为基础,推出了一套为执行容器应用程式所生的作业系统Container-VM Image。Google表示,当今有许多为

剖析KM 实体关店潮中的另类赢家

剖析KM 实体关店潮中的另类赢家
当大街小巷都在谈论市场不景气、实体经济不好做的时候,有一家企业却在2016年里新增了300家门店,销售规模达20个亿。它是KM,它用业绩证明实体经济仍旧能做好,那么它究竟运用了什么经

站长推荐: