AWS 被曝无预警删除资深开源开发者十年账户,数据永久丢失引发行业震动。
2025 年 7 月 23 日,一位活跃于 Ruby 社区、使用 AWS 达十年的资深开源开发者 Abdelkader Boudih(网名 Seuros)公开披露,自己在 AWS 上运行超过十年的账户被 AWS MENA(中东与北非)区域团队以“验证失败”为由突然永久删除。
所有存储数据、快照、备份乃至跨区域副本一并清空,无通知、无宽限期、无恢复选项。
这起事件在开源技术社区引发广泛讨论,被称为“云平台删除权限滥用的典型案例”。
事件概况
据 Seuros 本人描述:
事件发生于其生日当天(2025 年 7 月 23 日),AWS 删除了其账户及其所有数据;
删除前 AWS 曾在 7 月 10 日发起身份验证请求,设定 5 天截止;
他在 7 月 21 日提交清晰有效的身份证明与账单,但 AWS 随后以“文档无法读取”为由拒绝;
7 月 23 日账户被直接删除,其后客服拒绝说明数据是否仍存在;
在 20 天内反复沟通后,AWS 最终承认资源已全部终止,并请求其为客服支持评分。
值得注意的是,该账户中不仅存有关键测试数据,还包括逾 20 个 Ruby gem 项目代码、多年积累的教学内容、书稿、未发布框架等。
Seuros 本人说法:
没有违规使用;长期使用信用卡付费,没有拖欠;唯一可能问题是“支付方式非本人名下”,AWS 要求验证身份时操作流程混乱,客服说明不一致。
我也申请了只读访问权限以备份数据。
请记住:如果我是诈骗分子,我早就在验证截止前复制完全部内容了。但 AWS 拒绝了这个请求。(因为很可能数据那时已经被删除)
AWS 将账户终止归咎于一个“第三方支付人”的问题。
该支付人是一位 AWS 顾问,过去一年一直代为支付每月约 200 美元的测试费用。
Seuros 表示,这名顾问因 FTX 崩盘遭遇损失并失联。
AWS 在要求支付人身份验证失败后,拒绝切换回 Seuros 原本绑定并长期启用的 Wise 信用卡,理由是“隐私合规”,但同时将账户终止的后果完全归咎于用户。
Seuros 认为这并非真正的付款问题。
如果真的是账单问题,AWS 原应切换回现有的用户信用卡;暂停服务而非删除数据;遵循其官方文档中承诺的“90 天数据保留期”。相反,AWS 利用支付人问题作为借口,掩盖了其内部测试操作误删账户的事实。
AWS 官方政策 vs 实际行为
根据 AWS 官网公开文档:
用户主动关闭账户后,AWS 提供 90 天宽限期,期间数据保留可恢复;
账户永久关闭前应发送明确通知;
含有付款纠纷或验证问题的账户,并无明文规定立即删除数据。
但在 Seuros 的案例中:
并非用户主动关闭账户,而是 AWS 以“验证失败”直接终止账户;
未提供任何 90 天宽限期或临时访问权限;
跨区域备份、逻辑隔离 Vault、多副本快照在账户删除后一并被清空。
该行为违反了 AWS 自身服务指南的基本容错保障原则,引发外界对其“区域分部拥有绝对权限”以及“数据销毁透明度缺失”的担忧。
删除范围与后果详解
Seuros 表示,他在账户中存放了下列关键数据与资源:
这些项目广泛被用于生产系统,也有部分组件可能在 AWS 内部系统或客户环境中运行。
数据全部丢失:所有 S3 存储对象;所有 EC2 快照与实例;所有 AWS Backup 多区域备份; 所有数据库、DNS(Route 53)、IAM 配置。
无任何保留期、无法恢复。
被删除的不仅是主区域数据,即使设置了跨区域备份、逻辑隔离、备份保留策略,也一并被彻底销毁。
“我做了多区域备份,有冗余机制,数据在美国和欧洲都有镜像,唯一没考虑的失败点就是——AWS 本身就是单点故障。”
随着账户销毁,全部工作内容“在数字意义上彻底湮灭”。
Java 参数误用或为根因
事件曝光后,有匿名 AWS 内部工程师联系 Seuros,并指出:
MENA 区域正在运行一项“低活跃账户回收”试验;
脚本原计划 dry-run 测试,执行参数应为 --dry;
但该脚本为 Java 编写,仅识别 -dry,导致 --dry 被忽略,直接在生产中执行了删除;
该过程未设置人工审查、未提供可回滚机制。
上述爆料虽未经 AWS 官方证实,但社区认为极具可信度,亦解释了为何多位用户在同一时间段遭遇账户删除。
在 Seuros 公开事件后,一位 AWS 内部员工匿名透露,AWS MENA 区域当时正在测试一套针对“低活跃账户”的资源清理系统(PoC)。执行脚本的开发者在命令中加入了 --dry 参数,意图执行一次 dry-run(模拟运行),以预览删除效果、避免真实变更。
这种参数在现代命令行工具中广泛使用,例如 Git、Terraform、AWS CLI 等,格式为双破折号 --dry-run 或简写为 --dry,代表“仅做演练,不实际删除”。
但问题在于,该内部工具基于 Java 编写,而 Java 的命令行解析机制通常只识别单破折号参数(如 -dry)。因此 --dry 参数被系统忽略,dry-run 功能根本没有被激活,脚本最终在生产环境中真实删除了用户账户和数据。
接下来的部分进入技术细节。
负责测试的开发者在命令中输入 --dry 参数,意图执行 dry-run(模拟执行),这在现代命令行工具中是通用的标准做法,例如:
但 AWS 内部工具是用 Java 编写的。而 Java 使用的是单破折号参数格式:
因此,当开发者传入 --dry 给 Java 应用时,该参数被忽略。最终脚本在生产环境中被真实执行,导致账户被删除。
一句话总结:“开发者本意是运行 dry-run 模拟测试,但因为 Java 1995 年风格的参数解析机制,模拟执行被当成了真实删除。”
比喻:在现代命令行工具里,输入 --dry-run 意味着“演练一下,不动真东西”;但 AWS 内部使用的工具基于老旧的 Java 风格,只识别 -dry。于是这枚看似安全的“假按钮”,在后台根本没人接收命令,结果直接触发了真操作 —— 把账户和数据炸成了灰。
AWS MENA 区域争议由来已久
据 Reddit、Facebook 等开发者社区大量记录:
多年来,开发者不惜额外支付溢价,专门寻求非 MENA 区域账单地址;
AWS MENA 曾被曝“可在无解释情况下中止服务”、“客服响应缓慢”、“技术支持权限不足”;
一些受害者称曾因小额账单、身份验证等问题遭遇类似封禁,但此前从未有公开记录如此彻底的数据销毁。
开发迁移工具,推动客户集体转移
Seuros 表示,他正在开发一款免费的 AWS 迁移与数据清理工具,帮助个人开发者和中小团队快速导出数据与架构配置,并迁移至其他云平台(OCI、Azure、GCP 等)。
他称:“我手上管理的客户每月 AWS 支出超过 40 万美元,已有数个已同意迁移。”
网友留言2