关于安全:云原生背景下的应用安全建设

34次阅读

共计 8196 个字符,预计需要花费 21 分钟才能阅读完成。

文章首发于:
前线 Zone 社区(https://zone.huoxian.cn/)

大家好,我是徐越,明天分享云原生平安这个话题,云原生平安这个话题其实太大了,我之前所做的一些研究成果,次要是在应用层,所以咱们明天探讨的重点就围绕着云原生的利用平安。

第一块:云原生的利用平安目前倒退到一个什么进度,以及将来它会向哪些方向去延长。

第二块:咱们做技术的是怎么样去入门?

我是从 17 年开始进入到一线的云厂商,做云平安产品以及平安钻研相干的工作。之前对于云原生畛域的研究成果,从主机平安到 Web 平安,到容器平安,这些能够在我的博客上找到。https://cdxy.me/about

议题次要分为四个大部分
第一局部:云平安当初倒退到一个什么样的阶段,咱们作为一个平安从业者怎么对待这件事件,咱们要不要投入云平安钻研?
第二、三局部:从红队和蓝队两个视角去介绍云平安的技术倒退,目前都波及到的技术栈是什么?做这些研究所须要的能力是什么?
第四局部:云平安的入坑倡议。

第一局部,首先就是云平安是什么?云平安对于整个平安行业,或者对于咱们每一个技术人来讲,咱们到底怎么对待这个事件?咱们要不要把它当做咱们工作的次要方向去做,这个背地的基本逻辑是什么?

首先整个网络安全行业,它是有很多驱动力在的,其中我认为最强也是周期最长的一个驱动力,就是 IT 基础设施的倒退。也就是说平安肯定是跟随着基础设施架构倒退去一直演进的。

那么当初基础设施倒退的趋势是什么?就是万物互联,咱们之前讲的,比方晚期的边界进攻到前面的纵深进攻,再到当初咱们发现所有的大型企业级利用,基本上都能看到十分多的云边端的互联,云又分为公有云、私有云,包含云上的 SaaS 服务等几个方面。

咱们当初看到一个企业级的利用。他其实把十分多的基础设施和能力连贯了起来,比方私有云的 IaaS 层,以及公有云的 IaaS 层,VM 或者容器等等这些基础设施,包含云上的所有 SaaS 化的服务,包含企业的利用有可能会跟终端,比方手机端的这些 APP,智能汽车外面内置的 APP,边缘计算以及传统的企业的 IDS,企业外部的办公,以及很多这种 PaaS 平台对第三方合作伙伴或者开发者凋谢的一些能力。

在万物互联的背景下,边界这个概念在逐步地弱化,资产的攻击面是越来越多的,那么想做好平安这件事件,其实就是要求每一块平安能力要一直的去细化,下沉到基础设施层。

那么咱们看到在这外面,云平安只是万物互联的 IT 基础设施倒退下的,只是大趋势外面的一部分,那咱们仅探讨云平安这个话题,目前云平安有什么问题,这外面我次要总结进去三点,也是目前业内无论是守业市场,还是平安钻研畛域比拟关注的几个方向。

第一块就是 laaS 层,也就是基础设施层的挑战,那这一块,就肯定是说传统的 VM 向容器化,以及微服务化去倒退。

其实业内的话,容器目前曾经十分大规模的在各行各业去落地,那么在根底上咱们发现其实平安是滞后的,那这外面就为攻击者发明了一段时间的钻研空间,以及为防守者提出了一个新的挑战。

第二块就是 SaaS 层,SaaS 层把能力作为软件模式交付,SaaS 的利用分为两种,一种是对人的,就是后端用 API 来做,前端再套一个 UI 界面,这样子去做它最终的一个交付。还有一种就是对机器的,比如说明天我开发一个 APP,可能我须要集成很多的地图功能或者其余性能,那么传统可能须要去买,须要去集成,明天的话,其实只有调一下云上的这些 API,做一个付费就能够集成这块能力。

那 SaaS 挑战次要就是越来越多的企业能力以 API 的模式进行凋谢和交付,这外面就会波及 API 的平安爱护问题。

第三块,就是分布式的平安协同问题,也就是企业的基础设施进行了一个大规模的分布式之后,咱们怎么保障网络侧的统一性、接入的有效性、效率、所有的安全策略、以及平安运维在不同的基础架构之下的一个协同。次要目前来讲看到的这几个趋势,以及目前钻研比拟火的几个畛域,根本就是在这里。

从红队的角度来讲,红队当初是一个什么样的钻研状态?

咱们发现红队对容器化的讨论会略微多一点,从 2020 年微软先发表了一个 kubernetes 的 ATT&CK,其实论述了新的 IT 基础设施架构下,尤其是 kubernetes 和容器的架构下,和传统的 VM 的攻打思路有哪些不一样。从那个时候开始,咱们看到大量的云厂商、平安厂商,企业的甲方,都开始投入云原生的平安钻研,包含很多的大厂建设了专门的云原生的红队。

上图是在 2020 年,我在云厂商的时候,做了一版更粗疏的所有攻打的一些形容,又增加了一些针对云平台的攻打伎俩。

接着在 2021 年的云鼎这边提出的云平安攻防矩阵,是在此之上进行了又一次的丰盛,这外面咱们其实能够看到它曾经辨别进去了整个云的基础设施,包含云服务器的攻击方式,也就是传统 Linux 或者 Windows 的 server;而后是容器这一块,比如说这个 docker 和 kubernetes,以及容器的一些镜像仓库,还有其余的一些中间件和基础设施的攻击方式;而后是云服务这一块,比方咱们当初看到被攻打比拟多的云存储,可能常常会呈现这种权限问题,泄露数据的一些问题,包含一些云平台自身的账户泄露,或者云平台的 API 入侵等等。

那么我感觉入门云平安的话,从攻击者的视角来讲,看到所有的这些工具技术,去了解把握这外面所有的攻打模式,就可能对云平安外面应用层、基础设施层的平安攻打伎俩有一个宏观的理解,大略就可能晓得云平安咱们到底在探讨哪些技术,这个是从红队视角去讲。

那么咱们细节一点,云平安具体带来哪些新的攻击面?次要是左边咱们所讲的这三块,第一块就是新的基础设施,像 k8s 或者 serverless function,以及当初咱们讲的这个 mesh 架构,它的一些基础设施的破绽,以及在他下面所成长的一些利用中存在的利用破绽。

而后第二块,就是云平台自身,那云平台的话,其实历史上咱们也看到呈现过很多问题,其实大部分都是因为这个凭证泄露,而后去通过一些比如说云助手,一些 API 的通道,去操纵这个云账号或者云资产导致的一些平安问题。而后第三块就是云服务的一些 API,比如说云的存储,云的计算,而后云的认证,以及其它的很多第三方的能力输入,这外面还是之前说的,一方面是 API 加 UI,另外一方面就是间接的 API 攻打,这一块造成的危害也是很大的,之前咱们看到出了很多,这种云存储导致企业数据泄露的状况。针对这几种攻击面变动的这些工具,我在下面列出来,就是这个小字外面,这外面都是 github 上的一些开源我的项目,入门的话能够去参考一下他们笼罩了哪些攻击点,以及实现攻打的逻辑。

讲到云平安最次要的一个场景,就不得不说容器这一块。我右边那个图画了一部分攻打场景。次要包含攻击者对于容器的基础设施,以及对于这种 SaaS 化的云上的利用,以及云上服务基础设施的这些攻打门路。这里咱们能够去略微的了解一下,这个入口点,以及这个提权逻辑,以及这个长久化逻辑,以及窃取数据逻辑,可能会跟传统的 Linux 或者 Windows 的攻打的门路会有一些差别,也是说这两年来咱们看到越来越多的红队开始这方面的武器化钻研。

接下来如果说咱们想做这个云原生的,再往深刻一点,就是想做到 IaaS 层的平安的话,其实它是一个比拟艰难的话题。这个其实咱们包含之前我在做这一块平安的时候,也和其余的一些容器平安相干的一些厂商去交换过,就是这块的钻研为什么会有肯定的门槛,就在于它其实是多种技术能力的交融。比如说你首先要懂 Linux,而后还要懂这个虚拟化,比如说 docker 或者 k8s 的一个架构和原理,而后当然你还要有一个攻防的思维。这个是三种能力的联合,导致你能够在这一块做破绽开掘,或者做一些平安计划性的建设。

咱们举一个例子是一个老破绽,这个破绽,其实是一个公开的货色,包含 Exp 也是公开的。为什么要提这个事件?

其实是给大家领会一下做这个破绽的攻打和复现的时候,咱们会波及到多少个知识面。首先右边这一块是官网的一个破绽形容,咱们看到这些名词,首先就是这些名词是否了解,这个 containerd,而后这个 shim,runc,unix socket,包含这个前面的一些通信协定这一块,咱们有没有这个基础知识,能不能做这件事件,包含前面的 Exp 怎么写。

这外面所有的这些概念其实都是要去钻研,都是要去积攒的,而后在此基础上,咱们能力去做这个 IaaS 层的破绽的一些剖析工作。

从原理上来讲,首先就是说这外面会分为几层,就比方首先从这个 k8s 层,通过 containerd 去做这个容器的治理,前面又形象了一层,能力的接口用作这个 shim,而后前面整个虚线框起来的这个货色,其实就是每一个容器,它所解决的,在 Linux 体系外面所存在的一个过程的关系。其实容器逃逸它实质上就是一个 Linux 隔离的问题,就是一个低权限的过程,我怎么能做到变成一个高权限的过程。

那这里首先你得在这个 Linux 这个维度可能十分分明地理解,就 Linux 的一些权限隔离机制,比如说 Linux Namespaces 和 Capabilities 这几个货色是怎么实现的,而后能力去了解这个破绽的一个利用原理。在编写 Exp 的过程中,你还要对 containerd,或者说这个整个 k8s、docker 的这个细节到源码级的性能要有一个理解,比如说这个破绽开掘者,他所提出来的一个 Exp 的思路,就是通过 shim 这个高权限过程共享网络空间的时候,能够间接通过一个低权限操纵这个高权限过程,而后管制它再起个容器,再起一个容器的过程中,咱们给它更高的一个权限,而后再通过这个容器外部去操纵宿主机资源,最初拿到宿主机 shell。

这个流程其实是一个十分通用的容器逃逸流程。然而如果你做过 OCI 研发,或者看过这一块文档的时候,其实你能够提出一个更不便的办法,就比如说左下角这个图,其实 OCI 它提供了十分多的 hook,就在容器的启动过程中,这个 hook 外面有一个 prestart,这外面间接能够反弹 shell,在起容器的过程中,甚至这个容器都不必真正的跑起来,它就能够间接 bash 命令间接执行。

这个 Exp 咱们也是收录在那个 CDK 的左边那个链接外面,感觉有趣味的同学或者有肯定积攒的同学能够钻研一下,大略也就能了解做 IaaS 层的破绽钻研和开掘须要哪些积攒,这是一个例子。

而后针对入门门路,挖洞的话咱们大家能够从这一块动手,挖洞这个货色我不太倡议大家上来一下子就要挑战特地难的一个指标,比如说我要搞一个 k8s RCE 进去,咱们再 CNCF 的 landscape 图外面能够看到当初整个云原生的生态体系,曾经衍生出了十分多的利用和中间件。那这外面其实我还是倡议如果入门的话,咱们先挑一些本人跳一下可能失去的指标,一步一步地循序渐进的,从简略到难去实现这一块的钻研。

挖洞这外面其实有一个我感觉比拟好出洞的一个思路,就是说多组件平安的设计不统一。这个思路其实在 orange 之前的几次 blackhat 演讲外面体现的很显著,就是说我单个组件拎进去是没有问题的,然而多个组件针对一种协定,一种标准,它的实现外面是有不统一的点,那么我思考整个利用流程过程中,其实多个组件它拼凑在一起的时候,这些不统一的点,有可能就会成为破绽的起因。

这里有一个有意思的案例,我在上面也放了链接。咱们做红队或者破绽这块的钻研,它实质上还是一个积攒的过程,如果咱们对整个云原生的生态体系,包含组件,钻研的特地粗疏的话,其实这外面的破绽还是很多的,相比你间接去挖这个 Linux 和 Windows 破绽来讲的话,这一块依然是一个蓝海。

下面是红队这一块,而后蓝队这一块,也就是说企业从防守方的角度去思考,怎么去建设云原生这一块的平安体系。

首先第一块蓝队应该留神的,平安责任区这里是有个变动的,那咱们看到当初的基础设施,从右边的传统的虚拟机下面间接跑 APP,而后到当初的虚拟机容器 APP,再往后容器都曾经 on demand,包含到前面的 serverless,底层的这些货色曾经被云厂商或者云服务提供商默认的做平安掉了,就是图外面这个灰色的局部。

图外面这个浅蓝色的局部,其实是一个云厂商和用云计算的企业共担的一个责任区,那么深蓝色的局部,就是企业次要去负责去建设的一块平安的责任区,其实咱们看到一直的往后去倒退,IaaS 基础设施的服务化水平越重大,其实企业在外面须要解决的平安问题是越来越少的,所以咱们为什么说云其实是在某种程度上来讲是更平安的,就是这个情理。

而后就目前来讲,针对大量利用上云的企业,咱们看到了一些显著攻打的趋势,就目前来讲,对云平台以及容器基础设施的攻打曾经十分宽泛了。这不是一个新的话题,而是说当初所有的这些公网上的这些蠕虫也好,僵尸网络也好,都默认集成了这些对于容器,对于 K8S 的一些攻打伎俩,如果说一些比拟 low 的破绽,可能你开到网上霎时就被入侵。

第二块就是方才我所讲的这个趋势,基础设施层会由云厂商去默认地做到平安。在此基础上业务层的货色更是企业须要解决的一个问题,比如说凑近人的货色,其实它是永远不会沦亡的一个平安话题,包含人员的行为管控、鉴权以及凭证泄露导致的一些平安问题。

另一方面利用平安也不会隐没,就是包含所有的云的基础设施下面跑的企业应用代码,所有应用层和业务层的平安,它跟以前是一样的,它会始终存在,比如说 web 畛域,包含这个利用中间件,利用组件破绽,以及一些供应链的危险,这个是一贯存在的。那么在这一块云平台厂商默认做平安的策略之下,其实还是方才讲的这三个方向是企业须要关注的一个重点。比方当初咱们看到这个容器平安,k8s 平安,API 平安,以及分布式的平安协同,分布式平安协同这个词是我造的,包含当初咱们看到的 XDR、CSPM、SASE,或者零信赖等等,其实它实质上解决的就是一个大规模分布式架构下的平安协同问题。

另一方面,咱们这边有在甲方或者在企业侧做蓝队的同学可能除了技术之外,还会遇到一些其余方面的挑战,比如说安全部门在做一些基建,在做一些安全策略的时候,可能会跟业务方呈现抵触,或者说咱们没有拿到足够多的估算,足够多的资源去实现一个整体的平安水位的晋升。

那这外面咱们思考更深一层的问题,在甲方去做这个平安建设,肯定会遇到一个资源问题。资源问题背地的其实是平安团队的一个定位问题,也就是说咱们做平安建设总提到一句老话叫“出了事儿要你何用,没出事儿要你何用”。其实这个实质背地是一个定位的问题,如果说咱们可能把这个平安与业务的对抗的关系转化成单干的关系,也就是说把安全部门的一个定位,从保障业务到赋能业务做一个转化的话。

其实就能够去为安全部门,或者说为平安钻研带来更多的资源,就可能保障更多的技术同学,他有一个很好的环境去钻研云平安畛域或者新兴的一些平安的技术。这里其实对于一线的甲方从业者,我是倡议大家要跳出平安攻防思维的模式,多去接触业务,就能够实现从保障到赋能业务的安全部门定位的转化。

而后从进攻角度来讲,当初的基础设施布防其实业内也有十分多的成熟的产品可能去做,比如说传统的南北向的防火墙,包含镜像查杀,各种 Node 级别的,也就是 VM 级别的 EDR,也能够适配容器环境的一些入侵场景,比如说过程、网络、文件运行时的一些监控,包含整个 k8s 这一块的利用日志的审计,以及云的 SaaS 服务的一些配置查看,多云的平安协同管控,以及一些 API 的审计。

这些方面目前从蓝队角度来讲,其实在头部的一些厂商曾经开始有动作,开始着手针对新的基础设施架构做残缺的平安建设。

此外再提一点,就是蓝队这块除了攻防思维之外,我比拟倡议大家学一下数据分析。因为当初企业进攻的一些窘境,也就是大家都晓得的一个现状,就是资产永远是摸不清的,破绽永远是修不完的,安全设备布得越来越多,可能一个服务器外面,当初曾经布了四五个 agent,可能一个交换机外面曾经接了十个八个的网络流量剖析设施,那经营老本也是越来越高的。

从企业的投入产出比的角度来思考,其实当初这个甲方的平安从业者或者蓝军,更须要思考的是如何把平安这件事件流程化、数据化和智能化地建设起来,从而系统地去升高经营老本。那这个数据驱动平安这个逻辑其实很早在我之前那些分享外面也是提到过无数遍,包含当初一些网络上比拟火的平安的新概念,新的产品方向,其实从数据角度来讲,把不同的日志怎么去采,怎么去关联剖析,最终产出什么样的一个价值。照着这个逻辑也能够理进去所有平安产品和计划的一个倒退路线。


第四块就是一个云平安的入门倡议,作为技术人员大家应该更多的是关注技术这一块的成长。我大体将技术人员的成长分为两种路线。一种是纯研究型的路线,另一种是跟业务相干的,跟企业平安建设相干的业务路线。我集体走的其实是业务型的路线,明天也着重说一下这条路线。

这个图是之前从一位投资人那边看到的,我又改了一下,基本上我看到身边很多的平安技术出身的人,他的倒退路线是这个样子。首先咱们可能在学校的时候,或者在学习平安这件事件的时候,攻打是一个很 fancy 的事件,刚开始的时候咱们拿到一个他人写好的 Exp 打下来了某些站,到起初咱们可能本人去写 Exp,始终到咱们可能本人去挖破绽。

做攻打,一直的去冲破限度,其实是一个十分爽的事件,也是很多人喜爱上做平安技术的一个理由。那么如果再往上走一层的话,如果咱们要去做整体的平安解决方案,或者说在甲方去做平安的一个建设的话,其实不仅要有攻打思维,他还要全面的去理解公司的 IT 架构以及业务。

因为不同的场景,用的基础设施不一样,包含几朵云外面,它对容器化、虚拟化这一件事件各家厂商的架构都是有差异的。那咱们怎么可能联合咱们本人的业务需要,以及怎么联合公司现有 IT 架构去做一个投入比拟低,然而成果比拟好的这样一个整体的计划,而后一直的去推动平安水位的晋升,这是进攻角度须要具备的能力。

再往后,就是如何把咱们的技术能力通过复用来转化更多价值,让咱们付出一份工夫,让这份工夫可能复制。这一块就波及到产品化,如果咱们要在平安角度做守业,或者咱们要把在企业外部建设进去的能力去实现商化的话,其实还须要有市场化和企业化这两块的思维。

明天次要针对攻打和进攻这两个点我列了几个入门倡议,也是我一路学下来恪守的几个准则,第一块就是多看官网文档,少看中文资料,少看 CSDN。这个是肯定的,因为我发现看二手的信息的确可能把这个货色跑起来,然而你基本接触不到它背地所蕴含的优雅的设计逻辑。哪怕是文档下面,就是跟代码无关的文档表白,其实国内外的差异还是很大的,所以倡议有能力的同学尽可能的去浏览一下原始的官网文档。

第二点,很多同学可能在入门的时候都会先拿他人的 Exp 过去跑一跑,或者他人的扫描器挖一挖破绽,刷一刷 SRC。然而如果前面想要长期倒退的话,还是要有钻研的深度,这一块的倡议就是多看我的项目源码,像之前在容器钻研中大略我也把这些像 containerd、k8s,包含 docker 的一些 OCI 的其余一些货色的源码都是看了一遍,而后才去做这方面的钻研和破绽复现,还有一些 Exp 的工作。

如果说咱们源码浏览积攒到了一定量的话,其实你对一些它自身的设计模式就会有个理解,那么有一天,你忽然来了一个 idea,而后你大脑中其实是有一个数据库,或者有一个决策树的,你就会晓得这一个攻打场景在哪些平安的设计理念或者设计模式里,它肯定会有抵触,这样就是一个破绽产生的起因。

第三点就是看他人挖破绽,复现破绽的同时,要再往深想一层。单纯把这个破绽看懂,而后感叹一句,哇他的脑洞真大,其实这个是没有用的。破绽看多了之后,你可能发现每一个优良的破绽研究员挖洞是有一些固定模式的,你看到破绽原理之后,再往深问一层,他为什么能发现这个破绽。这个问题问多了之后,可能咱们就能够形象出一些十分根底的挖洞模式进去,而后再把这个模式批量的去复用到你脑海里积攒的场景,你就能够批量去产出同类破绽。

最初一点,就是业余时间钻研它永远不如间接从事这块的工作接触的信息量以及视线更大。所以说对于入门来讲,最好还是可能找到一个工作中的理论战场,就是把趣味和工作联合在一个高强度高效率的环境去一直的磨难本人。

这四点就是针对云平安畛域技术入门,或者说破绽开掘畛域技术入门的一个倡议,而后因为工夫无限,所以我大体上明天只是做一个综述性质的表白,前面的话,对于整个云平安这一块,包含利用平安,或者职业倒退这一块,也欢送去做一个深刻的交换。

正文完
 0