00:00
我是来自腾讯安全云顶实验室的张恒。然后。呃,这块主要给大家分享一下,就是seven安全这一块就是呃云点实验室一直就是专注于在云上的安全攻防,一块是说最新的呃安全研究,然后还有一块就是负责云上安全,就是产品体系的一些安全建设。对,呃,这是大概三个模块给大家介绍,一块是简单介绍一下资源这一块对安全的影响,呃,第二部分就是介绍一下service整个的一些安全情况,第三部分就是以开发者视角来看一下具体的service安全案例。呃,第一块这个大家也都比较熟悉,就是从传统的物理机时代到语音的s pass,以及像S,或者说呃S这一块,其实就是说呃整体的。应用部署其实更多的从呃业务的开发和资源的其实会越来越分离,那么对开发者来说,其实会面临到就是现在我们更聚焦于在业务逻辑的开发,那么在呃一些底层的管理,像以前还要管一些像操作系统安全啊等等,这些其实会有一个分离,那么就会面临呃哪一些是需要开发者去。
01:18
做的哪一些是需要,比如说像云厂商这样的一些呃厂家来做的,其实就是会涉及到后面的一个安全风险责任共担模型,那么这里其实简单介绍一下,就是说由于呃,我们的资源部署模型的变化,导致安全的一些模型其实也会随之发生变化。OK,呃,第二块其实就是简单介绍一下,就是S的那个应用架构,这一块是那个腾讯云SSCF云函数的一个图例,这一块其实上半部分绿色的部分,其实就是说我们现在开发的更多关注在比如说去写一些业务代码,然后像呃,Service框架会提供一些像它的框架,然后。
02:01
包括一些接入API getway啊之类的,然后底层的基础设施,比如说有一些像呃刚刚呃。秋海老师讲的,像底层的K8S的调度啊,然后cos的一些存储啊之类的,其实都会呃更底层的去使用,那么当然也包括一些安全的使用,比如说像云厂商,可能我们要去负责底层像呃整个平台底座的安全,以及包括操作系统的安全,然后我们现在更多应用,比如说像呃,你使用的一些镜像,我们可能也要需要去看它的安全性和合规性。OK,那这里其实就来开始正式我们进入安全这个话题。那么。呃,这里其实我们会做一个边界,就是在安全领域,更多的其实我们会去基于呃威胁的视角来看哪一些是可信区域,哪一些是不可信区域,那么像底层的,我们其实是相当于云厂商在负责的模块,我们在安全的划分里面,通常认为就是云厂商要去构建的一块可信区域,然后在用户层的话,可能基于开发者他要去写业务的代码,然后去做构建,那么在这一块可能就是非可行的区域,那么哎,在开发者这块,可能要更多的去关注这一块的一些安全问题,比如说呃,这块其实还是延续着传统,研发这一块,就是我写的代码有没有一些像SQL注入,命令注入这一些,呃,常见的研发安全的问题。
03:35
当然后面也会介绍到,就是说由于service这一块的呃,变更有针对这一块专用的一些安全问题。呃,对,然后呃这里可能我们核心讲一下,就是说云厂商这一块,其实我们会去保障呃运行环境的一些安全,包括一些语言的安全性,像比如说假设呃底层用的Python的语言,如果说新出了一些漏洞,那么云厂商其实是需要负责去呃对他进行最新的一些修复和之类的。
04:08
那么整体来说,其实呃,因为应用服务其实是跑在了基础架构之上,那么由开发者来实现,呃需要面向于呃不不管是QC还是TB的一些服务来面向开来,面向于广大的一些用户,那么他整体其实是由云厂商和。那个云,云厂商和那个用户来共同就是开发者这块来共同保证的,那么从整个的安全模型上来说,其实他就会变成一个安全风险共单的一个模型,就是云厂商要去解决云厂商需要解决的平台性的一些安全性问题,那么针对呃开发者来说,可能就需要去cover住呃,由于开发的一些过程中引入的安全风险问题。OK,然后这块其实就是说呃,针对其实不同的一些场景,呃,比如说像cos,对象存储,以及像service这一块,其实在不同的领域,我们呃业界有一个就是从一五年开始,其实美国的mata公司其实就基于呃常见就是基于真实世界的一些攻击,然后沉淀了一份叫at t c k的知识库,那么其实有一点类似于就是军事行动的,它会就是说整个的分成会分为战术,技术,就是说战术的话,就是说我分为几个部分,比如说我要去抢占一个高点,作为那个攻击力,那么首先我要去摸排一下,看一下对方是有多少呃是由,比如说是什么呃那个军队,然后来驻守的我要如果要抢占他需要多少的兵力部署,那么通常在呃对应到我们在攻防研究,通常认为是信息就是侦查。那么。
05:55
他会以就是说以战术到比如说执行到最终的就是获取结果,那么整体它会,呃,我们在S这块就是总结了九个那个战术点,那么每一个战术要去达到他的一个目的,那么具体的就要去实施可利用的,然后我们称为技术,比如说以这里为例,那么第一个点就是说初始访问,那么呃,从工具者来说,我要去搞一个比如说基于S开发的站点,那么我先要去了解,比如说他的一个,呃,传统来说就是说我要去访问这个站点,那么我要知道他的域名和IP,那么还以及就是进一步的看,比如说它是基于什么语言开发的,然后他的一些比如说应用开发的组件及版本,有没有最新的一些漏洞,或者说。
06:45
一些安全风险点,那么基于这块信息的了解,然后就去有一个基本的情况,然后这一块其实在fairness里面其实用的会比较多的,就是比如说我们去做那个S部署的时候,有一个s ya盟,那么其实呃,就是在我们公内部,以及其是我们做那个外部研究的时候也会发现,其实呃就是有时间,就是大家的代码其实会习惯性去上传到get HUB,那么在S的yama里面,其实有一些开发的可能就不注意的把一些像数据库的连接的账户名,密码呀,语音的密钥啊之类的,可能就硬编码在这个压ma文件里面去上传上去了,那么还有一些可能就是一些像点EA的那个,就是配置文件,可能也随之上传上去了。那么其实在工击的这一块,其实就会更多的去,比如说我去基于get他公开的仓库去搜索这块的压,有没有一些敏感的凭据。如果说有,假设说你把一。
07:45
这个云的密钥上上去了,那OK,我直接拿这块密钥,如果密钥权限很高,其实我可以拿到你整个云账号的一个托管,那么这块的风险其实是很大的。对,然后其实拿到了相关的信息之后,其实呃,第二步其实就是要我要去基于去这一块的信息,比如说假设你C站点,然后呃,如果说存在一些命令注入啊,可能我就想办法去通过一些攻击的手段进入到你的系统,这般其实第二步叫执行,那么常见的一些执行的方式,其实就是说我们用传统的一些,呃,面向用户可以访问的一些界面,我去看他有没有一些。
08:26
那个呃漏洞,比如说你的一些API没健全,然后我可能就匿名访问了,然后去进入到一些敏感的。获取到一些敏感的信息,案件,以及一些像那个管理后台,如果说就是有入口令啊之类的都可以进去,然后第三步其实就是说我们进去之后可能要去做一个维持,然后进一步的利用,对这块我就不展开讲了,然后呃,这个就是材料下面的右下角是就是腾讯,呃就我们实验室针对云上的一些常见场景做了一个攻防矩阵,那么这一块其实包括传统的像呃虚拟机CVM,然后对象存储Co,然后数据库数据,呃,数据库服务以及C这一块,它常见的一个呃攻击方式,然后里面会有一些详细介绍,然后大家感兴趣的话可以去访问了解。
09:21
呃,OK,然后这块可能是说基于常见的一些那个在在工具的视角,那么这里我们其实也针对内外,就是国内国外的一些研究,那么针对。呃,就是也呃以开发的视角来看,那么它常见的一些攻击方式有哪一些?呃,第一块其实就是我们刚刚有讲过的应用程序漏洞,因为呃代码还是说需要研发来写嘛,那么在写的过程中,可能由于一些安全编码,或者说对安全性的不了解,那么会出现一些常见像SQ注入啊,XS设这些就是呃有从研发开始已有的这些常见的漏洞,对这个其实都比较了解。然后第二块就是说供应链攻击,那么现在其实我们来构建一个服务,那么其实从现有的统计来说,其实像S其实80%以上的一些应用可能都会。
10:16
引用到那个,比如说开源组件的一些包,像像note JS,你去构建的话,像NPM你会装一些开源的包,那么呃,在攻击领域其实会有一个专业名词叫投毒,就是我去比如说发布一个假设有后门啊,或者说有恶意行为的一个NPM包,然后去公开的网上,然后去供假设大家去下载,那么在引入的时候,其实就会在呃构建服务中产生一些恶意的影响。OK,然后第三块是拒绝服务,那么传统其实我们有针对拒绝服务,像游戏早先其实会更多的经受一些像你DOS拒绝服务攻击,那么在云S这块,其实它会有一个新的类型叫Dow,叫拒绝账户服务。
11:04
那么它其实是指的就是说,因为现在的像呃service其实是按时空计费的,那么如果说你的service的一些接口,如果说比如说没有做好健全,或者说可以被呃恶意的没有做好一些限频,然后被恶意的利用,那么你每一次访问,那么其实就会产生云资源的,就是账户,就需要去付一定的那个经济成本,那么像在S和cos那一块,其实我们像cos。里面其实之前呃,包括存储,包括在外部其实有很多,就是说比如说我可能托管的一些视频去做一些网站,那如果说呃,你没做好,我可能基于你这块的应用,直接复用到我这一块去面向那是成本,其实是你在操的,然后还有一块就是说我通过大量的并发去调用你的一些资源,导致你其实是会有很多资源的消耗来带带来一些经济成本的损失,对。
12:01
这块可能是说在呃,以云开始去计费的一些模式下,产生的一些新的一个风险场景。对,还一块其实就是资源滥用,那么基于云的,比如说资源,然后找些拿来挖矿的,还有一些可能就是说呃,你的那个服务有问题,那么我基于你的被攻击了,那么我可以利用这个资源作为攻击者的下一个一个节点,那么在传,呃,早先其实我们更称为肉击,就是因为攻击,其实现在国内管的其实是越来越严的,那么其实在溯源这块,其实都会有比较好的方式来,呃,溯源到就是谁在攻击我,那么假设我去黑了一些呃,云上的一些节点,那么以他来作为跳板,然后甚至于构建几跳来去对外进行攻击的话,那么这一块其实目前来看,在法律法规的完善现上,其实呃。企业包括就是说云厂商都是有那个要,就是有义务要去保障自己服务的安全,来避免成为一些呃攻击者利用的一些呃跳板或肉鸡之类的,然后产生就是呃更广泛的一个攻击影响,然后第三块其实就是说针对第三方API和组件安全这一块的。
13:21
呃一些问题,然后呃还有一块,其实就是防护和监控不足,这一块其实是会呃S来说,其实它比容器来说更具有弹性,它的一个生命周期其实会更短。那么呃像呃seven的一些日志,我们去做日志审计的时候,可能会如果没有做好这一块的日志的收集,那么可能在做一些溯源和审计的时候,他的上下文其实就会丢失,包括呃他的一些防护的关联性,因为呃像S它是有很多的一些函数去呃广泛的去调用,那么复就是复杂的连接之后,那么它的一些呃关联关系的防护其实会更有挑战性。
14:05
那么还有一块,其实就是刚刚还有一块就是说,比如说有配置杠,配置杠的话就是之前有举例过,像service的一些,呃,你如果说没有配置好一些权限,比如说你的基于呃K或者说I'm的一些访问权限没配置好,导致可以扩大化的去访问更多的资源,可能带来一些恶意的影响,然后第三块其实就是运行时的一些安全,那么呃,这一块可能在。呃更多的其实是大家去选用,比如说底层的一些运行服务的时候,因为其实呃腾讯云呃SF是提供一些基础镜像的,那么有我们其实在发现像呃那个多HUB里面的恶意镜像的比例其实高达了7%~10%,那么如果说呃选择的一些镜像有恶意行为的话,其实会给你本身的一个呃可信的运行环境带来一些比较影响大的影响。
15:03
OK,然后对,然后我们刚刚说了一些他的一些安全的风险,那么针对开发者来说,他应该怎样去解决和防护,对这里我们可能也做了一些总结,呃,第一块就是说我们去做应用程序的那个漏洞环节,那么这块其实也比较,呃。呃,你呃,之前其实也会说的比较多,那么其实就是说在编码上的安全的编码呀之类的,这里其实就不过多的,呃。讲述,那么第三方依赖安全这块其实是现在来说呃会比较多的去去要注意的,那么呃他的技术上来说,其实有一个专业的安全领域叫SCF,呃SC就软件成本分析,基于呃你构建的,比如说你引入的第三方包,然后去获取他的一些,像他的最简单的你获取它的一些,呃,比如说你的软件的名称版本,那么呃,那么这一块其实。
16:03
其实各第三方其实都会有维护一个漏洞库,那么基于软件和版本其实是可以查到他历史来有没有一些安全漏洞的,那么以及他的当前的最新版本有没有一些安全问题对。然后还一块,其实就访问控制与策略防护这一块,其实就是更多的在资源层面,然后要做,比如说我们更加推荐seven去接API getway网关,去做一些身份访问控制和一些限频啊等操作,来避免一些呃资源的呃滥用或者说恶意的攻击,然后还有一块就是数据。的传输安全与加密安全,后面有一个案例会讲到,然后S的一些平台的防护,包括监测可视化,对。OK,呃,这里可能就是以一个,比如说左边其实是,呃,我们之前在客户交流里面,他们给的一个案例,就是基于腾讯云的那个FCF函数,然后去做的一个定时的任务,去做数据的查询,那么整体来看,它左边的那个SM其实写的相对还是比较安全的,它的很多的环境变量,其实更多的是从那个点U里面引用,没有去做一些。
17:15
呃,我们场外的铭文的那个硬编码,但是说因为即使他是通过比如说环境变量,或者说配置文件,那么我们其实呃。密钥还是会存在铭文存储的一个问题,那么呃,如果说我们的部署,比如说只在单人的电脑上面,我们的service的压,或者点英文文件不会有外泄,那么这块可能风险性还好,但是现在我们更多的是说一个多人协作的模式,那么在呃,像一些配置文件啊,或者说。呃这块的管理上来说,其实很容易发生的一些泄露事件,比如说呃,就是出现最多的就是说呃,有意或无意的被上传的get HUB,然后造成更广泛的一些影响,那么这块我们其实会更推荐就是刚才在呃。
18:04
前面老师也讲过基于SM的一些那个,呃,密钥的托管,那么这块其实说更好的,我们其实会更推荐大家在环境变量或者配置文件里面去,呃,纯基于SM这一块,那么通过云API去获取它的密钥,然后加载到本地进行解密这样的一个方式,同时就是SM的那个密钥,它也支持那个定期的那个轮换,那么在安全性上来说会更好。OK,这块是,呃,我们引个外部的一个攻击案例,它其实是针对那个ACO,呃,S3存储桶的一个攻击,那么上面是它的一个正常的一个代码,那么翻译下来其实就是说我去便利那个存储桶里的文件,然后把它存到本地,然后基于本地,可能比如说有一些特定的操作,像比如说我要做图形转换,可能调用的是类似于Linux FM PA做一些图形的转化,然后来完成某一个,呃。
19:08
功能对,那么这一块其实来说,它其实是非常普遍的一个功能需求,那么站在呃,站在那个开发者来看,可能不站在工具上来看,那么这里可能会有一个问题,就是说我们其实呃,包括我们在内部做建设的时候,会给呃业务开发同学灌输一个概念,叫做一切用户输入的都是不可信的,那么这里其实他违反了一个点,叫做他对用对那个cos的文件名,其实做了一个新能源的,没有去做进一步的校验,他认为就是说呃,我从引入的,比如说那个呃,这个是S3的,S3的那个文件名,然后我认为它都是没问题的,然后他去调Linux命令,去做一些操作,那么呃,我们知道在Linux里面,其实通过分号其实是可以分割出几条命令的,那么如果我的Linux那cos的文不那个S3的文件名就以分号来分隔,后面加一个就是从网上那。
20:08
个CPRL其实是从网上下载一段下L脚本,然后调代写命令去执行,那么这一块他其实就是他会把正常的那个逻辑功能就是相当于给截断了,那么他下一条命令就会执行一段恶意的。脚本,那么这块其实也会给大家分享一下,就是呃早先我们的输入其实更多的像web应用,其实就是在用户的输入上,那么可能是一些HTP的协议的传输,然后去做校验,那么现在在说我们可能会更多的用到一些周边的云服务,那么对云服务的一个可信,其实如果说呃云服务的一些像这里的S3的文件名,其实是属于用户可控的,那么在我们的一个呃,原则上就是一切用户的输入都是不可信的,所以在这块其实大家呃要重视一下,就是说可能跟我们在传统做web开发里面其实会有一些呃差异点,这块也是给大家做一些分享。
21:06
嗯,对,然后我整体的一个分享内容就是这么多,然后谢谢大家。
我来说两句