徐九 · 2022年06月10日

一个“@”引发的“reply-all 事件”:近 40 万开发者受影响

近日,一位 18 岁的新手因向 GitHub 仓库提交 PR(Pull Request,Pull 请求),结果一个“@”让 GitHub 变身“僵尸网络”向近 40 万开发者狂发骚扰邮件的“reply-all 风暴”热度席卷了开源圈。

一个“@”,让 40 万开发者共收到 6000+ 万封电子邮件

据悉,这位新手名叫 Rohith Sreedharan ,起初本来是想向游戏公司 Epic Games 的 GitHub 存储库推送一个虚假的 Pull 请求(向 UE 提交新代码)以获取一些贡献历史记录(试图在自述中更改 3 个单词)来“练练手”。

但在这样做的过程中,Rohith Sreedharan 为了让自己提交的 PR 尽快被合并,他在评论中 (“@”)了与 Epic Games 组织相关的所有开发者,其中就包括加入该组织以查看虚幻引擎(Unreal Engine)源代码的任何人。

结果,他的“@EpicGames/developers”这一操作触发了 reply-all 事件:向加入 Epic Games 组织的所有 GitHub 用户发送关于此 PR 的邮件通知。

也就是说,Rohith Sreedharan 错误地“@”了与 Epic Games 组织相关的所有开发者,即加入该组织以查看虚幻引擎(Unreal Engine)源代码的任何人。

结果,这个“@”一下子导致了大约 40 万使用虚幻引擎 (Unreal Engine) 的开发者收到了来自 GitHub 有关此 Pull 请求的通知邮件。

同时,Rohith Sreedharan 的这个操作还让所有这些开发者们都订阅到 Pull 请求的注释线程 —— 即只要这 40 万名开发者中有人对 Rohith Sreedharan 的 Pull 请求进行评论,那么这条评论也会被以邮件的方式通知并发送给其他 Epic Games 组织的所以成员,由此引发邮件“轰炸”事件。

关键是,Rohith Sreedharan 提交的这个 Pull 请求倍开发者发现存在着不少问题,因此又引发了大量评论及相应的邮件通知。不幸的是,电子邮件通知中的退订链接实际上并没有退订用户的 Pull 请求,因此不少开发者都收到了 150 多封电子邮件,更有甚者收到了多达 200-400 封邮件。

也就是说, GitHub 当天晚上共发送了 6000+ 万封的电子邮件。

随着该邮件“轰炸”事件的不断发展,终于有开发者发现了退订该 Pull 请求的方法 —— “右栏中位于底部、参与者列表的正上方有一个‘退订’按钮,单击它并忽略即将传入的大量通知。”

到了这里,Epic Games 也才了解到事情的来龙去脉,并立即锁定了该 Pull 请求,关闭了其评论功能,才终于结束了这场“闹剧”。

GitHub 邮件机制受质疑

目前,此次事件已经在 reddit、Hacker News 等知名社区被大量开发者热议。

其中,在 reddit 上一位名为@TomSwirly 的开发者就对此事件表示愤慨,表示“我敢打赌,在这 40 万开发者中,有很多是初学者,如果我是初学者,我很容易浪费很多时间去弄清楚到底发生了什么。”但是“走开,垃圾邮件发送者,不管你是谁。”

此外,在 linustechtips 上也有名为 @trag1c 的开发者对此次事件以及该事件的“始作俑者” —— 新手 Rohith Sreedharan 进行了点评:

“老实说,我不知道是该称这孩子为“传奇”还是“脑残”(可能两者兼有)。假设这孩子正试图在软件开发领域找到一份工作,有可能他在 Github 上有学校项目啥的,他可能认为自己可能会对一些项目做出虚假承诺,试图说自己对一些复杂的大型项目做出了贡献,比如虚幻引擎。但他犯了一个致命的错误,即“@”了整个组织,而不仅仅是审查 Pull 请求的人员...可惜的是,这可能不会对他的职业生涯方面有所帮助哦~"

另外一个值得被重视的问题,就是 —— “为什么 GitHub 允许向 40 万人发送邮件通知?”

开发者@trag1c 认为,“真的想不出有什么好的理由允许以这种方式@整个组织,这也是 Epic 隐藏代码的方式的部分问题。为了查看虚幻代码源,你必须加入 GitHub 上的该游戏组织才行,当然该组织也会允许你成为被标记为组织的一部分。但这样的话整个设置都会导致‘灾难’后果,因为您可能可以使用这样的设置使用 GitHub 来对 GitHub 进行 DDOS 攻击..."

同时,还有不少开发者也提出了关于 GitHub 应优化机制的建议,以避免此类事件再次发生。对此,GitHub 高级工程总监 Shay Frendt 也留言回应称:“很抱歉,我们当前的系统设计导致你们陷入这种情况。我们正在努力发布补丁,以尝试中断你们都陷入的反馈循环。”

推特道歉:“我错了,保证以后不会再发生了”

事件发生之后,这位 18 岁的新手开发者终于在 6 月 5 日上推特发文道歉:

“Am extremely sorry, I wasn't knowing that would be tagging a 400k members, Extremely sorry for the spam from whole heartedly, I Apologize to all the team including
@EpicGames
and
@github
, never expected this would happen, thanks for notifying me! I promise it won't happen again”

推文中,他表示对此非常抱歉,称自己不知道这个操作会标记(@)约 40 万成员,对由此产生的垃圾邮件“轰炸”事件发自内心的道歉,并向 @EpicGames 游戏、@github 公司所有团队道歉,“没想到会这样,谢谢你通知我!我保证不会再发生了”。

相信对于这位年仅 18 岁的 Rohith Sreedharan 而言,此次“邮件轰炸”近 40 万开发者的事件,一定会让他学到不少。

目前,有关此次邮件“轰炸”事件的热度在推特及各大开发者社区仍旧持续发酵,关于 GitHub 优化机制的问题我们也将持续关注。如果您对此事件有任何看法,也欢迎在评论区留言互动。

推荐阅读
关注数
4189
内容数
867
SegmentFault 思否旗下人工智能领域产业媒体,专注技术与产业,一起探索人工智能。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息