一个“@”引发的“reply-all 事件”:让 GitHub 变身发骚扰邮件的“僵尸网络”!近 40 万开发者受影响

简介: 一个“@”引发的“reply-all 事件”:让 GitHub 变身发骚扰邮件的“僵尸网络”!近 40 万开发者受影响

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

image.png

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

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

image.png

但在这样做的过程中,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 请求的通知邮件。

image.png

同时,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 等知名社区被大量开发者热议。

image.png

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

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

image.png

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

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

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

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

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

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

image.png

“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 优化机制的问题我们也将持续关注。如果您对此事件有任何看法,也欢迎在评论区留言互动。

参考链接:https://github.com/EpicGames/...

相关文章
|
3月前
|
存储 JSON 运维
【运维】Powershell 服务器系统管理信息总结(进程、线程、磁盘、内存、网络、CPU、持续运行时间、系统账户、日志事件)
【运维】Powershell 服务器系统管理信息总结(进程、线程、磁盘、内存、网络、CPU、持续运行时间、系统账户、日志事件)
49 0
|
3月前
|
自然语言处理 算法
【论文精读】COLING 2022 - CLIO: 用于文档级事件抽取的角色交互多事件头注意力网络
【论文精读】COLING 2022 - CLIO: 用于文档级事件抽取的角色交互多事件头注意力网络
|
3月前
|
机器学习/深度学习 自然语言处理 算法
【论文精读】COLING 2022 -带有对偶关系图注意力网络的事件检测模型
【论文精读】COLING 2022 -带有对偶关系图注意力网络的事件检测模型
|
4月前
|
存储 搜索推荐 Java
开发者热议GitHub代码搜索政策,最佳搜索解决方案探索
近日,名为koepnick 的开发者因在一台老式电脑上使用GitHub 搜索自己的存储库代码,却没有手机等设备协助验证,导致无法登录GitHub 账户,发文怒斥GitHub:如若没有登录,就无法使用搜索代码服务,与其这样不如弃用。 其实,早在今年6月,GitHub 官方便发布了一封《代码搜索现在需要登录》的公告内容,官宣除了在 GitHub.com 上全局搜索代码已经需要用户登录的政策之后,自 6 月 7 日起,这一政策将其扩展为包括存储库范围的搜索。即要访问 GitHub 的新代码搜索和代码导航的全部功能,需要创建账户或登录 GitHub.com。
|
4月前
|
机器学习/深度学习 人工智能 测试技术
软件测试/人工智能|GitHub Copilot:开发者新利器
软件测试/人工智能|GitHub Copilot:开发者新利器
85 0
|
5月前
|
算法 网络协议 Java
48W字?GitHub上下载量破百万的阿里:图解Java、网络、算法笔记
Java基础这个东西,无论在哪个公司都被看得尤为重要,而面试中关于基础的问题也是层出不穷。所以基础可以说是重中之重,当你的基础打牢了,其他的也就没有那么重要了。
|
6月前
|
Java 开发工具 开发者
开发者必看!GitHub爆火的lntelliJ IDEA软件开发手册堪称又一神作
lntelliJ IDEA是一款优秀的软件开发工具,学习和掌握IntelliJ IDEA对于开发者来讲具有十分重要的意义。
56 0
|
7月前
|
Java 开发工具 开发者
开发者必看!GitHub爆火的lntelliJ IDEA软件开发手册堪称又一神作
lntelliJ IDEA是一款优秀的软件开发工具,学习和掌握IntelliJ IDEA对于开发者来讲具有十分重要的意义。 图片来自网络 今天给大家分享的这份手册以IntelliJ IDEA的操作及使用为主线,同时贯穿示例教学,全面地向你展示其强大的开发与管理能力。 内容展示: 第1章与第2章讲解IntelliJ IDEA的使用技巧; Windows下安装IntelliJ IDEA 第3章主要讲解IntelliJ IDEA中的工程结构及组织方式; 第4章与第5章系统讲解IntelliJ IDEA下项目的编译、部署、运行与调
|
7月前
|
网络协议 架构师 数据中心
GitHub已标星93K!网易首席架构师闭关3月撰写1200页网络协议笔记
网络协议介绍 网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。
|
7月前
|
消息中间件 存储 负载均衡
对于钉钉OA事件订阅出现的网络波动导致的通知丢失问题
对于钉钉OA事件订阅出现的网络波动导致的通知丢失问题
86 1