核心安全威胁
- 事件数据注入:Serverless 函数常由事件(S3 上传、API Gateway 请求、消息队列)触发。攻击者在事件载荷中嵌入恶意数据(如 SQL 注入、命令注入),因函数开发者常假设事件数据是可信的。
- 过度授权 IAM 角色:函数被授予远超其实需的云 API 权限——违反最小权限原则。一个函数只读 S3 却拥有 s3:*,一旦函数被攻破,攻击者可横向扩展至全 S3 操作。
- 冷启动数据泄露:函数实例在请求间可能被重用,如果内存未通过平台级沙箱正确清零,后续调用可能读取前一调用的敏感数据。
- 供应链风险:攻击者投毒恶意 Lambda Layer,或通过 NPM/PyPI 依赖在函数构建管道中注入恶意代码。
- Serverless DoS:利用函数并发上限(如 AWS Lambda 默认 1000 并发)发动应用层拒绝服务——与传统容量型 DDoS 不同,这种攻击成本极低且传统网络层防御无效。
防御策略
- 函数级 IAM 最小权限:每个函数授予最小必要权限,定期审查 IAM Access Advisor。
- 输入校验:对来自事件源的所有数据进行严格的输入校验和净化——不信任任何事件载荷。
- 依赖项安全:定期扫描函数依赖项中的已知 CVE;锁定依赖版本;避免引入不必要的第三方库以减少攻击面。
- 机密管理:使用云厂商的密钥管理服务(AWS Secrets Manager / Azure Key Vault),不将密钥硬编码在函数代码或环境变量中。
- 可观测性:启用函数执行日志(CloudWatch / Azure Monitor)+ 异常行为告警 + 分布式追踪。