2022容器镜像安全洞察及解决方案报告
洞悉10大容器镜像安全风险态势
提出28项容器镜像安全检查解决方案
详述成功的云原生应用企业镜像安全实践案例
2022容器镜像安全洞察及解决方案报告
洞悉10大容器镜像安全风险态势
提出28项容器镜像安全检查解决方案
详述成功的云原生应用企业镜像安全实践案例
1
目 录
摘 要
第一部分 10 大容器镜像安全风险态势洞察
洞察 1:针对云原生的攻击复杂度越来越高
洞察 2:攻击目的主要是劫持资源进行挖矿和 DoS 攻击
洞察 3:76%的镜像最终以 root 身份运行
洞察 4:公共镜像仓库越来越受到信任
洞察 5:RHEL 是迄今为止最受欢迎的基础镜像
洞察 6:约 50%容器镜像在一周或更短的时间内被替换
洞察 7:大多数容器能够更改主机系统上的重要文件
洞察 8:52%的镜像是在运行时被扫描
洞察 9:在生产环境中,运行的 85%的镜像至少包含一个可修补漏洞
洞察 10:在关注告警中,Kubernetes.node.ready 最常用
第二部分 全生命周期容器镜像安全解决方案
1.镜像安全解决方案的 5 大核心能力
2.镜像安全解决方案的 28 项检查点
第三部分 13 万容器规模企业镜像安全实践案例
1.案例概要——知名互联网公司部署容器超 130,000 个
2.现实挑战——单月拉取镜像 18,000 次安全问题突出
3.解决方案——构建、分发、运行全生命周期安全管理
4.重要价值——镜像得到有效保护安全效率提升 10 倍
2
摘要
随着组织将更多的容器工作负载转移到生产中,需要将安全性和合规性集
成到 DevOps 工作流程中。容器镜像构成了云原生环境中的标准应用交付格
式,容器镜像在容器安全中起着至关重要的作用。在长期跟踪容器安全的
研究之后,输出容器镜像安全风险 10 大洞察趋势及解决方案报告。第一部分 10 大容器镜像安全风险态势洞察
洞察 1:针对云原生的攻击复杂度越来越高,有的攻击者使用具有明确镜像
名称的专用恶意镜像,有的攻击者使用合法的镜像名称,攻击者还会利用
受信的基础镜像,如图 1 所示,各种针对镜像攻击的复杂度逐渐提升。
图 1:对云原生攻击的复杂度分析
3
洞察 2:目前,云原生场景下,攻击者的主要动机是劫持资源进行挖矿和
DoS 攻击,具体攻击方式,如图 1 所示。
图 1:拒绝服务攻击方案
以挖矿场景为例:在这类攻击中,攻击者主要使用二进制文件 xmrig,这些
镜像明确地声明了其设计目的就是为了挖矿。另一方面,如果某人拉取并
运行的镜像中隐藏了加密挖矿进程时,该组件很可能会成为有害的应用程
序(PUA)。由于这种攻击行为会导致性能下降,MITRE ATT&CK 框架将其定
义为资源劫持。
以 DoS 攻 击 场 景 为 例 : Slowloris 攻 击 是 一 种 使 用 专 用 软 件 ( 如
slowhttptest)、针对 HTTP 服务器发起的拒绝服务(DoS)攻击。在攻击
过程中,攻击机器发送不完整的 HTTP 请求,导致受害主机在等待接收剩余
请求信息的同时打开多个链接。结果,主机服务器达到最大并发打开链接
极限,无法打开新链接为合法的 HTTP 请求提供服务。
4
洞察 3:76%的镜像最终以 root 身份运行,如图 3 所示。
图 3:以 root 身份运行的容器
洞察 4:公共镜像仓库越来越受到信任,从 2020 年的 47%增加到 2021 年
的 61%,如图 4 所示。
图 4:镜像仓库拉取(公有仓库 vs 私有仓库)
5
洞察 5:RHEL 是迄今为止最受欢迎的基础镜像,占使用基础镜像的 36%,
只有 25%的人使用 Alpine,如图 5 所示。通过使用像 Alpine 这样的精简
基础镜像,可以减少容器的攻击面。
图 5:基本镜像操作系统
洞察 6:镜像生命周期数据反映了代码发布之间的时间变化(如图 12 所示),
大约一半的容器镜像在一周或更短的时间内被替换。
图 6:容器镜像生命周期
6
洞察 7:在容器工作负载中,在 62%容器中检测到 shell,38%检测到使用
敏感挂载点启动的容器,如图 7 所示,这意味着该容器能够更改主机系统
上的重要文件。
图 7:容器运行时安全警报
洞察 8:52%的镜像是在运行时扫描的,42%是在 CI/CD 管道中进行最初扫
描的,如图 8 所示。青藤建议在镜像生产、分发、运行阶段都需要不断重
新扫描所有容器,以发现任何新披露的漏洞。
图 8:扫描镜像的位置
7
洞察 9:在生产环境中,运行的 85%的镜像至少包含一个可修补漏洞。此外,
75%的镜像包含“高”或“严重”的可修补漏洞,如图 9 所示。
图 9:运行时可修补漏洞
洞察 10:在关注告警中,Kubernetes.node.ready 仍然是最常用的,其次
是 CPU 使用率和正常运行时间指标,如图 10 所示。
图 10:Top10 警报
8
第二部分 全生命周期容器镜像安全解决方案
镜像安全是保护容器安全的基础,镜像扫描是解决镜像安全问题的基础手
段。针对镜像风险问题,有效提升镜像扫描能力是关键。据研究表明,虽
然很多机构已经意识到镜像扫描的重要性,但是通过对 7 天内扫描的镜像
的通过率和失败率进行抽样调查,发现其中 50%的镜像未通过。镜像风险
问题不容小觑,镜像扫描不仅要做,而且要做好,这成为摆在容器应用企
业面前的一个难题。
1、镜像安全解决方案的 5 大核心能力
要执行镜像扫描,一方面可以借助镜像仓库自带的漏洞扫描工具,比如
Docker Hub 和 Quay 等内置的扫描器可以实现对镜像的扫描。但是这还远
远不够,对于更深层次的镜像风险,做好深度的镜像检查仍然至关重要。
成熟、有效的镜像安全解决方案需要对镜像多个阶段进行持续监控扫描,
包括镜像构建过程中扫描(可 CI 集成 jenkins、azure 等)、镜像仓库中
镜像扫描、运行时镜像扫描,支持单镜像扫描、批量镜像选中扫描、全部
镜像立即扫描等,具体体现在下述几大能力上。
应用组件漏洞
鉴于漏洞的持续增长,需要持续监测新产生的漏洞。镜像安全解决方案需
要扫描镜像中应用组件的漏洞,对二进制包进行逐层深度扫描,快速分析
漏洞所影响镜像的分布范围,并以可视化方式展示漏洞详细信息,包含了
漏洞类型、严重程度、漏洞描述、标签、检查脚本、修复建议等,可以更
好地帮助用户完成漏洞评估,帮助用户查找和定位问题,为用户漏洞修复
提供指导。
木马病毒和 Webshell
9
镜像安全解决方案需要能够发现镜像中的恶意文件,比如二进制木马、病
毒、Webshell 等,并提供相应恶意文件的路径、类型以及危险识别等信息。
敏感信息
镜像扫描时可以根据配置的敏感信息规则发现镜像中存在的敏感信息、操
作,如环境变量中的用户密码、镜像中的数据文件等,在进行告警的同时
也可以把敏感信息作为阻断规则,阻断存在敏感信息的镜像。
历史行为/安全溯源
镜像扫描的历史记录对后期镜像的历史行为追踪和重新检测大有益处,可
查看攻击告警名称类型、攻击源信息等详细内容。通过溯源报告,可方便
实现回溯攻击过程,进而找到不明来源的或者存在问题的镜像,溯源分析
攻击事件,分析攻击者的攻击入口和攻击路径,为更有效的制定安全防御
策略提供参考。
可信镜像识别
通过设置并识别受信任的镜像,在进行镜像扫描时,根据受信镜像规则判
断镜像是否可信,从而也可以检查出是否存在不受信任的镜像。
2、镜像安全解决方案的 28 项检查点
容器镜像需要大量分发和部署,因此,需要确保容器镜像在构建、分发和
运行全生命周期内的安全。镜像扫描是检查操作系统和安装包中是否存在
已知漏洞的一项基本措施。除此之外,还有很多措施可以加强容器镜像的
安全。如下表所示,基于镜像安全 4 个阶段、11 个要求、28 项检查点,
全面检测容器生命周期各个阶段的镜像风险,确保容器镜像的安全。
10
第三部分 13 万容器规模企业镜像安全实践案例
1、案例概要—知名互联网公司部署容器超 130,000 个
某企业是一家知名的互联网公司,专注于智能终端产品的研发,拥有近
3,000 名员工,其旗下的主打应用程序月活量超过 1 亿,致力于为全国用
户提供多样化的科技服务。
11
在互联网圈,产品迭代次数极其频繁,业务更新速度快,为了确保业务稳
定性,该企业另辟蹊径,部署了超过 130,000 多个容器,以应对快速增长
的业务量,逐步走向云原生化。
2、现实挑战—单月拉取镜像 18,000 次 安全问题突出
云原生环境下,互联网的基础设施保护依然重要,其安全保障若不到位,
会使用户数据面临重大风险。容器是在云上提供弹性应用程序的新一代基
础设施,基于镜像而运行,镜像如果受到威胁,容器就存在被攻陷的可能。
在使用容器的过程中,该企业公开可用的容器镜像数量呈现指数级增长,
单月从存储库中拉取的镜像的最高峰值更是达到 18,000 次,镜像安全问题
引发重视。
面对当下最棘手的问题,青藤基于实战经验,为该互联网企业首先进行了
诊断,提出了“想要保护好镜像,不仅仅是要保护好镜像本身的安全,更
要确保镜像在运行过程中不会被篡改,并且确保镜像仓库的安全”,发现
该企业的容器镜像存在着三方面的问题:
有些镜像是过期的,这增加了风险暴露面,很容易被攻击者利用。
有些镜像构建不合规,这些镜像并非恶意镜像,而是错误的配置导致的。
有些恶意镜像隐藏着诸多后门,是危险系数最高的镜像。
3、解决方案—构建、分发、运行全生命周期安全管理
12
该互联网企业通过青藤蜂巢·云原生安全平台,在镜像构建时就对镜像进
行扫描,一旦检测到漏洞、错误配置、威胁等相关问题,便会通过蜂巢控
制台向企业的操作管理员进行提示,如图 11 所示,进行漏洞风险闭环管理。
图 11:漏洞风险闭环管理
我们不仅要更早地发现和修复容器漏洞,更要监测生产环境中的应用程序,
确保这些程序在部署后也能保持安全。在运行时阶段,青藤蜂巢还会自动
检测正在运行的容器,对容器的任何操作执行最低权限的要求,确保镜像
的不变性,杜绝未经授权的镜像部署、恶意代码注入、篡改、非法数据泄
露以及各类攻击等安全风险,做到全生命周期镜像扫描,如图 12 所示。
13
图 12:全生命周期镜像扫描
透过该互联网企业的云原生安全实践经验来看,当涉及到镜像安全保护时,
我们要注意这几个细节的关键点:
基础镜像构建阶段即启动镜像扫描,使用数字签名来验证镜像的真实性。
优先选择从最小的基础镜像进行构建。
尽早、持续性地检查镜像是否存在漏洞问题,创建受信任的基础镜像。
已经通过所有安全检查的基础镜像,在创建新镜像时也需要再次扫描。
全生命周期多个节点进行扫描:CI/CD、镜像仓库及集群运行时容器等。
4、重要价值—镜像得到有效保护安全效率提升 10 倍
通过青藤蜂巢·云原生安全平该企业容器镜像漏洞修复效率显著提升,相
较于传统扫描工具的流程,过去需要用将近 1 小时的漏洞扫描已经缩减到 6
分钟,效率提升 10 倍。
在经历了容器化部署和应用青藤蜂巢·云原生安全平台之后,该企业已经朝着云原生安全
的方向迈出了重要一步:凭借贯穿整个应用开发生命周期的安全性,该互联网企业的容器基
础设施安全保护得到有效保障,实现了降本增效。