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

Serverless与函数计算安全第02页:架构模式与攻击面解析

函数应用是一条由访问层、事件层、计算层、编排层、后端层与治理层拼接的托管调用链。本页以AWS Lambda官方文档为基准解构执行环境关键事实(微虚机隔离、只读文件系统、15分钟执行上限、6MB/256KB负载上限),将攻击面归纳为六域并与OWASP Serverless Top 10逐条映射,给出默认配置高危点清单(D1—D8)与Capital One、Log4Shell、Denonia等真实案例剖析,最终沉淀为七阶段攻击路径图谱——每一步均标注平台审计事件,为第7页检测场景库提供映射基础。

Serverless攻击面参考架构执行环境Firecracker默认配置OWASP映射Capital OneLog4ShellDenoniaCloudTrail研究状态:研究中
所属专题互联网基础设施安全 › 云安全与容器安全
目标受众云安全架构师、平台工程团队、函数平台运营与应用开发者
本节要点六层架构模型 / 六域攻击面 / D1—D8高危默认配置 / 七阶段攻击路径

01 · 参考架构与组件解构

1.1 FaaS/BaaS 参考架构六层模型

函数应用并非"一个函数",而是一条由多层托管服务拼接的调用链。任何一层配置失误都会成为整链的短板,因此攻击面分析必须以架构分层为单位展开。下表为课题内部使用的参考模型(与各云厂商官方架构文档一致):

架构层典型组件核心安全关切
L1 访问层API网关、函数URL、边缘网络(CloudFront类CDN)认证与授权缺失、无节流、WAF缺位、CORS过宽、域名/证书治理
L2 事件层SQS/SNS/EventBridge、Pub/Sub、定时调度、存储事件通知、数据库流事件注入、公开主题/队列、事件规则被篡改(持久化)、跨账号事件投毒
L3 计算层函数运行时、执行环境、Layer、容器镜像函数隔离强度、运行时版本弃用、资源限额、临时目录滥用、代码与依赖漏洞
L4 编排层Step Functions/Workflows、Durable Functions、回调与状态机状态机任务角色过宽、输入注入、任务令牌泄露、长流程状态污染
L5 后端层(BaaS)S3/DynamoDB/Firestore/Cosmos DB、KMS、消息队列数据权限最小化、公开存储桶、静态与传输加密、密钥归属
L6 治理层IAM、CloudTrail/审计日志、监控告警、Secrets Manager、预算凭证最小化与轮换、审计覆盖、密钥托管、计费护栏与滥用发现

1.2 函数生命周期与执行环境关键事实

理解函数安全必须先理解执行模型。以AWS Lambda官方文档为基准(各平台机制不同但范式一致):

  • 部署形态:代码包(zip,含Layer)或容器镜像(2020年12月起支持);发布不可变版本与可移动别名,回滚以别名切换实现。
  • 执行环境:每个执行环境运行在一个独立的Firecracker微虚机中,与主机及其他租户硬件级隔离;官方文档明确每个执行环境默认串行处理一个请求(部分自定义运行时可通过并发参数调整),事件处理之间环境可能被复用。
  • 文件系统:除/tmp目录外只读;/tmp提供10,240MB临时存储,其内容可能在多次调用间短时保留——官方文档明确警告不可将其作为可靠存储或信任其中的残留数据(本函数写入的临时文件在异常终止时可能遗留,敏感数据写入/tmp即构成泄露面)。
  • 资源约束(官方配额):单次执行最长15分钟(900秒);内存128MB—10,240MB(控制台新建默认128MB),内存决定vCPU配额(1,769MB约对应1个vCPU);同步调用负载上限6MB、异步事件负载上限256KB;默认并发上限每区域1,000。
  • 网络:函数默认具备出站互联网访问能力且无入站监听;接入VPC后失去直接出站能力,改经NAT/Endpoints通信——出站面既是数据外泄通道也是管控抓手。

责任分界提示:以上隔离机制(微虚机、文件系统约束、网络模型)由云服务商维护,属"云自身安全";但每个函数的内存/超时配置、/tmp使用方式、出站目的地、事件源绑定全部为客户责任面——历史云安全事件几乎均发生在客户侧配置,而非平台隔离失效(Capital One 2019年事件的根因是应用侧SSRF与凭证治理,而非AWS平台漏洞)。

02 · 攻击面六域全景

综合OWASP Serverless Top 10(2019)的风险谱系与主流平台配置面,本课题将函数攻击面归纳为六域。下表同时给出六域与OWASP十条风险的映射:

攻击面域典型弱点OWASP Serverless Top 10 映射
访问与调用面函数公网匿名可达(资源策略Principal:*、函数URL AuthType NONE)、API网关无认证、CORS通配SAS-02 失效认证;SAS-03 不安全部署配置
事件与输入面事件注入(对象键、消息属性、Webhook体)、Schema缺失、重试风暴、执行流程操纵SAS-01 注入;SAS-09 执行流程操纵
身份与权限面执行角色通配符权限、跨账号信任滥用、共享角色、长期凭证泄露SAS-04 权限过宽
代码与依赖面存在漏洞的第三方依赖、恶意包投毒、硬编码密钥、危险反序列化SAS-06 第三方依赖;SAS-07 密钥存储不当
配置与资源面环境变量明文敏感信息、超时/内存过度配置、日志未开启或保留期过短、死信队列缺失SAS-03;SAS-05 日志与监控不足
计费资源面无并发护栏被刷流量、无预算告警、凭证泄露后被用于挖矿与垃圾邮件中继SAS-08 拒绝服务与财务资源耗尽
OWASP Serverless Top 10 按成因域归类分布
课题内部定性映射(按风险成因将10条风险归入4域),用于展示风险重心而非统计结论
映射方法:SAS-02/04/07归入身份与权限域;SAS-03/05/08归入配置与资源域;SAS-01/09归入输入与流程域;SAS-06/10归入代码与依赖域。该归类为本课题分析框架,非OWASP官方统计。
900秒
单次执行时长上限
AWS官方配额:超时强制冻结进程——超时配置本身也是计费与可用性护栏(第5、7页)
6MB / 256KB
同步 / 异步负载上限
Lambda官方配额:同步调用6MB、异步事件256KB——大载荷必须走存储引用模式(第5页)
29秒
API Gateway集成超时上限
REST API官方上限29秒;长任务必须异步化或编排拆分(第5页)
10,000RPS
网关账户级默认节流
API Gateway REST API默认账户级节流1万请求/秒——按方法/使用计划再细分是基线要求(第5页)

03 · 默认配置高危点清单

函数平台的设计哲学是"最快跑通"——默认配置面向开发便利而非生产安全。以下清单来自各平台官方文档的行为描述与公开安全基线,是新建函数时最常见的危险出厂状态:

编号高危默认配置风险机理基线处置
D1资源策略允许公网匿名调用Lambda资源策略Principal设为*、或函数URL AuthType=NONE,函数直接暴露互联网资源策略显式列举主体;函数URL默认IAM型并纳入审计
D2执行角色模板化宽权限部分部署模板为省事赋予arn:aws:iam::aws:policy/AdministratorAccess或通配符服务权限一函数一角色,从拒绝开始按需放行(第3页)
D3环境变量明文存密钥DescribeFunctionConfiguration/GetFunction对角色可读;日志与异常栈常回显环境变量高价值密钥迁移Secrets Manager/Key Vault类托管服务(第3页)
D4未配置死信队列/失败目标异步事件默认重试2次后静默丢弃,注入或故障事件不可审计全部异步函数配置DLQ或Destinations(第5页)
D5日志未开启或保留期过短函数日志默认保留期有限;无法满足《网络安全法》第21条"网络日志留存不少于六个月"合规要求集中日志库显式设置保留期≥6个月(第7、8页)
D6API网关无节流与使用计划账户级默认节流被单个函数耗尽,计费面被刷方法级节流+Usage Plan配额+预算告警三件套(第5、7页)
D7事件源侧策略公开SQS队列/SNS主题/S3桶策略允许匿名投递,攻击者绕过网关直接向函数喂毒事件事件源侧按主体最小化,桶默认私有(第5页)
D8函数无并发护栏单个失控函数可吃满账户级1,000并发,拖垮同区域全部函数关键函数预留并发上限;熔断时置0(第7页)

04 · 典型案例剖析(事件档案)

时间事件关键事实与函数安全启示
2019.3—7Capital One数据泄露应用SSRF获取EC2实例元数据中的临时角色凭证,进而读取S3数据(约1亿美国+600万加拿大客户记录)。函数场景同构风险:Lambda虽无EC2式实例元数据服务(IMDS),但函数代码中硬编码的凭证、事件注入获取的执行角色临时凭证、以及出站SSRF读取内网元数据服务(如自建服务暴露的凭证端点)构成同构链路——凭证治理与出站控制是第一防线。
2020.12Log4Shell(CVE-2021-44228)CVSS 10.0。AWS官方博客(2021年12月)明确分层处置:托管Lambda运行时已修复并发布热修补层,但函数自带依赖(fat-jar内的log4j-core)仍需客户自行升级。"平台已打补丁"与"我的依赖已打补丁"之间隔着整个供应链责任面(第6页)。
2023.1Denonia(Cado Security披露)首个公开针对AWS Lambda执行环境的恶意软件样本:x86_64 ELF二进制,运行XMRig门罗币挖矿程序,通过DNS over HTTPS(Cloudflare/Google DoH端点)解析矿池域名以规避传统DNS检测,样本内含Lambda环境探测逻辑;部署途径推测为凭证泄露。启示:①函数是直接的攻击目标而非跳板;②出站DNS可见性是检测命门;③凭证泄露→批量部署→挖矿的链路真实存在(第7页深度剖析)。
2020—2022函数与边缘服务被用于钓鱼托管多项公开报告披露攻击者滥用云函数、函数URL与对象存储静态托管搭建钓鱼页面与跳转基础设施,利用云域名信誉绕过邮件网关拦截。与主课题"云基础设施与反钓鱼治理"联动:函数URL与API网关已成为低成本钓鱼托管面,处置需依赖云厂商滥用举报通道与分钟级下架联动。

05 · 典型攻击路径图谱

将公开事件与研究文献中的攻击手法串成一条七步路径,每一步标注对应的平台审计事件(以AWS CloudTrail为例,便于检测章节直接映射):

阶段攻击动作说明平台侧可见信号(CloudTrail事件)
1侦察与资产发现枚举云域名、网关端点、函数URL(格式可预测),识别技术栈与公开面—(被动);后续扫描会在网关访问日志留痕
2未授权调用 / 事件注入匿名调用公开函数,或经S3对象键/消息属性/Webhook体注入恶意载荷函数日志异常;网关4xx/5xx突增
3权限探测与凭证窃取探测执行角色权限边界;从环境变量/配置/出站元数据端点窃取凭证ListFunctions/GetFunction调用激增;角色AssumeRole记录
4数据访问与外泄利用角色权限读取S3/DynamoDB,经出站连接外传数据事件日志(S3对象级)需显式开启;GuardDuty异常
5持久化新增定时规则/事件源映射、修改函数代码、创建后门函数版本CreateFunction/UpdateFunctionCode/PutRule/CreateEventSourceMapping事件(第7页重点检测场景)
6资源滥用挖矿(Denonia)、钓鱼托管、垃圾邮件中继、刷账单异常DNS/矿池连接、账单异常、并发打满
7痕迹清理删除日志、停用检测器、删除函数别名混淆回滚DeleteLogGroup/StopLogging类事件——本身即高危信号
函数攻击链七阶段与防御映射
每一阶段的防御控制点分散在本课题第3—7页,检测映射见第7页检测场景库
说明:攻击链为公开事件与研究文献的归纳框架,用于防御映射,不含可复用攻击细节。

本节参考来源(第2页)

以下均为真实可查的权威来源,用于支撑本页事实性表述。

[1]

OWASP《Serverless Top 10》(2019年)风险条目:SAS-01至SAS-10:owasp.org/www-project-serverless-top-ten。

[2]

AWS Lambda官方文档(执行环境与生命周期、文件系统/tmp行为、并发模型):Lambda execution environment;Lambda quotas。

[3]

AWS官方博客:Lambda函数URL发布(2022年4月):Announcing AWS Lambda Function URLs。

[4]

AWS API Gateway官方文档(节流默认值、集成超时29秒上限):API Gateway开发者指南。

[5]

Capital One事件:公司披露与美国司法部起诉材料:justice.gov。

[6]

AWS Security Blog:如何应对Log4Shell对Lambda函数的影响(2021年12月,含托管运行时修复与热修补层说明):AWS Security Blog。

[7]

Cado Security:Denonia恶意软件分析(2023年1月):Cado Security官方博客。

[8]

MITRE ATT&CK Cloud矩阵(攻击阶段映射参考):attack.mitre.org。