安全风险

和挑战

脆弱性

和安全风险分析作为容器技术的一种具体实现,Docker 近年来受到越来越多的关注,在某种程度上,Docker 已经成为了容 器技术的代表。Docker 在设计上,采用了常见的 Client/Server(C/S)架构,在 Docker 主机运行 Docker 服务程 序(Docker Daemon),Docker Client 根据需求向 Docker 服务程序发出相关的请求,其架构如下图所示。本节 将以 Docker 为例,介绍容器的脆弱性和安全风险。

Client Docker Host Registr
y
dockerbuild Docker Daemon redis nginx
dockerpull ubuntu tomcat dockerrun Containers Images
Container redis
Container nginx
Container ubuntu
Container

软件风险

作为一款软件,Docker 在软件设计及代码实现上,会有一些安全风险,本小节分别从 Docker 的软件设计和 代码漏洞两个层面分析其存在的安全风险。
3.1.1.1 软件设计
Docker 的设计虽然实现了良好的操作系统
级隔离,但同时也存在很多安全隐患,比如其默认的组网模式以 及与主机共享操作系统内核、共享主机资源、采用 Linux Capabilities 机制、隔离的不充分等,接下来分别对以上 几种安全隐患可能导致的攻击作以说明。(1)局域网
攻击
从网络实现来看,Docker 支持多种组网模式,在默认的桥接模式组网下,即同一主机上创建的容器都桥接 挂在网桥 docker0 上,这样同一主机上的容器之间可以构成局域网,因此针对局域网的 ARP欺骗、嗅探、广播 风暴等攻击方式将会对这些容器造成安全威胁。所以在一个主机上部署多个容器需要进行合理的网络配置,设置 访问控制规则,实现网络之间的隔离和边界。
(2)拒绝服务攻击
容器实例共享主机的资源,也就是说底层的 CPU、内存和磁盘等资源由主机操作系统进行统一的调度和分配。 如果不对每个容器的可用资源进行有效的限制和管理,就会造成容器之间资源使用不均衡,严重时可能导致主机 和集群资源耗尽,造成拒绝服务。

(3)有漏洞的系统调用
Docker 与虚拟机的主要区别是,Docker 与主机共用一个操作系统内核,如果主机内核存在横向越权或者提 权漏洞,尽管容器是以非特权模式运行的,但容器中的攻击者还是可以利用内核漏洞逃逸到主机,进行恶意行为 操作。
(4)特权模式共享 root 权限
既然容器与宿主机共用一个操作系统内核,当以特权模式运行容器时,容器内的 root 权限,进而可以在容器中进行几乎无限制的操作。
(5)未隔离的文件系统
虽然 Docker 已经对文件系统进行隔离,但是root 用户也就拥有了主机 有一些重要的系统文件暂时没有被隔离,如 /proc/bus sys,/proc/sys,等。

针对以上可能造成的攻击,Docker 已有了对应防护方案,只要根据防护方案做好相应配置即可以避免以上 问题,具体可参考官网文档 [39],此处由于篇幅限制,不再赘述。
3.1.1.2 软件漏洞
根据国家信息安全漏洞库 [40] 的统计,截至 2018 年 7 月 31 日,Docker 相关的漏洞共 38 个,其中包括 Cisco、boot2docker、Jenkins 等厂商产品或开源项目。
图 3.2 显示了所有漏洞的发布数量随时间的分布情况,从图中可以看出,每年都会有一定数量的 Docker 漏 洞公布出来,说明软件在漏洞上并没有减少的趋势,还是存在一定的安全风险。

8ñ, 21% 8个, 21%
2014
2015
2016 5ñ, 13% 6个, 16%
2017 2018
11个, 29%
在所有标注了危害等级的 33 个安全漏洞中,中危及以上的漏洞占比达到 90% 以上,高危和超危漏洞占 36%。CVSS 评分 10 分的超危漏洞就包括 4 个,其中 CVE-2014-9357 出现在 Docker 1.3.2 版本中,远程攻击者 可借助 LZMA(.xz)归档的 Dockerfile 中特制的‘image’或‘build’,利用该漏洞以 root 权限执行任意代码; CVE-2016-9223 是 Cisco CloudCenter Orchestrator 中的 Docker Engine 配置安全漏洞,该漏洞源于程序没有正确 配置文件,远程攻击者可利用该漏洞提升权限在受影响的系统中部署 Docker 容器。图 3.3 显示了所有漏洞的风 险程度汇总。
1 数据统计截至 2018-7-31。

图 3.4 对所有漏洞可能造成的安全风险进行了统计分析,从图中可以看出,Docker 漏洞隐藏的风险主要包括 权限和访问控制、后置链接、资源管理错误、输入验证等。比如 Docker Engine 1.12.2 版本中存在的 CVE-2016- 8867 漏洞就是权限和访问控制威胁例子,该漏洞源于启用的环境条件配置了错误的条件策略。攻击者可借助恶 意的镜像利用该漏洞绕过用户许可,访问文件系统容器或挂载磁盘中的文件。

信息泄露 输入验证 资源管理错误 跨站请求伪造 竞争条件 权限许可/访问控制 路径遍历 后置链接 代码注入

API 接口安全

按照 Docker 的实现架构,Docker 服务默认监听在 Unix Socket 上,比如 unix:///var/run/docker.sock,为了 实现集群管理,Docker 官方还提供了一个远程管理接口的 REST API,允许通过 TCP 远程访问 Docker 服务。
1 数据统计截至 2018-7-31。 2 数据统计截至 2018-7-31。

例如在使用 Docker Swarm 时,Docker 节点上会开放一个 TCP 端口 2375,绑定在 0.0.0.0 上。Docker 服 务作为守护进程运行在后台,这个守护进程默认会采用非加密端口的形式,将服务监听端口 2375 暴露出来, 也可以通过执行以下启动参数 dockerd -H=0.0.0.0:2375 -H unix:///var/run/docker.sock 让 Docker 监听本地所 有地址的 2375 端口,这样本地守护进程就可以执行接收到的 Docker 命令请求。例如,通过执行 docker –H tcp://$HOST:2375 ps 这条指令,可以查看到 $HOST 主机上所有的 Docker 实例。既然能够执行 docker ps 命令, 那么同样可以执行 docker run 、docker rm 等。
但是开启这种没有任何加密和访问控制的 Docker Remote API 服务是非常危险的。尤其是将默认的 2375 端 口暴露到互联网中,一旦被攻击者发现,攻击者无需认证即可访问到容器数据,从而导致敏感信息泄露;也可以 恶意删除容器上的数据,或可进一步利用容器自身特性,直接访问主机上的敏感信息,获取服务器 root 权限,对 敏感文件进行修改并最终完全控制服务器。
2018 年 5 月 -7 月我们利用绿盟威胁情报中心(NTI)[41] 对全网的 2375 端口进行检索,发现这段时间暴露 在互联网上的 2375 端口地址达 337 个。图 3.5 显示了在全球范围内暴露主机的分布情况,从图中可以看出, 主机暴露数据覆盖多达 29 个国家,这个数据一方面说明了 Docker 的受欢迎程度,另一方面也说明了用户对于 Docker 的使用还不是很规范,需要规范操作来规避风险。

针对前述 337 个服务的 IP 地址,本文针对地理区域进行了统计。从图 3.4 中可以看出,在全球范围内,互 联网上暴露的 Docker 服务主要分布于中国、美国以及德国,其中中国有 197 个 IP 地址以 52% 位居第一,美国 有 65 个 IP 地址以 17% 位居第二,德国有 19 个 IP 以 7%位居第三。
从图 3.6 中可以看出,在中国范围内,互联网上暴露的 Docker 服务主机主要存在浙江、北京以及广东。其 中浙江有 57 个 IP 占比 29%,北京有 43 个 IP 占比 22%,广东有 35 个 IP 占比 18%。

针对前述暴露的 337 个 Docker 服务 IP,我们对其域名服务分布情况进行了统计,其中不乏某些知名公有云 厂商的 IP 地址。
需要说明的是,将 2375 端口暴露在互联网属于错误配置,而非 Docker 的漏洞。关于这个问题,在 Docker 官方使用文档中也有明确的警告:如果将 Docker 服务绑定到一个互联网的 TCP 端口,将可能使得恶意用户获取 主机的 root 权限。
Warning: Changing the default docker daemon binding to a TCP port or Unix docker user group will increase your security risks by allowing non-root users to gain root access on the host. Make sure you control access to docker. If you are binding to a TCP port, anyone with access to that port has full Docker access; so it is not advisable on an open network.

除了对 Docker Daemon 远程访问端口 2375 暴露情况进行分析外,我们在 2018 年 7 月也分析了 Kubernetes 的暴露服务情况,利用 NTI对全网的 6443 端口(Kubernets 的 API Server 默认 SSL 端口)进行扫描分析,发现 这段时间暴露在互联网上的 Kubernetes 服务达 12803 个。图 3.8 显示了在全球范围内的 Kubernetes 服务暴露分 布情况。

与 Docker Daemon 远程访问端口 2375 相似,全网范围内暴露 Kubernetes 服务主要分布在美国、中国以及 德国,其中美国以 4886 个暴露的服务占比 38% 位居第一,中国以 2582 个暴露的服务占比 20% 位居第二,德国 以 1423 个暴露的服务占比 11% 位居第三。这些服务主要部署在亚马逊、阿里云等公有云服务上。

由图 3.10 可见,国内互联网上暴露的 Kubernetes 服务主机主要存在于北京、浙江以及广东等省市。其中北 京以 695 个暴露的服务占比 27% 位居第一,浙江以 635 个暴露的服务占比 25% 位居第二,广东以 274 个暴露的 服务占比 11% 位居第三。
由上可见,目前国内外的容器编排系统发展迅速,基于其部署特性,互联网上多见于公有云、数据中心,编 排系统服务的暴露分布也与容器服务、云服务的发展趋势所匹配。正因为容器和容器编排系统大量部署,相当多 的服务被暴露在互联网上,增加了攻击面,其中又有很大一部分服务缺乏基本的安全配置和加固,导致很容易被 攻击者利用,破坏系统的可用性和完整性,又有可能被利用对第三方发动各类攻击。

参考资料

绿盟 容器安全技术报告

友情链接

GA 311-2021 警鞋 男棉皮鞋

脆弱性和安全风险分析相关推荐

  1. CISP 相关知识点梳理

    第一章 1.1 信息安全保障基础 v信息安全视角 §了解国家视角对信息安全关注点(网络战.关键基础设施保护.法律建设与标准化)相关概念: §了解企业视角对信息安全关注点(业务连续性管理.资产保护.合规 ...

  2. 数据安全评估体系建设

    数据安全评估是指对重要数据.个人信息等数据资产的价值与权益.合规性.威胁.脆弱性.防护等进行分析和判断,以评估数据安全事件发生的概率和可能造成的损失,并采取相应的措施和建议. 数据安全评估的重要性和背 ...

  3. 【复习】系统安全知识点归纳总结

    终于度过可怕的16周了,然后就是为了系统安全背到天昏地暗.在复习背课本期间还对书上的一些易记易背知识点进行了归纳总结. 系统安全重要知识点 第一章 概述 信息安全包括四个层面,即系统安全.数据安全.内 ...

  4. CISP管理部分-3、信息安全管理

    1.1 信息安全管理基础 信息的不同视角: 企业:对用户的信息保护成为新的关注点 用户:用户将安全作为选择服务的重要依据之一 攻击者:不起眼的数据对攻击者可能价值很高,倒逼企业和个人更关注信息安全 信 ...

  5. 年重大物联网安全事件回顾

    执行摘要 随着物联网的不断发展,物联网安全也被越来越多的人所关注.我们于 2016 年发布<物联网安全 白皮书 >,进行物联网安全的科普介绍:并于 2017 年发布<2017 物联网 ...

  6. CCRC信息安全服务资质六大方向申请条件----安全集成,安全运维 风险评估 应急处理 软件安全 灾难备份与恢复

    随着我国信息化和信息安全保障工作的不断深入推进,以应急处理.风险评估.灾难恢复.系统测评.安全运维.安全审计.安全培训和安全咨询等为主要内容的信息安全服务在信息安全保障中的作用日益突出.加强和规范信息 ...

  7. UPnP实现中的常见脆弱性与风险分析

    UPnP 协议栈的脆弱性 与风险分析 由于 UPnP 协议栈包含的协议较多,在实现过程中,容易存在脆弱性.而在 UPnP 工作流程的六个 阶段中,发现.描述.控制三个阶段出现过比较严重的脆弱性问题.这 ...

  8. 面向数据机密性的云计算脆弱性分析框架

    1 介绍 云计算优点 在虚拟化和高速网络技术的推动下,云计算正在成为未来的主要计算范式.云计算的一个显著特点是效用计算模型(即现收现付模型),用户可以根据其使用情况为计算机.存储或任何资源付费,无需预 ...

  9. 安全运营四要素之资产、脆弱性、威胁和事件

    安全运营工作主要围绕资产管理.脆弱性管理.威胁管理.事件管理四个要素展开,其本质是将安全风险控制在可接受范围之内.基于该认知之上,可极大促进对于安全运营类平台的功能理解,如态势感知.XDR等,其功能模 ...

最新文章

  1. P2770 航空路线问题(网络流)
  2. open函数中O_CLOEXEC标志的开关
  3. Primefaces,Hibernate和SpringRoo集成
  4. 几乎是苹果6倍!华为可穿戴设备出货量Q1同比猛增282%
  5. Struts2中4个核心组件_笔记
  6. 简单的实现了Dijkstra,
  7. gis地图php,中国地图矢量gis数据
  8. 融思杯 第三届 部分wp
  9. 上班两年干了些啥?该思考人生
  10. 鸿蒙系统背后的故事,华为“鸿蒙”刷屏背后,这7本书是中国人的终极浪漫
  11. 高德地图 天气java_高德地图API获取天气
  12. 将10件商品的英文名称存储在数组中,输出名称的第3个字符是‘b‘的所有商品英文名称;再输出名称的长度小于6个字符的商品英文名称。
  13. 解决python同时执行多个程序的方案
  14. Java Web注册表单编写
  15. Arcgis开发系列2 - 修改arcgis infowindow 放大和缩小的模板
  16. windows7台式计算机网线连接,WIN7网线怎么连接电脑 宽带连接常见错误代码解决方案...
  17. 快速微信群内接龙统计避免刷屏
  18. LaTeX入门教程|自定义论文标题
  19. ABAC基于属性的访问控制
  20. 关于远程连接挂载磁盘的理解(.bat文件、批处理)

热门文章

  1. 卡塔尔世界杯出现了半自动越位识别技术、Feelix Palm、动作轨迹捕捉等黑科技,一起来看看吧。
  2. h2o.ai源码解析(1)—项目简介
  3. 桥接PyTorch和TVM
  4. 2019年第十届蓝桥杯JAVAB组-----试题 J: 分考场
  5. 在单点登录中,如果 cookie 被禁用了怎么办
  6. Flutter键盘弹出造成布局异常解决
  7. 一生当修炼这十样品质
  8. JBPM4.4业务流程管理框架详细解读
  9. 【Java基础】· Java基本语法:程序流程控制习题总结
  10. python连接oracle12c