一個“@”引發的“reply-all 事件”:讓 GitHub 變身發騷擾郵件的“殭屍網路”!近 40 萬開發者受影響

MissD發表於2022-06-11

近日,一位 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 優化機制的問題我們也將持續關注。如果您對此事件有任何看法,也歡迎在評論區留言互動。

參考連結:https://github.com/EpicGames/...

相關文章