Minecraft帳戶會話漏洞安全諮詢
基於https://gist.github.com/ajvpot/3115176的自述文件
細節
嚴重程度:高
利用日期:2020年2月25日
公開:2020年3月3日
諮詢:2020年3月3日
漏洞範圍
此漏洞會影響所有Minecraft帳戶。
描述
惡意攻擊者可以使用任何Minecraft帳戶登錄到任何依賴Mojang Specification官方認證服務器的Minecraft服務器,以驗證用戶的真實性。這可以使攻擊者獲得對玩家帳戶的訪問權,從而導致遊戲中的損失,或者使攻擊者可以訪問服務器上的特權帳戶。根據常用服務器的修改,特權帳戶可用於獲取對操作系統的訪問權,或對計算機上的數據造成嚴重破壞,其中包括但不限於與Minecraft服務器一致的通用軟件和數據,例如:
服務器映射文件
操作系統文件
玩家資料
數據庫和網絡服務器數據
專有服務器修改和源代碼
再生產
該漏洞似乎是由於使用舊版Minecraft身份驗證API登錄服務器時無法驗證帳戶對會話令牌的所有權而導致的。joinSession.jsp將接受來自另一個帳戶用戶名的任何有效會話ID,只要該會話ID有效即可。
要重現此問題,攻擊者需要按照以下步驟操作。
使用任何帳戶登錄到Minecraft。
與其使用Mojang的現代連接服務器身份驗證API,不如使用舊版身份驗證API。用任何有效的用戶名替換發送給api的用戶名。
解析度
Mojang規範需要在身份驗證級別修復此漏洞,無法在本地服務器上解決此漏洞。
減輕
無法直接保護您的帳戶不受此攻擊。如果您是一名玩家,那麼最好的防禦方法就是隱藏所有物品並殺死自己以產生自己,同時讓您的朋友知道您帳戶中的任何人都可能不是您。作為服務器管理員,我們建議通過配置WorldGuard主機密鑰或使用2FA插件(例如MCAuthenticator)依靠附加的防禦層(2因子身份驗證)。
總結思想
如果這一切聽起來很熟悉,那是因為與2012年7月發生的漏洞利用完全相同,只是這次漏洞影響了所有Minecraft帳戶,無論遷移狀態如何。
當其他人在我們運行的Minecraft服務器中使用此錯誤時,我們發現了該錯誤,並決定了解它如何對自己起作用。該服務器在仍舊使用舊版身份驗證API的Minecraft的舊版本上運行。一個玩家發現他可以在一個老的被入侵的Minecraft客戶端中使用“離線模式帳戶切換器”來更改他的用戶名,並成功使用該用戶名加入服務器。話雖如此,我們無法確認此錯誤在Mojang的舊式身份驗證API上存在了多長時間。它可能已經存在了幾個月了...誰知道呢?
為了方便使用此漏洞,我們修改了流行的Forge修改ReAuth以實現舊版服務器加入API,並更改了用戶界面,使其僅顯示用戶名字段並顯示我們要連接的IP地址。只需輸入用戶名而不輸入密碼即可登錄任何帳戶,這看起來很酷。
不幸的是,我們錯誤地認為ReAuth是根據許可許可進行許可的,但事實證明它是“保留所有權利”,因此我們在不違反作者許可的情況下,無法將源代碼盡可能多地發佈到我們的fork中條款。
link:https://github.com/nerdsinspace/leaky-leaky