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规避检测)已经证明:函数本身就是攻击者的直接目标,而非"小到不值得攻击"的边缘资产。
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—2015 | 2014年11月AWS在re:Invent发布Lambda预览版,2015年4月正式商用,"函数即服务"进入主流,事件驱动与按调用计费的架构范式确立 |
| 2016—2017 | Azure Functions发布(2016年);阿里云函数计算、腾讯云SCF等国内函数平台相继上线(2017年前后);Google Cloud Functions发布Beta(2017年);Cloudflare Workers发布(2017年,基于V8 isolates隔离舱而非容器) |
| 2018 | Google开源gVisor用户态内核沙箱(2018年5月);Knative项目发布,将函数与工作负载抽象带回Kubernetes生态;AWS开源Firecracker轻量虚拟化(2018年11月,NSDI 2020论文披露其为Lambda执行环境底座);Google Cloud Functions GA(2018年7月) |
| 2019 | Berkeley View论文(2019年2月)提出"Serverless = FaaS + BaaS"经典定义;OWASP发布Serverless Top 10(2019年),首次以十大风险形式系统化函数安全风险谱系 |
| 2020 | AWS Lambda支持以容器镜像打包函数、并支持Graviton2自研芯片(2020年12月),容器供应链问题正式进入函数领域;Lambda Destination(成功/失败事件路由)等可观测能力完善 |
| 2021—2022 | Log4Shell(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官网可查) |
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),用于支撑本页事实性表述。
OWASP《Serverless Top 10》(2019年):owasp.org/www-project-serverless-top-ten。
Jonas et al.《Cloud Programming Simplified: A Berkeley View on Serverless Computing》(UC Berkeley EECS-2019-54,2019年2月):Berkeley官方技术报告全文。
CNCF Serverless Whitepaper v1.0(2018年2月发布,当前正式版本):CNCF wg-serverless官方仓库全文;CNCF Serverless全景图:landscape.cncf.io/serverless。
NIST SP 800-145《云计算定义》(2011年9月):csrc.nist.gov/pubs/sp/800/145/final。
AWS Lambda官方文档(执行环境、配额与默认行为):docs.aws.amazon.com/lambda;Lambda配额页:Lambda quotas。
Agache et al.《Firecracker: Lightweight Virtualization for Serverless Applications》(NSDI 2020):USENIX NSDI'20论文页。
Cado Security:Denonia恶意软件分析(2023年1月,首个公开针对AWS Lambda的恶意软件样本):Cado Security官方博客。
NVD官方条目 CVE-2021-44228(Log4Shell):nvd.nist.gov/vuln/detail/CVE-2021-44228。