K8S安全风险及防护建议

news2024/11/28 0:44:22

Kubernetes(K8S)是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,方便进行声明式配置和自动化。一个Kubernetes集群通常包含跨多台计算机运行的控制平面和多个工作节点(node),控制平面用于管理集群中的node,node用于运行工作负载。

Kubernetes架构图

自从2014年首次发布以来,Kubernetes受到了越来越多的关注和广泛的应用。目前,它已成为云原生应用程序开发和部署的标准之一,被许多大型企业和组织广泛采用,如谷歌、微软、亚马逊、IBM、阿里巴巴、腾讯等。根据CNCF的调查显示,截至2021年11月,全球有超过90%的企业和组织正在使用Kubernetes进行容器编排和管理。

一、针对Kubernetes的攻击愈演愈烈

近年来,针对K8S的攻击事件逐渐增加,成为了安全领域的一个重要话题。根据一些安全厂商和研究机构的报告,K8S的攻击事件占比情况如下:

Trend Micro发布的《2021年1-6月全球云安全报告》显示,2021年上半年,云容器和Kubernetes攻击的比例达到了43%。攻击者的目的是获取敏感信息、窃取凭据、传播恶意软件等。

Aqua Security发布的《2020年云原生安全报告》中指出,针对Kubernetes的攻击事件在2020年增长了26%。其中,最常见的攻击包括未经身份验证的访问、挖矿、拒绝服务、数据泄露等。

CNCF(Cloud Native Computing Foundation)发布的《2021年技术调查报告》中指出,65%的受访者认为容器和Kubernetes面临的安全风险是他们使用云原生技术时最大的担忧之一。另外,55%的受访者认为Kubernetes容易受到攻击。

综合来看,K8S的攻击案例验证了未来的主流攻击趋势,那就是‍集权设施将会成为未来攻击者的主要攻击对象。集权安全值得企业安全负责人们重点关注。

二、常见的Kubernetes威胁来源

在针对K8S的攻击日益激烈的情况下,攻击来源也表现出了多样化,根据调研目前它正面临着来自供应链、恶意攻击者、内部成员的攻击以及黑客组织等的威胁。

1、供应链风险

供应链包含构成最终产品的任何元素,从组件到用于管理集群的第三方服务或软件,这些风险有很多来源,而且通常很难解决。

在 2019 年,Harbor作为一个Kubernetes基础架构下的开源仓库,其曾遭受到了供应链攻击。攻击者通过Harbor的供应链漏洞,注入恶意Docker镜像,这些镜像被部署在Kubernetes集群中,最终导致Kubernetes集群的安全受到威胁。

2、恶意攻击者

恶意攻击者可以利用Kubernetes架构组件中的漏洞和错误配置,例如控制平面、工作节点或容器化应用程序。

2018年,黑客入侵了Tesla公司的Kubernetes集群,并利用集群中的计算资源进行加密货币挖掘。这次攻击的原因是由于Tesla在使用Kubernetes时未采取适当的安全措施。

3、内部威胁

内部威胁可以是管理员、用户,甚至是云服务提供商。对组织的Kubernetes基础设施具有特殊访问权限的内部人员可能会滥用这些特权。

2019年,加拿大的电商平台Shopify遭受了内部员工的K8S攻击。该员工修改了K8S配置文件,使得攻击者能够在Shopify的K8S集群中创建新的管理用户,并窃取用户数据。

三、Kubernetes攻击面

K8S作为一种开源的容器编排平台,已经成为了云原生应用开发和部署的重要基础设施之一。但同时,K8S也因其高度复杂的架构和众多组件,成为了攻击者攻击的目标之一。那么,攻击者采用何种方式攻击K8S?

以下是微软官方在2021年给出的K8S威胁矩阵图,详细地呈现了攻击者在每个阶段使用的技术,从左到右通过执行每个阶段的攻击方式也呈现了成果扩大的过程。

随着攻击技术的发展,每个攻击阶段的攻击技术也更加丰富。接下来对K8S攻击过程中的一些重要攻击阶段进行详细介绍。

初始访问(Initial Access)

初始访问是指攻击者在进入系统前获得的第一步访问权限。在Kubernetes中,攻击者可以通过多种方式进行初始访问。其中,一种常见的方式是通过针对公网暴露的Kubernetes API Server进行攻击。

另外攻击者还常用容器内漏洞入侵、kubeconfig file泄露、etcd未授权访问、恶意镜像等方式,进行前期的信息收集工作,以获得初始权限。

命令执行(Execution)

在Kubernetes中,命令执行通常是指攻击者通过各种手段在容器或节点上执行任意命令。比如攻击者可通过容器中运行的SSH服务执行命令,如果攻击者通过暴力破解或者其他方法获得了容器的有效凭证,他们就可以通过SSH获得对容器的远程访问。

另外,如果容器自身存在漏洞,那么攻击者也会通过漏洞执行命令。命令执行方式多种多样,常见的执行命令的攻击还有创建后门Pod、利用API Server执行命令、通过Sidecar注入执行命令、通过curl执行容器命令等。

权限维持(Persistence)

在Kubernetes中,攻击者利用权限维持来获取对系统的长期控制。例如,攻击者可以通过向容器镜像中添加恶意代码来创建一个具有相同标签的deployment或ReplicaSet。这样,当新的Pod创建时,它将自动更新为攻击者的容器镜像。攻击者可以在该容器中添加后门或其他恶意代码,以确保他们在以后的访问中能够维持其权限。

针对权限维持的其它利用方式包括挂载主机路径、K8s cronjob、Shadow API Server等,这些攻击方式常常被攻击者使用。

权限提升(Privilege Escalation)

Kubernetes中的权限提升攻击是指攻击者通过各种手段提升其在集群中的权限。一旦攻击者成功地提升了其权限,就可以对整个集群进行更多的攻击,比如访问其他资源、执行恶意代码等。例如,攻击者可以创建一个特权容器,该容器可以访问宿主机上的资源,并在该容器内执行命令,从而使其获得更高的权限。

另外,挂载根目录逃逸、容器内访问Docker.sock逃逸、docker漏洞逃逸、篡改ServiceAccount等方式也被经常使用。

横向移动(Lateral Movement)

横向移动是指攻击者利用已经获得的某个系统或账户的权限,在整个网络中移动并寻找其他系统或账户,以便进一步扩大攻击面和获取更高的权限。在Kubernetes中,攻击者可以利用各种漏洞和配置错误来获取对一个或多个节点的访问权限,然后通过控制这些节点来进行横向移动。

例如,攻击者可以通过利用kubelet的漏洞或未经授权的凭据访问节点,并在这些节点上启动恶意容器或修改已有容器的配置。一旦攻击者获得了节点的访问权限,他们可以扫描网络并寻找其他容器或节点,以便进一步扩大攻击范围。其它的横向攻击方式有通过容器逃逸进行横向、Cluster内网渗透、窃取凭证攻击云服务等。

总的来说,攻击者可以通过利用K8S集群内各组件的漏洞或者未经适当保护的访问权限来进一步深入攻击,这可能会导致敏感数据泄露、服务中断、系统崩溃等严重后果。

四、ITDR保护K8S集群

针对K8S的攻击日益激烈,如何避免K8S不被攻击值得大家思考,保护K8S中的敏感数据意义重大。为了保护您的K8S集群,可采用中安网星的ITDR平台进行全方位的保护。

ITDR(身份威胁检测与响应)平台是中安网星推出的针对身份威胁检测与响应高级威胁分析平台。主要围绕Identity及Infrastructure为核心进行防护,涵盖主流身份基础设施及集权设施,围绕从攻击的事前加固、事中监测,事后阻断出发,产品的设计思路覆盖攻击者活动的全生命周期。

事前,利用ITDR内置引擎对K8S集群中的不合理配置项、K8S相关的历史漏洞进行主动发现,在遭受恶意攻击之前,提前加固K8S集群,不给攻击者以可乘之机。

事中,通过融合图计算、身份欺骗等技术,对K8S进行全方位的监测,及时发现针对K8S的漏洞利用、身份窃取等风险,在遭受攻击的第一时间及时发现攻击者,对攻击行为进行阻断。结合威胁狩猎思想,将身份蜜罐技术应用于ITDR平台中,为反制攻击者提供保证。

事后,对攻击事件进行取证调查,禁用不合理的用户,清理危险的凭据,根据基线事件对K8S进行加固。

All in one:中安网星ITDR平台能力持续演进与突破

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/764032.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

415. 字符串相加

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。 你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。 示例 1: 输入&#xff…

被问懵了,加密后的数据如何进行模糊查询?

我们知道加密后的数据对模糊查询不是很友好,本篇就针对加密数据模糊查询这个问题来展开讲一讲实现的思路,希望对大家有所启发。 为了数据安全我们在开发过程中经常会对重要的数据进行加密存储,常见的有:密码、手机号、电话号码、…

【中危】Apache Accumulo 身份认证过程缺陷

漏洞描述 Apache Accumulo是一个排序分布式的 Key-Value 存储应用。 在Apache Accumulo 2.1.0版本中,AccumuloClient 在构造新的实例时移除了自动身份验证机制,身份验证始终在 shell 中进行。当 shell 闲置时间过长,需要重新进行身份验证时&…

前端调整滚动条的外观样式

前端调整滚动条的外观样式 css主要分三个步骤 1、设置滚动条宽度 ::-webkit-scrollbar { width: 5px; } 效果:分别设置50px和5px宽度 2、设置里面小滑块的样式 ::-webkit-scrollbar-thumb {border-radius: 5px;-webkit-box-shadow: inset 0 0 5px rgba(0,0,0…

编程导航算法通关村第 1关 | 两个链表的第一个公共节点

编程导航算法通关村第 1关 | 白银挑战 剑指 Offer 52. 两个链表的第一个公共节点 集合/map 将headA中的链表,放在一个set集合中, 依次遍历headB, headB中第一个包含在set集合中的节点就是第一个公共子节点 ListNode getIntersectionNode(L…

网络安全专业必考的三个证书,初学者建议收藏!

学习网络安全,有三个必考证书,最后一个人手一本! 一,NISP证书 NISP即国家信息安全水平考试,由中国信息安全测评中心发证,属于网络安全专业的必考证书。 只有考取NISP一级证书才有机会考取二级&#xff0…

【动手学深度学习】--10.卷积神经网络

文章目录 卷积神经网络1.从全连接层到卷积1.1全连接层1.2平移不变性1.3局部性1.4卷积 2.卷积层2.1互相关计算2.2卷积层2.3图像中目标的边缘检测2.4学习卷积核 3.填充和步幅3.1填充3.2步幅 4.多输入多输出通道4.1多输入通道4.2多输出通道4.3 11卷积层 5.池化层5.1池化层5.2填充和…

设计准则必备:学习UI设计规范的五大黄金法则

看到好看的设计,随手保存起来,这是设计师的基本习惯。但是如果只是好看,并不能驱使受众真正去了解产品。如果想要用户动心,还是需要了解一些设计心理学,从用户心理去引导用户行为。今天给大家分享一些常用的设计法则帮…

对话网易伏羲赵增:开源VS自研?哪条路是通向AIGC的捷径?|WAIC2023

点击关注 文 | 郝鑫、黄小艺 从去年底到现在,国内外肉眼可见地涌现出了一批文生图公司,这背后与基础架构开源有很大关系。 2022年8月,Stability.AI在GitHub上公开开源了Stable Diffusion模型的代码和训练数据集;当月底&#xf…

linux系统编程-文件系统

目录 1文件存储 1.1 inode 1.2 dentry 2.文件系统 2.1 stat函数 2.2 lstat函数 2.3特殊权限位、黏住位 2.4 access函数 2.5 chmod函数 2.6 truncate函数 2.7 link函数 2.8 unlink函数、 2.9 隐式回收 2.10 symlink函数 2.11 readlink函数 2.12 rename函数 2.1…

Java 常用的重构技巧指南 v1.0

前段时间,leader 在 review 代码的时候发现了代码中 存在的一部分的问题,导致 代码的复杂度太高了,包括大部分的sql 都是属于慢sql ,还是在建立了索引的情况下 , 代码的流程过于臃肿,而且本人编码的习惯,习…

Mybatis-Plus(一)--Mybatis-Plus介绍与快速入门

阅读这篇文章之前确保你已经学过springboot和mybatis 一.Mybtis-Plus介绍 【1】Mybatis-Puls(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发,提高效率而生。 简单说就是其实很多sql语…

IntelliJ IDEA下载安装教程

目录 友情提醒第一章、IDEA软件下载1.1)官网下载 第二章、IDEA软件安装2.1)以"ideaIU-2018.3.3.exe"为例3.2)启动IDEA软件 友情提醒 点击文章目录可以跳转 第一章、IDEA软件下载 IDEA 全称 IntelliJ IDEA。在智能代码助手、代码…

字节跳动春招研发部分编程题汇总

状压dp(不会) http://t.csdn.cn/W9Pi2 #include <iostream> #include<string.h> #include<math.h> using namespace std; char a[1005]; char c[1005]; int main() {int n;scanf("%d",&n);for(int i1;i<n;i){scanf("%s",a);int l…

Pytorch学习笔记(1)

目录 1. 张量&#xff08;Tensors&#xff09; 2. 自动求导&#xff08;Automatic Differentiation&#xff09; 3. 神经网络的构建和训练 送书活动 PyTorch是一个基于Python的开源机器学习库&#xff0c;广泛应用于深度学习和人工智能领域。它提供了丰富的工具和函数&…

什么是域服务(NETBASE第十一课)

域服务(NETBASE第十一课) web虚拟主机(一台服务器运行多个WEB站点) Web虚拟主机的实现方法&#xff1a; 1&#xff09;同IP不同端口&#xff08;基于端口的虚拟主机&#xff09; 2&#xff09;同端不同IP&#xff08;基于IP的虚拟主机&#xff09; 3&#xff09;同端口同I…

使用typora+PicGo+Gitee简单实现图片上传功能

本文通过配置PicGoGitee来实现typora图片上传功能&#xff0c;系统是window 注意下载的清单有&#xff1a;PicGo&#xff0c;node.js&#xff0c;配置有&#xff1a;PicGo&#xff0c;node.js&#xff0c;gitee&#xff0c;typora 看着复杂实际上并不难&#xff0c;只是繁琐&am…

OLLVM虚假控制流源码分析

文章目录 runOnFunction函数bogus函数目前源码&#xff1a;addBogusFlow函数1createAlteredBasicBlock函数原基本块&#xff1a;copy的基本块&#xff1a; addBogusFlow函数2 runOnFunction函数 if (ObfTimes < 0) {errs()<<"BogusControlFlow application numb…

缓存淘汰策略

LRU 与 LFU 缓存策略及其实现。 应用层缓存 鉴于磁盘和内存读写的差异性&#xff0c;DB 中低频写、高频读的数据适合放入内存中&#xff0c;直接供应用层读写。在项目中读取用户资料时就使用到了 LRU&#xff0c;而非放到 Redis 中。 缓存的 2 个基本实现 Set(key string, v…

RandLA-Net 复现

GPU3090 CUDA12 1、代码 [github地址] git clone --depth1 https://github.com/QingyongHu/RandLA-Net && cd RandLA-Net 2、虚拟环境中配置&#xff1a; 在跑代码的时候出现错误&#xff1a;open3d.so文件中函数报错。查看open3d版本发现不是要求的0.3版本&#xff…