课题研究 云安全与容器安全 子课题04 · 第01页 / 共8页
04子课题 · Serverless与函数计算安全

Serverless与函数计算安全第01页:研究总览与背景定位

Serverless(FaaS+BaaS)将安全责任进一步推向云平台,但也将攻击面重构为"默认公开、事件驱动、运行时黑盒"三大新形态。本子课题以OWASP Serverless Top 10为风险基线,系统研究函数计算平台的攻防体系:从架构与攻击面解析出发,经认证授权与函数身份、代码与运行时防护、事件源与网络隔离、供应链与依赖安全,到多租户隔离、检测响应与滥用治理,最终沉淀为基线核查、合规映射与实施路线。全八页:总览→架构攻击面→认证授权→代码与运行时→事件与网络→供应链→隔离与响应→治理合规。

ServerlessFaaSBaaSAWS LambdaAzure FunctionsCloud FunctionsCloudflare Workers函数计算事件驱动OWASP Serverless Top 10共享责任模型FirecrackergVisorDenonia研究状态:研究中
所属专题互联网基础设施安全 › 云安全与容器安全
目标受众云安全与架构团队、平台工程/SRE、函数平台运营人员、应用开发者、红队与云安全研究人员
全文结构8页:总览 → 架构攻击面 → 认证授权 → 代码与运行时 → 事件与网络 → 供应链 → 隔离与响应 → 治理合规

01 · 研究背景与意义

1.1 从PaaS到FaaS:安全责任向云平台的进一步让渡

Serverless(无服务器计算)通常被定义为FaaS(函数即服务)+ BaaS(后端即服务)的组合——这一经典表述出自加州大学伯克利分校2019年2月发表的《Cloud Programming Simplified: A Berkeley View on Serverless Computing》一文。在NIST SP 800-145(2011)确立的云计算服务模式谱系中,FaaS一般被视为PaaS向"更高抽象层次"的延伸形态:云服务商不仅接管底层硬件与虚拟化层,还接管操作系统、语言运行时、容量规划与弹性伸缩,客户交付物从"应用与运行时"收缩为"代码与配置"。

产业侧的标志性节点是2014年11月AWS在re:Invent大会发布Lambda(预览版,2015年4月正式商用),函数即服务由此进入主流;此后Microsoft Azure Functions(2016年发布)、Google Cloud Functions(2017年Beta、2018年GA)、Cloudflare Workers(2017年发布,基于V8隔离舱而非容器)以及国内阿里云函数计算、腾讯云云函数SCF、华为FunctionGraph等产品相继成熟,Serverless已成为事件驱动型应用、Webhook回调、定时任务、轻量API与数据处理流水线的默认选型之一。在共享责任模型下,这是一次责任向云服务商的进一步让渡——但让渡的是"云自身安全",代码、函数配置、身份权限、事件链路与数据的责任全部保留在客户侧,且因平台的高度分布式与事件驱动特性而变得更加分散。

1.2 安全模型的三重转变

  • 边界彻底消失:函数天然面向调用,其入口可以是API网关、函数URL、对象存储事件、队列消息、定时规则乃至数据库流——传统"内网可信、边界设防"的假设不复存在,"默认公开"是函数平台最常见的配置错误类别。
  • 事件驱动放大输入面:一个函数往往同时挂载多种事件源(HTTP、SQS/SNS/EventBridge、S3事件通知、DynamoDB Streams、CloudWatch定时事件、第三方Webhook),每个事件字段(对象键名、消息属性、Header、detail字段)都是潜在的注入入口,输入面的数量与形态远超传统Web应用。
  • 运行时黑盒与短时性:函数执行环境按并发需求秒级创建与销毁(AWS Lambda基于Firecracker微虚机,论文级启动时延低于125毫秒)、无固定IP、默认不可登录,传统基于主机Agent的进程监控与人工日志审计全面失效,检测能力必须建立于平台层遥测(管理平面审计日志、托管检测服务、DNS/流量日志)之上。

1.3 三个结构性挑战

挑战内涵本课题应对(对应页)
默认公开与权限放大函数创建后默认可被账户内主体调用,配合通配符执行角色(iam:*或*:*)即形成"一次调用直达数据面"的越权链路;函数URL、API网关与事件源映射任一环节配置失误都会放大公开面第2、3、8页:攻击面解析、身份权限最小化与基线核查
凭证与密钥分散云凭证(执行角色临时凭证)、第三方API密钥、Webhook签名密钥散布于环境变量、代码、IaC模板与各函数配置中,泄露渠道与可见性难题并存第3、6页:函数身份治理与供应链管控
计费面攻击无并发护栏的函数可被流量刷爆产生账单(Financial Resource Exhaustion,OWASP SAS-08);挖矿与钓鱼托管等滥用行为以函数为低成本基础设施第5、7页:节流护栏与滥用治理

认知纠偏:"无服务器=没有服务器=没有安全责任"是Serverless采纳中最危险的误解。云服务商负责隔离机制、运行时补丁与平台可用性,但OWASP Serverless Top 10(2019年发布)所列十项风险——注入、失效认证、不安全部署配置、权限过宽、日志与监控不足、第三方依赖、密钥存储不当、资源耗尽、执行流程操纵、错误处理不当——全部落在客户责任面。2023年1月Cado Security披露的Denonia恶意软件(首个公开针对AWS Lambda执行环境的恶意样本,运行门罗币挖矿程序并经DNS over HTTPS规避检测)已经证明:函数本身就是攻击者的直接目标,而非"小到不值得攻击"的边缘资产。

本子课题分析框架:六段递进式研究路径
与各分页内容严格对应,供按需查阅
说明:本框架为课题内部分析方法论示意;平台行为与配额以各云服务商官方文档为准,漏洞条目以NVD官方记录为准。

02 · 研究目标与关键问题

  • 攻击面完备性目标:建立覆盖访问调用面、事件输入面、身份权限面、代码依赖面、配置资源面与计费资源面的函数攻击面清单,做到"每个入口、每种事件源、每项默认配置"均有档案(第2页)。
  • 最小权限工程化目标:将"一函数一角色、调用授权与执行授权分闸、短期凭证"转化为可执行的策略模板与核查规则,而非原则表述(第3页)。
  • 注入防御工程化目标:建立事件驱动的输入治理方法(Schema校验、白名单、参数化、幂等设计),覆盖同步与异步全链路(第4、5页)。
  • 滥用可治理目标:构建账单面护栏与滥用检测(挖矿、钓鱼托管、垃圾邮件中继)的检测—响应闭环,并沉淀为成熟度模型(第7、8页)。

2.1 三个关键研究问题(KQ)

编号关键问题内涵说明对应章节
KQ-1默认公开的暴露程度主流平台新建函数的默认可达性如何?资源策略、函数URL(AuthType NONE)与事件源映射在何种组合下会使函数直接暴露公网?不同平台默认加固差异有多大?第2、8页
KQ-2事件注入的可防性攻击者经由S3对象键、消息属性、定时事件detail、Webhook体等事件字段实施间接注入时,Schema验证、输入消毒与最小权限的组合防护在工程上的有效性边界在哪里?第4、5页
KQ-3计费面滥用的护栏极限预留并发、使用计划、配额、预算告警与SCP的组合能抵御多强的流量型攻击与凭证滥用?账单异常检测的时效极限与误报代价如何平衡?第5、7页

03 · 生态参与方与演进时间线

3.1 生态参与方与职责

角色职责/产出代表
标准与社区风险分类基线、无服务器定义、开源生态治理OWASP Serverless Top 10项目(2019年发布首个正式版);CNCF Serverless工作组及《Serverless Whitepaper》(v1.0,2018年2月发布,为当前正式版本);NIST SP 800-145云计算定义
云服务商函数平台、隔离机制、运行时维护、托管安全服务AWS Lambda、Azure Functions、Google Cloud Functions/Cloud Run、Cloudflare Workers;阿里云函数计算、腾讯云SCF、华为FunctionGraph
开源FaaS生态可私有化部署的函数平台与工具链Knative(2022年进入CNCF孵化)、OpenFaaS、Fission、Apache OpenWhisk;Serverless Framework、SAM、Terraform、Pulumi、阿里云Serverless Devs
安全研究与厂商攻击面研究、检测产品、事件披露Cado Security(Denonia披露,2023)、PureSec(Serverless安全研究,已被Palo Alto Networks收购)、Aqua、Sysdig、Wiz等云安全厂商的函数安全能力
学术界隔离机制、冷启动优化、检测方法学Firecracker(NSDI 2020)、SOCK(USENIX ATC 2018)、Berkeley View(2019)等论文确立的体系化知识

3.2 领域演进关键时间线

时间事件(均可公开查证)
2014—20152014年11月AWS在re:Invent发布Lambda预览版,2015年4月正式商用,"函数即服务"进入主流,事件驱动与按调用计费的架构范式确立
2016—2017Azure Functions发布(2016年);阿里云函数计算、腾讯云SCF等国内函数平台相继上线(2017年前后);Google Cloud Functions发布Beta(2017年);Cloudflare Workers发布(2017年,基于V8 isolates隔离舱而非容器)
2018Google开源gVisor用户态内核沙箱(2018年5月);Knative项目发布,将函数与工作负载抽象带回Kubernetes生态;AWS开源Firecracker轻量虚拟化(2018年11月,NSDI 2020论文披露其为Lambda执行环境底座);Google Cloud Functions GA(2018年7月)
2019Berkeley View论文(2019年2月)提出"Serverless = FaaS + BaaS"经典定义;OWASP发布Serverless Top 10(2019年),首次以十大风险形式系统化函数安全风险谱系
2020AWS Lambda支持以容器镜像打包函数、并支持Graviton2自研芯片(2020年12月),容器供应链问题正式进入函数领域;Lambda Destination(成功/失败事件路由)等可观测能力完善
2021—2022Log4Shell(CVE-2021-44228,2021年12月)波及Java函数,AWS发布托管运行时修复与热修补层;CI/CD平台OIDC联邦凭证普及(GitHub Actions等),函数部署流水线进入"无长期密钥"时代;Lambda函数URL发布(2022年4月)、SnapStart快照启动发布(2022年re:Invent,面向Java);Knative发布v1.0版本(2021年11月),进入生产可用阶段
2023至今Cado Security披露Denonia(2023年1月)——首个公开针对AWS Lambda的恶意软件样本,函数成为直接攻击目标;托管检测(GuardDuty等)持续扩展至函数网络与运行时行为;AI推理、事件驱动数据处理等场景推动函数平台与GPU、机密计算等能力融合,治理重心转向身份、供应链与计费面;Knative于2025年9月从CNCF毕业(由Incubating升至Graduated,CNCF官网可查)
15分钟
Lambda单次执行时长上限
AWS官方配额文档:函数最大执行时长900秒,超时强制终止——长任务必须经编排拆分(第5页)
1,000
Lambda默认并发上限(每区域)
AWS官方配额文档默认值,超限触发429节流;可用预留并发做函数级熔断护栏(第7页)
10.0
Log4Shell CVSS评分
CVE-2021-44228,Java函数自带依赖的修复责任在客户侧(2021年12月AWS官方博客明确分层处置)
<125ms
Firecracker microVM启动时延
NSDI 2020论文披露数据,单microVM内存开销低于5MiB——函数隔离机制研究的基线参照(第4页)

04 · 术语速查与常见误区

4.1 核心术语

术语释义
FaaS / BaaS函数即服务(事件触发、按调用计费的计算单元)/ 后端即服务(托管数据库、存储、消息、身份等托管后端);Berkeley View将Serverless定义为二者组合
事件源(Event Source)触发函数执行的上游来源:API网关/函数URL、队列、主题、对象存储通知、数据库流、定时规则、Webhook等
执行环境(Execution Environment)函数实例的运行载体。AWS Lambda为每个执行环境启动独立Firecracker微虚机;默认串行处理请求;/tmp提供10GB临时存储(内容可能跨调用短时保留,官方明确警告不可依赖)
冷启动 / 热启动首次创建执行环境(下载代码→初始化运行时→执行初始化代码)与复用既有环境之差;缓解手段包括预留/预置并发、预热实例与快照启动(SnapStart)
并发(Concurrency)任一时刻处理请求的实例数。AWS区分账户级默认上限(每区域1,000)、函数级预留并发(Reserved,同时可作熔断护栏)与预置并发(Provisioned,预热消除冷启动)
执行角色(Execution Role)函数被赋予的IAM角色,决定函数代码能访问哪些云资源——与"谁能调用函数"(资源策略/授权器)是两条独立授权线
资源策略(Resource-based Policy)附着在函数上的调用授权策略,声明哪些账户/主体可触发函数;Principal为*即公网匿名调用高危配置
死信队列(DLQ)/ 目标(Destinations)异步调用失败事件的处理路径:Lambda异步事件默认重试2次,仍失败可投递至SQS/SNS死信队列,或经Destinations路由成功/失败事件用于审计与重放
函数URL(Function URL)AWS Lambda 2022年4月发布的专用HTTP端点特性,AuthType可为NONE或IAM——NONE即公网匿名可达,是新兴的高危公开面
Layer(层)函数间共享的代码/库分发单元;Layer版本发布后不可变(官方文档),但第三方Layer可在函数执行权限下运行任意代码,来源可信度必须审查
SnapStart(快照启动)Lambda面向Java运行时的冷启动优化:发布函数版本时初始化执行环境并打快照,调用时直接恢复;官方文档明确提示需检查代码"唯一性"(如随机数源、唯一标识生成逻辑)

4.2 常见误区辨析

误区辨析
"无服务器=没有安全责任"云服务商负责隔离机制与运行时补丁;函数代码、调用授权、执行角色、事件源配置、数据权限全部为客户责任,OWASP Serverless Top 10十项风险均落在客户侧。
"函数太小,不值得攻击"函数持有云凭证与数据访问权,且是低成本算力与托管面——Denonia(2023年)证明函数已成为挖矿等滥用行为的直接目标;凭证泄露后批量部署函数是公开报告中的常见手法。
"托管运行时自动打补丁=我的依赖也安全"托管运行时补丁只覆盖平台层语言运行时;函数打包自带依赖(如fat-jar中的log4j)仍需自行修复——AWS在Log4Shell期间的官方处置说明明确划分了这两层责任。
"API网关做了认证,函数就安全了"S3事件、定时规则、队列等事件源完全绕过API网关,每条事件链路都必须单独配置授权与输入校验;仅保护HTTP入口会留下大量旁路。
"异步调用没有返回值,所以注入无意义"异步链路同样执行注入代码(数据外泄、凭证窃取、下发任务),且重试语义会放大攻击效果;事件注入与重试风暴防护缺一不可(第5页)。

05 · 研究范围与合规边界

  • 对象范围:公有云函数平台(AWS Lambda、Azure Functions、Google Cloud Functions/Cloud Run、Cloudflare Workers、阿里云函数计算、腾讯云SCF、华为FunctionGraph)及开源FaaS(Knative系、OpenFaaS、Fission)的安全;版本基线以2024—2026年主流版本与官方文档为准。
  • 深度边界:做到"攻击面识别→防护基线→检测响应→治理度量"层面;不提供任何可直接复用的攻击代码,漏洞描述限于防御所需的机理与防护要点。
  • 协同边界:云责任分界与错误配置治理属子课题01;容器与Kubernetes运行时隔离(Knative构建于K8s之上)属子课题02;SBOM/SLSA与CI/CD总纲属子课题03;多云一致防护属子课题05;云上合规评估体系属子课题06——本子课题为其提供函数计算场景的深度展开与落地基线。
  • 时效声明:所引平台配额、特性发布时间与行为描述均以各云服务商官方文档为准;所引标准以NIST、OWASP、CNCF正式发布版本为准;所引漏洞以NVD官方条目为准;本文不虚构任何精确数值。

合规与伦理声明:①本子课题为防御研究,遵守《网络安全法》《数据安全法》《个人信息保护法》及网络安全等级保护相关规范;②文中配置核查、检测与演练方法仅适用于自有或获书面授权的环境;③函数遥测与日志采集遵循最小必要原则,涉及个人信息处理须满足告知与留存合规要求;④计费面测试(节流护栏验证等)须在受控额度内进行,避免对生产账单与配额造成影响。

06 · 与课题体系的协同关系

协同子课题数据/方法交换内容
01 云安全架构与共享责任模型本子课题给出FaaS(PaaS延伸形态)责任分界的细化:平台隔离与运行时归云厂商,调用授权、执行角色、事件源配置、代码与数据归客户;其CSPM配置审计项(如公开函数检测)与本课题基线清单互相映射
02 容器与Kubernetes安全Knative、OpenFaaS等开源FaaS构建于Kubernetes之上,子课题02的PSS准入、NetworkPolicy、eBPF运行时检测方法可直接迁移至私有化函数平台;Firecracker/gVisor隔离研究为第4页隔离强度评估提供输入
03 云原生软件供应链与镜像安全第6页继承其SBOM/SLSA/sigstore方法论并落地到函数制品(zip包、Layer、容器镜像函数);依赖投毒、CI/CD凭证治理(OIDC联邦)的规则库共用
05 多云与混合云统一防护第8页提供AWS/Azure/GCP/阿里云/腾讯云的函数安全配置基线对照模板,为跨云策略等价性核查(子课题05)提供函数计算域样例
06 云安全合规与评估第8页的等保2.0云扩展要求映射、日志留存合规(《网络安全法》第21条不少于六个月)与审计证据清单,直接作为子课题06合规测评的技术输入

07 · 预期成果与交付物

  • 《Serverless函数攻击面清单与默认配置核查手册》(六域攻击面、平台默认高危配置对照,第2页)
  • 《函数认证授权与身份最小权限基线》(调用授权/执行角色双闸口模型、跨平台身份对照表、策略模板,第3页)
  • 《函数代码与运行时防护基线》(注入防御规范、隔离技术选型矩阵、版本与补丁治理、行为检测规则库,第4页)
  • 《事件源与API网关安全配置指南》(事件源基线表、网关认证节流基线、网络隔离与编排安全,第5页)
  • 《函数供应链安全流水线规范》(依赖治理、Layer与镜像制品安全、IaC扫描、代码签名与SBOM,第6页)
  • 《函数平台多租户隔离与事件响应手册》(隔离层级、检测场景库、滥用治理与演练科目,第7页)
  • 《Serverless安全基线核查与成熟度评估体系》(OWASP/CIS映射、30项核查清单、五级成熟度模型与实施路线图,第8页)

本节参考来源(第1页)

以下均为真实可查的权威来源(OWASP、CNCF、NIST、USENIX、AWS官方文档、Cado Security、NVD),用于支撑本页事实性表述。

[1]

OWASP《Serverless Top 10》(2019年):owasp.org/www-project-serverless-top-ten。

[2]

Jonas et al.《Cloud Programming Simplified: A Berkeley View on Serverless Computing》(UC Berkeley EECS-2019-54,2019年2月):Berkeley官方技术报告全文。

[3]

CNCF Serverless Whitepaper v1.0(2018年2月发布,当前正式版本):CNCF wg-serverless官方仓库全文;CNCF Serverless全景图:landscape.cncf.io/serverless。

[4]

NIST SP 800-145《云计算定义》(2011年9月):csrc.nist.gov/pubs/sp/800/145/final。

[5]

AWS Lambda官方文档(执行环境、配额与默认行为):docs.aws.amazon.com/lambda;Lambda配额页:Lambda quotas。

[6]

Agache et al.《Firecracker: Lightweight Virtualization for Serverless Applications》(NSDI 2020):USENIX NSDI'20论文页。

[7]

Cado Security:Denonia恶意软件分析(2023年1月,首个公开针对AWS Lambda的恶意软件样本):Cado Security官方博客。

[8]

NVD官方条目 CVE-2021-44228(Log4Shell):nvd.nist.gov/vuln/detail/CVE-2021-44228。