6

绿盟科技阮博男:从开源靶场看云原生安全

 2 years ago
source link: https://blog.csdn.net/m0_46700908/article/details/125381184
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
349fe3345d7e43fbff1251df8fee7178.gif

嘉宾 | 阮博男   整理 | 西狩xs

出品 | CSDN云原生

2022年6月7日,在CSDN云原生系列在线峰会第7期“安全技术峰会”上,绿盟科技星云实验室研究员阮博男从开源靶场的角度分享了云原生安全技术发展情况,以及对云原生安全的思考与展望。

0eece8344dc32de0518d93cbf56c307a.png

Metarget项目的发起

在Metarget项目之前,安全社区已经有一些优秀的开源靶场项目,大大降低了漏洞应用程序的部署难度,对安全学习研究者非常友好,比如DVWA、VulApps、VulHub。然而,这些开源项目关注的是使用容器技术去部署漏洞应用程序,而非容器或云原生环境自身的漏洞。

那么,怎样才能够简单、快速地部署云原生基础设施漏洞环境,提高云原生安全研究效率呢?能不能更快速地搭建复杂多层次的漏洞环境,帮助渗透测试人员练习掌握从Web渗透、权限提升、容器逃逸到横向移动甚至访问持久化一系列重要的安全技能呢?

所有工具的发明,都离不开问题的提出。为了解决上述这些痛点问题,Metarget 应运而生。

Metarget是绿盟科技星云实验室于2021年5月对外开源的云原生攻方靶场项目,能够帮助研究员快速搭建云原生环境下的漏洞环境,提高团队的安全研究效率。

比如使用Metarget单行命令来搭建漏洞环境:

metarget cnv install cve-2016-5195

metarget cnv install cve-2019-5736

ff1e66a8c02d48fb41311c56cda972c3.png

metarget cnv install cve-2018-1002105

fa193350d7bb84dbae4e920ac534212e.png
  • 安装内核漏洞

  • 安装Docker漏洞

  • 安装Kubernetes漏洞

可以看出,利用Metarget安装部署一个带有漏洞的云原生环境非常简单,只需要执行一行命令,即可得到想要的环境。

Metarget希望能够去构建多层次的既包含容器内部漏洞的场景,又包含容器下层这些容器以及云原生基础设施自身漏洞的场景。

27884919e4ee43629486b215a87367b3.png

利用Metarget可以部署一个多节点多层次的云原生集群靶机环境,集群中可以部署云原生层面的CNV漏洞,或者在这些容器内部署应用程序层面的APPV漏洞,然后作为一个攻击者的视角进行渗透测试。

攻击者可以从最顶层的APPV渗透、逃逸、横向移动和权限提升,最终从最上层打穿到最底层,实现整个云原生环境的多环节渗透测试模拟链路。通过Metarget的多层次组合架构,能够很好地帮助渗透测试人员提升云原生环境下的安全技能。

e282a7ecfaf940ae7fabd46714fe8a47.png

从Metarget漏洞场景看云原生安全

在攻击驱动防御的研究思路中,主要存在三个对象:攻击、防御和靶场。Metarget在其中主要扮演靶场的角色。借助Metarget这个靶场工具,可以实现以下目的:

  • 攻击技术演进推动防守升级

  • 加速攻击研究、培养对抗技能

  • 加速防御能力验证与迭代

4c9fb52d7cfd2c98f2e71f373cbde210.png

漏洞覆盖场景

截至目前,Metarget共支持自动化构建超过50种不同类型的云原生漏洞场景,覆盖Docker、Kubernetes、Linux Kernel、Kata Containers等多种云原生基础设施组成程序。场景类型主要包括:容器逃逸、权限提升、拒绝服务、中间人攻击、服务暴露、流量劫持、服务端请求伪造和命令执行等。

86923a2b3bd71d40e75fea90e8a32634.png

注:经验证可用于容器逃逸的Linux内核漏洞,其类型被标记为“容器逃逸”。

常见利用场景

在非云原生环境下,漏洞攻击路线通常是入侵主机。但在云原生环境下,有两种不同的利用场景。

  • 入侵业务容器:攻击者通过业务漏洞来获得容器内的控制权,再利用云原生集群的基础设施漏洞进一步入侵

  • 依托镜像:攻击者将恶意代码通过镜像化的软件供应链进行传播,或者将恶意镜像放在支持容器即服务的云环境中直接部署镜像进行攻击

799ded2255ccd9b776597136873c4cbf.png

因此,相比非云原生环境而言,云原生安全问题更为复杂,需要关注整体的多层次的漏洞场景。

云原生安全的两个实例

实例1:云原生集群从逃逸到提权

这是一个后渗透测试阶段的场景(类似于CaaS),攻击者能够在集群中部署容器,并拥有容器root权限。

攻击者的终极目标是从容器内的root权限开始,逐步渗透,直到控制整个K8s集群。

集群中预设了两个漏洞用于渗透: CVE-2020-15257和CVE-2020-8559。

渗透路径如下:

在容器内,攻击者发现该容器共享了宿主机网络命名空间。

  • 攻击者尝试利用CVE-2020-15257漏洞并成功逃逸到工作节点上

  • 攻击者发现该集群存在CVE-2020-8559漏洞

  • 攻击者尝试利用CVE-2020-8559漏洞并成功提升至API Server的权限

Metarget将帮助我们搭建上述整个漏洞环境,只需要5条命令。

45c10efdf72f4028c69f1754ce288620.png

实例2:容器化5G-UPF环境逃逸场景

f2624bcd1b63f08044f54cf1c0b52f4c.png

云原生安全问题的三个观察

推陈出新的容器逃逸技术

在攻方视角下,容器逃逸技术是云原生安全场景下非常重要的安全场景。容器逃逸技术可以归为四大类:

  • 利用云原生应用程序漏洞,如Docker和Kubernetes漏洞等

  • 利用Linux内核漏洞

  • 利用业务容器的危险配置

  • 利用业务容器的危险挂载项

随着云原生技术的快速发展,容器逃逸场景也在不断推陈出新,任何层次上的疏漏都可能导致发生容器逃逸。在云原生环境下,安全研究人员需要持续关注容器逃逸问题。

4b7cb36feee2a1b424b2816db6cae3d4.png

层出不穷的符号链接问题

如下图所示,在Metarget漏洞场景中,许多漏洞都和Linux符号链接机制有关。这些漏洞的根本原因都是开发者未能正确处理涉及符号链接的操作,其中绝大多数漏洞最终都会导致发生容器逃逸。因此,云原生开发者要慎重对待Linux符号链接机制,确保符号链接操作被正确处理。

58d8a0bd035b467ff2c35d9b6d3bd72d.png

屡试不爽的Linux内核漏洞

2022年以来,不断有新的高危Linux内核漏洞曝光。经测试,这些漏洞均可在容器内部触发,导致容器逃逸。由于容器与宿主机共享内核,一旦Linux内核出现新漏洞,容器的隔离性将受到严重威胁。因此,运维人员需要及时修补Linux内核漏洞,避免攻击者利用Linux内核漏洞逃逸。

  • CVE-2022-0185漏洞

05bfa30cf69027111e6adf7d12e7375f.png
  • CVE-2022-0847漏洞(DirtyPipe)

460f5849ac78138923682ac4380686de.png

云原生安全问题的应对之道

要想确保云原生安全,就需要对云原生环境全生命周期进行整体的安全设计,一般从CI/CD安全、运行时安全两个角度来分析。

  • CI/CD安全:在整个开发和交付流程中,涉及到应用程序、镜像仓库、代码仓库、CI/CD集成平台等环节,会存在被恶意注入、恶意篡改的可能,随着流水线注入到运行环境中,实现漏洞攻击。

  • 运行时安全:应用程序正常运行后,应用程序内部可能会受到恶意攻击,通过程序漏洞入侵系统,导致云原生环境受到威胁。

针对不同的阶段,可以通过多种手段来实现云原生安全的监测和防护。

  • CI/CD阶段,可以通过漏洞检测,避免云原生环境在CI/CD阶段可能发生的漏洞攻击。

  • 程序运行阶段,可以对网络侧和主机侧行为进行检测,如入侵检测等。

  • 另外还需要针对多层次架构进行防护,比如容器化应用访问外部服务、应用和Pod之间的微隔离,加固节点安全防护等,维护云原生环境的完整生命周期的安全性。

总结与展望

总结一下,我们可以得出这些结论:

  • 作为最复杂的两大基石,Linux内核和K8s漏洞占比最多

  • 容器逃逸手法丰富,更多研究者开始研究逃逸后提升权限

  • 部分漏洞利用需要交互,部分需要能够创建多个容器

  • 防守者需关注云原生不同层次各个组件整体安全性

Metarget的目标是打造云计算底层安全攻防研究基础设施,接下来计划进行这些改进:

  • 提高交互性与易用性

  • 支持不同的Linux发行版

  • 优化提示语句

  • 优化已有脆弱场景

  • 将危险配置项细化展开

  • 减少对不稳定安装源的依赖

  • 提高write-up覆盖率

  • 覆盖更多云原生漏洞场景

  • 覆盖更多Linux内核漏洞场景

  • 覆盖虚拟化漏洞场景


聚焦云原生新技术、新实践,帮助开发者群体赢在开发范式转移的新时代。欢迎关注CSDN云原生微信公众号~


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK