![]()
每年因为安全配置失误导致的数据泄露,平均损失435万美元。这不是攻击者有多聪明,是防御者总在同一个地方绊倒。
OWASP Top 10这份清单已经更新了十几年,AWS上的架构师们却还在犯着"访问控制少写一行校验""加密配置拖到上线后""输入验证全靠前端"的老毛病。本文用AWS真实场景拆解这10类漏洞,看完能直接改配置。
Day 1:失效的访问控制——IAM策略写错一行,全线崩溃
AWS上最常见的访问控制事故,不是没做权限,是做了但做漏了。
某团队给Lambda函数绑了个IAM角色,本意是只读S3某个前缀。结果策略写成"Resource": "arn:aws:s3:::company-data/*",星号一挂,全桶裸奔。攻击者拿到函数密钥后,把客户备份打包下载了。
修复方案分三层:
最小权限原则:给Lambda单独建角色,S3前缀精确到日期层级,比如/*2024-01/*,就算泄露也限死在单月数据。
API Gateway层加授权:别指望后端自己验。用Cognito用户池或Lambda授权器,在入口就把没JWT的请求拦下。
CloudTrail开起来:不是摆设。设告警规则,检测到GetObject来自非预期IP或异常时间,直接SNS推送到值班群。
IAM策略编辑器里那个"可视化"按钮,点进去看看实际生效的权限,比事后查日志管用十倍。
Day 2:加密失败——S3默认加密开了,但密钥管理裸奔
S3桶加密默认开启后,很多团队以为高枕无忧。问题出在密钥轮换和访问日志。
KMS客户主密钥(CMK)如果三年没轮换,离职员工手里的旧权限可能还在。更隐蔽的是,有人用AWS托管密钥(aws/s3)而非自建CMK,导致无法审计谁解密过哪些对象。
实操检查清单:
进KMS控制台,看每个CMK的"轮换"列是否为"启用"。没开的,点一下,AWS自动每年换新。
S3桶策略里加一条Condition:要求所有加密请求必须指定KMS密钥ID,防止降级到SSE-S3。
CloudWatch Logs开字段级加密,用KMS加密日志内容。否则日志本身成为泄露通道——攻击者不用碰数据库,读日志就够了。
ALB和NLB的TLS证书别只检查过期时间。用AWS Certificate Manager的"托管续期",同时开TLS 1.3,禁用1.0/1.1。扫描工具里,1.1以下协议直接报高危。
Day 5:安全配置错误——ECS任务定义里的隐藏炸弹
AWS每年发布的安全公告,三分之一跟默认配置有关。ECS和EKS是重灾区。
典型场景:任务定义里networkMode设为host,容器直接绑定宿主机网络。一个容器被攻破,整个EC2实例的网络栈暴露。还有人在任务角色里塞AmazonEC2FullAccess,"先跑起来再说",结果容器里执行AWS CLI能关掉整个VPC。
修复动作:
ECS用awsvpc模式,每个任务独立ENI,网络隔离到子网级别。代价是多几个IP地址,收益是攻破一个容器拿不到邻居。
任务角色用IAM Roles for Tasks,权限细到API级别。需要DynamoDB只读?只给dynamodb:GetItem和Query,Scan都不给。
ECR镜像扫描开起来,基础镜像用Amazon Linux 2023或Distroless,别从Docker Hub拉latest标签。扫描报告里的CVE,设SNS通知,高危镜像禁止部署。
Security Hub的CIS AWS Foundations Benchmark检查,每周跑一遍。失败的控件,自动开Ticket到Jira。
Day 6:漏洞组件——Lambda层里的祖传依赖
Lambda函数冷启动慢,团队把常用库打包成层(Layer)共享。三年后,这个层里的requests库还是2.25.0,CVE编号攒了十几个。
AWS没有自动更新Layer的机制。你的函数跑得好好的,底层漏洞在暗网被公开利用。
应对策略:
Layer版本化,每次更新打新语义版本。函数配置里锁定版本号,别用$LATEST。CI/CD流水线里加一步:用Snyk或OWASP Dependency-Check扫描Layer内容,高危阻断发布。
容器场景更麻烦。EKS里跑的应用,Helm Chart引用的subchart可能嵌套五层。用helm dependency list和trivy image组合扫描,输出SBOM(软件物料清单)存S3,供审计追溯。
Systems Manager的Patch Manager给EC2打补丁,但容器节点别忘。EKS托管节点组开"自动更新",但要在维护窗口期,避免业务高峰重启。
Day 7:身份认证失效——Cognito配置里的"看起来对了"
Cognito用户池配了MFA,但只设成"可选"。用户嫌麻烦不绑,攻击者用泄露密码直接登。
更隐蔽的:令牌过期时间设成365天,刷新令牌永不过期。用户三年没登的账号,凭证还在生效。
硬配置建议:
MFA设"必需",至少TOTP。敏感操作(改密码、删数据)加自定义挑战,发邮件或短信二次确认。
访问令牌1小时,刷新令牌7天。用Cognito的令牌撤销端点,检测到异常IP立即作废会话。
ALB的OIDC认证别只配Google。企业场景用Okta或Azure AD,开SAML断言加密,防中间人篡改。
API Gateway的Lambda授权器里,别只验JWT签名。 payload里的aud(受众)字段必须匹配你的API ID,防止令牌被拿到其他服务重用。
Day 8:软件与数据完整性失效——CodePipeline里的供应链攻击
SolarWinds之后,"构建即攻击面"成了共识。AWS上的CI/CD管道,每个环节都可能被投毒。
场景:CodeBuild项目从GitHub拉代码,但Webhook没验签名。攻击者伪造push事件,触发构建,把恶意镜像推到ECR。
防御纵深:
CodeCommit或GitHub Enterprise开分支保护,合并必须两人审批。CodeBuild用VPC终端节点,流量不走出AWS网络。
镜像签名用AWS Signer或Notary,EKS准入控制器验签,无签镜像拒绝调度。
S3桶存构建产物,开对象锁定(Object Lock)和MFA删除。即使账号被盗,72小时内无法覆盖关键版本。
Lambda代码用AWS SAM或CloudFormation打包,模板里指定运行时版本(python3.11而非python3.x),避免自动升级引入不兼容变更。
Day 9:日志与监控失效——CloudWatch没开,等于裸奔
80%的入侵在发生后数月才被发现,因为日志没集中、没分析、没告警。
AWS默认日志分散在各服务:VPC Flow Logs、ALB访问日志、CloudTrail管理事件、Route 53查询日志。没做整合,攻击者删了CloudTrail,你都不知道自己不知道。
最小可行监控栈:
CloudTrail开组织级跟踪(Organization Trail),所有成员账号的事件集中到管理账号的S3桶。桶开对象锁定,IAM策略禁止根账号删除。
GuardDuty开起来, findings自动推Security Hub。高危项(如IAM凭证在Tor出口使用)直接Lambda调PagerDuty。
VPC Flow Logs送到S3,Athena做查询。异常模式:单个EC2对外的连接数突增(C2通信),或DNS查询指向已知恶意域名。
CloudWatch Logs Insights写几条常用查询存起来:比如"统计非白名单IP的Console登录失败次数",每周人工抽查。
Day 10:服务端请求伪造(SSRF)——元数据服务的经典陷阱
AWS的IMDS(实例元数据服务)是SSRF攻击的甜蜜点。旧版IMDSv1没鉴权,应用有SSRF漏洞就能拿到临时凭证。
攻击链:用户输入URLhttp://169.254.169.254/latest/meta-data/iam/security-credentials/role-name,应用代为请求,返回的AK/SK直接可用。
IMDSv2强制会话认证,但2023年还有35%的EC2实例开着v1回退。检查方式:
CLI执行aws ec2 modify-instance-metadata-options --instance-id i-xxx --http-tokens required --http-endpoint enabled,强制v2。
Lambda和ECS没有IMDS,但别高兴太早。应用如果跑在VPC里,能访问的內网服务(ElastiCache、RDS、内部API)都是SSRF目标。
网络层隔离:敏感服务放私有子网,安全组只放行特定CIDR。应用层用URL白名单,拒绝任何内网IP段(10.0.0.0/8等)的请求。
WAF规则加一条:检测User-Agent包含AWS-Security-Token-Service或类似元数据特征,直接阻断。
防御纵深:WAF不是万能,但缺了它不行
前面讲的都是服务原生配置。现实企业里,多层防御是标配。
AWS WAF托管规则集覆盖OWASP Top 10的基础模式:SQL注入、XSS、路径遍历。但自定义规则才是价值所在。
场景:你的API有特定业务逻辑,比如/transfer接口的amount参数,正常用户不会超过1万。WAF规则:该参数数值型且>50000,计数并告警,连续3次直接阻断IP。
高级场景用F5 Distributed Cloud或类似方案,在边缘做行为分析。同一IP短时间内遍历大量用户ID,即使每次请求都合法,也触发速率限制+CAPTCHA。
关键认知:WAF规则需要调优。开"仅计数"模式跑两周,看误杀率,再切"阻断"。直接上线规则,业务报警会教你做人。
CloudFront + WAF + Shield Advanced的组合,DDoS防护和Bot管理一体化。但别因此放松源站保护——绕过CDN直接打源IP的攻击,每月都在发生。
你的CloudFormation模板里,有多少个*FullAccess策略?有多少个S3桶的Block Public Access是关闭的?今晚扫一遍,数字可能让你睡不着。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.