1.5.3 安全配置规范执行和密钥凭证管理不理想
除了镜像安全问题外,安全配置不规范执行、密钥凭证管理不甚理想也成为云原生的一大风险点。
2018年5月~7月,绿盟威胁情报中心(NTI)对全网的Docker管理服务的2375端口进行检索,发现这段时间暴露在互联网上的2375端口地址达337个。图1-10显示了暴露主机的分布情况,主机暴露数据覆盖多达29个国家,这个数据一方面说明了Docker已得到广泛的应用,但另一方面也说明了用户对于Docker的使用并不规范,进行了非常危险的配置。
针对这337个服务的IP地址,对地理区域进行统计可以看出,在全球范围内,互联网上暴露的Docker服务主要分布于中国、美国及德国,其中:中国有197个IP地址,以52%位居第一;美国有65个IP地址,以17%位居第二;德国有26个IP地址,以7%位居第三。
图1-10 在互联网上暴露的Docker服务的地理分布[1]
对于暴露的337个Docker服务的IP地址,NTI统计了其域名服务分布情况,其中不乏某些知名公有云厂商的IP地址(见图1-11)。
图1-11 在互联网上暴露的Docker服务的公有云IP分布
2018年8月,阿里云安全团队公开披露黑客在阿里云上针对Docker的批量攻击与利用。其主要的入侵途径就是扫描到开放了2375端口的Docker容器IP地址,之后通过命令对读取的IP地址进行入侵;在成功入侵主机后,连接下载服务器,将恶意文件(如webshell、挖矿程序、后门程序、任务文件、挖矿配置文件等)下载到本地并执行。
2018年7月,笔者团队也分析了Kubernetes的服务暴露情况,对全网的6443端口(Kubernetes的API Server默认SSL端口)进行扫描分析,发现这段时间暴露在互联网上的Kubernetes服务达12803个。图1-12显示了Kubernetes服务暴露分布情况。其中美国以4886个暴露的服务占比38%,位居第一;中国以2582个暴露的服务占比20%,位居第二;德国以1423个暴露的服务占比11%,位居第三。国内互联网上暴露的Kubernetes服务主机主要位于北京、浙江及广东等省市,这些服务大多部署在亚马逊、阿里云等公有云上。其中几百个甚至没有设置登录密码,一旦被恶意操作,后果将不堪设想。
在生产环境的运营中,CIS容器基线[2]等安全配置规范落实情况并不是很理想,如存在禁用了Seccomp、没有设置SELinux和AppArmor、以root特权模式运行容器等问题。事实上,很多攻击行为(如容器逃逸)能够成功,与这些不安全的配置是有直接关系的。
最后,云原生应用会大量存在应用与中间件、后端服务的交互,为了简便,很多开发者将访问凭证、密钥文件直接存放在代码中,或者将一些线上资源的访问凭证设置为空或弱口令,导致攻击者很容易获得访问敏感数据的权限。2017年11月Uber发布声明,承认2016年曾遭黑客攻击并导致数据大规模泄露[3]。根据这份声明,两名黑客通过第三方云服务对Uber实施了攻击,获取了5700万名用户数据,包括司机的姓名和驾照号码,以及用户的姓名、邮箱和手机号。调查发现,Uber数据泄露的原因是工程师将解锁数据库的安全密钥存储在GitHub的一个可以公开访问的页面。这类由于操作不当引发数据泄露的事件并不是孤案,尤其值得注意的是,当今云环境和DevOps的迅速发展导致安全风险显著地提高了。
图1-12 在互联网上暴露的Kubernetes服务的地理分布[4]
[1] 本 图为彩图,有需要的读者可通过华章网站(www.hzbook. com)下载。
[2] https://www.cisecurity.org/benchmark/docker/。
[3] http://www.xinhuanet.com//2017-11/29/c_1122026695.htm。
[4] 本 图为彩图,有需要的读者可通过华章网站(www.hzbook. com)下载。