一個“@”,讓 40 萬開發者共收 GitHub 的 6000+ 萬封垃圾郵件“轟炸”
?近日,一位 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 請求的方法 —— “右欄中位于底部、參與者列表的正上方有一個‘退訂’按鈕,單擊它并忽略即將傳入的大量通知?!?/p>
到了這里,Epic Games 也才了解到事情的來龍去脈,并立即鎖定了該 Pull 請求,關閉了其評論功能,才終于結束了這場“鬧劇”。
GitHub 郵件機制受質疑?
目前,此次事件已經在 reddit、Hacker News 等知名社區被大量開發者熱議。
其中,在 reddit 上一位名為@TomSwirly 的開發者就對此事件表示憤慨,表示“我敢打賭,在這 40 萬開發者中,有很多是初學者,如果我是初學者,我很容易浪費很多時間去弄清楚到底發生了什么?!钡恰白唛_,垃圾郵件發送者,不管你是誰?!?/p>
此外,在 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 優化機制的問題我們也將持續關注。