熱門游戲Pokémon GO可通過令牌獲取用戶谷歌賬戶的完整賬戶訪問權限,而不需要用戶許可。
前不久Pokémon GO移動應用發布后,該游戲的開發商Niantic公司被迫修復該應用的iOS版本,因為安全研究人員報告稱該游戲自身會安裝令牌,并獲取對其谷歌賬戶的完全訪問。雖然該App本身不能執行這種訪問,但這個漏洞帶來了令牌交換攻擊的風險。
安全公司RedOwl Analytics首席架構師Adam Reeve稱,當他使用其谷歌賬戶開始玩Pokémon GO時,他希望看到“該app將訪問哪些數據”或者“該app將查看你的電子郵件地址和姓名”的彈出消息,但他沒有看到任何這樣的消息,隨后在他查看該游戲訪問權限時感到非常震驚,他看到“Pokémon GO可完全訪問用戶的谷歌賬戶”。
Pokémon GO允許通過Pokémon Trainer Club網站或使用谷歌賬戶登錄;然而,Pokémon Trainer Club因大量新注冊用戶不堪重負,而暫停注冊,讓用戶只有一個選擇:使用谷歌賬戶登錄。這種完整權限訪問僅發生在iOS版的該應用中;Android用戶沒有受到影響。
Niantic承認了這個錯誤并解釋稱,盡管Pokémon GO得到了完全訪問令牌權限,但該應用并不能訪問所有谷歌賬戶信息。
“我們最近發現,iOS系統中Pokémon GO賬戶創建過程錯誤地要求用戶谷歌賬戶的完全訪問權限,”Niantic在其網站寫道,“但是,Pokémon GO只會訪問基本的谷歌賬戶信息(即用戶ID和電子郵件地址),不會對其他谷歌賬戶信息進行訪問或收集。在我們發現這個錯誤后,我們開始進行客戶端修復,僅請求訪問基本的谷歌賬戶信息,以及我們實際訪問的數據。谷歌已經證實,Pokémon GO或Niantic沒有收到或者訪問其他任何信息。谷歌很快會將Pokémon GO的權限降低到Pokémon GO需要的基本配置文件數據,用戶不需要親自采取任何行動。”
Reeve最初報告稱,Pokémon GO被授予的令牌可讓Niantic讀取用戶的Gmail,作為用戶發送郵件,訪問和刪除Google Drive中的文件。事實上,谷歌自己表示完全賬戶訪問權限允許應用執行很多潛在危險的行為。
“當被授予完全賬戶訪問權限時,該應用可查看和修改谷歌賬戶中幾乎所有的信息(但它不能修改你的密碼、刪除你的賬戶或者以你的名義用谷歌錢包支付),”根據該公司的支持頁稱,“如果你已對不信任的或識別應用授予完全賬戶訪問,建議你點擊撤銷按鈕取消這種權限。”
然而,其他安全專家后來發現,雖然Pokémon GO不能讀取或發送電子郵件,讓該游戲只能查看基本谷歌用戶信息,但該漏洞可能帶來令牌交換攻擊的風險。
Slack公司產品安全高級工程師Ari Rubinstein在GibHub談到了這個漏洞,并指出這個漏洞可能用于交換令牌攻擊。雖然Pokémon GO不能使用其完整賬戶訪問權限來訪問用戶的Gmail和日歷,Rubinstein稱OAuth訪問令牌可被惡意交換為另一個更強大的令牌,被稱為uberauth。這將讓攻擊者能夠打開任何谷歌服務的網絡會話以及獲取真正的完全賬戶訪問權限,這給谷歌的身份驗證系統帶賴了重大的安全漏洞。
Rubinstein指出這種過度權限授權是Niantic和谷歌的錯誤,不過這個權限還沒有被濫用。
“即使只是最初建議,也很難使用這種權限,因為這種使用類型不是編程的(除非有另一個隱藏的API來授予API令牌)。省略這個范圍讓身份驗證被視為“基本用戶信息”而不是“完整賬戶權限”,Niantic可能會更新客戶端。身份驗證流程很混亂,并且,谷歌應該了解,使用這個范圍來登錄可能讓令牌被交換。在我看來,谷歌不應該將這種權限范圍給予非谷歌應用。”
Niantic此前屬于谷歌,去年它作為獨立實體從谷歌分離出去。目前我們還不清楚Niantic如何獲得這種OAuth范圍以及繞過權限通知(通常應用獲取完整賬戶權限都會有這種通知)。網絡公司Trail of Bits公司首席執行官Dan Guido表示,他和安全研究人員Jay Little試圖在谷歌的OAuth Playground開發者網站復制OAuth令牌的使用,但沒有成功。
“這意味著OAuth Playground(谷歌用于測試其API訪問的服務)無法準確復制Pokémon GO請求的權限,”Guido寫道,“這可能是OAuth 1.0 API的一部分,谷歌在2012年已經將其啟用,并在2015年關閉。如果是這樣的話,我們無法確認為什么Pokémon GO還能夠使用它。我們檢查過,遷移到OAuth 2.0 API的賬戶無法再訪問較舊的1.0 API。”
現在,Pokémon GO權限問題似乎已經得到解決。Rubinstein表示:“谷歌將重新限定令牌范圍來解決令牌交換攻擊的風險,Pokémon GO在未來幾天應該是安全可用的。”
其他Pokémon GO的安全問題
雖然Niantic和谷歌已經修復iOS版應用的權限問題,但還有其他安全問題。網絡安全公司Proofpoint發現該游戲受感染的Android版本,攜帶DroidJack遠程訪問工具。
“雖然我們還沒有在實際環境中發現這種惡意Android應用程序包,但在2016年7月7日09:19:17 UTC被上傳到惡意文件存儲庫服務,而該游戲在新西蘭和澳大利亞正式發布還不到72小時。”
Proofpoint指出,由于該游戲還沒有在全球范圍正式推出,很多游戲玩家希望游戲在其地區發布前訪問該游戲,這可能導致它們從第三方下載Android應用程序包。
與此同時,微軟項目經理兼工程師Dennis Delimarsky稱Pokémon GO在連接公共Wi-Fi網絡時還可能遭受中間人攻擊。