QuizUp遊戲洩露使用者隱私有感:開發人員的責任

梧桐發表於2013-11-29

開發人員對使用者是負有責任的。現如今不需要很多人,也不用經過很多審查,就能直接到達如此多的使用者,這在人類歷史上從來沒有出現過。集中釋出這事我們的確幹了超過500年了,但是在到達數百萬使用者之前,必須經手數十個人。 這些人包括評論家、核實人員、編輯和調查人員。而如今,一個很小的團隊,甚至是一個開發人員就能在幾天時間裡涉足數百萬人的個人生活。大部分情況下這種強大的能力對每個人皆有利,然而我們越來越頻繁看到開發人員步入歧途。大部分的使用者沒有足夠的技術知識來理解開發人員的設計,就算是有技術背景的人通常也不願意多費周折。

在發表這篇文章之前,我聯絡過QuizUp的開發商——Plain Vanilla。我告訴他們我發現一些安全方面的隱患,並表示願意提供任何形式的幫助。截至發表之時已經過去好幾天了,他們並沒有跟我索取細節或者以任何方式回覆我。關於這事的詳情請檢視本文末。

最近有一款iOS平臺的遊戲很火爆,安裝量甚至遠超過了當初的Instagram和Snapchat。經常關注App Store的人可能已經注意到了這款席捲移動平臺名叫”QuizUp“遊戲。我發現這個遊戲是因為我注意到它使用的一個搜尋關鍵字恰好是我開發的一個火爆小遊戲”Trivium”的名字。我下載並試玩了一下這個遊戲。雖然遊戲還不錯,但總感覺某些東西和它的原理不一致。開發人員有本能好奇心,尤其是對技術,它促使我開始繼續探索。接下來的發現先是讓我吃驚,然後是震驚。

QuizUp 的定位是一個社交網路的問答遊戲。在執行前你需要用email或Facebook帳號進行註冊。進入遊戲後,玩家會與另一個玩家進行匹配,然後互相線上問答7輪問題。問題的類別多達250個。我自己也寫過一個很受歡迎的問答遊戲,使用者也達幾十萬。令我吃驚的是他們能實時的提供250個類別的問題。無論從技術角度還是玩家角度都是很了不起的。但事實上,這隻能算是一個取巧的策略。在繼續研究QuizUp的邏輯時,我還有更讓人吃驚的發現。

自從App Store運營以來,發生過好幾起違反iOS隱私條約的事件,包括Path被聯邦政府罰款$800000,還有加州針對移動應用隱私暴露起訴Delta Airlines。話說到此,你或許能感覺到開發人員應該關心使用者個人資料的隱密性。而QuizUp完全是無視隱私。大多數情況下,洩露隱私無非是資訊被明文儲存,其他人獲得了訪問許可權。而QuizUp是把另一個使用者的個人資訊通過明文傳給你的iphone、或者是iPod touch。這些資訊包括但不限於: 全名、Facebook帳號、郵件地址、照片、性別、生日甚至是使用者的當前位置。在我遇到的人中,我成功獲得了上百個人的個人資訊。

我們之間的聯絡除了QuizUp再無其他。當然這些人也同樣可以獲得我的資訊。需要提醒大家的是這些人並沒有在軟體裡新增為好友,根本就是陌生人。

我並不打算說明如何閱讀這些資料,因為我不想寫一個如何獲得數百萬iOS使用者個人資訊的說明。但這件事就算是交給一個菜鳥也能在15分鐘內搞定。這些資訊足以在現實中定位一個人。老網民或許知道這種“跟蹤“活動並不是少數,而是很常見的。我提供了一小段真實的使用者資料,當然為了保護隱私我進行了刪減。這段資料就是QuizUp在遊戲過程中傳送到我手機上的。如果你玩過這個遊戲,你的隱私也就暴露給其他使用者了。

QuizUp上有個”好友“欄。你可以給聯絡人傳送一條簡訊,邀請他們下載這個遊戲。本來這是一個很好的特性。但為了使用這個功能,QuizUp要求訪問你的通訊錄。一旦你允許它訪問,所有的聯絡人都將收到郵件,而且仍然是以明文的方式傳送到QuizUp的伺服器。你可能認為我只是手動的通過簡訊一對一邀請,但後臺卻在傳送聯絡人資訊。這同樣違反了法律,跟那個被罰的”Path”是一個性質。

隨著調查的深入,我發現的小問題多達上百個,這少不了安全研究人員的協助,而且他們也對這個問題開始感興趣了。這些問題包含明文傳輸密碼,搞亂Twitter聯絡人等等,我就不一一列舉了。

我認為我是一個有職業道德的開發者。客戶經常請我們公司開發iOS應用以及配置伺服器。在過程中我們總會提出關於安全和隱私的顧慮,但一般沒人採我們。但我將一貫抵制生成虛假評論以及收集使用者資料。大部分開發都有這個道德底線,至少我希望是這樣。

通過調查,我發現這個遊戲不僅暴露使用者的隱私,而且有意違反安全策略方面的最佳實踐,並有意欺騙使用者。QuizUp在推廣時聲稱提供實時的社交遊戲體驗。他們在網站上,新聞釋出上一直強調實時性。遺憾的是,這種實時性是一種很虛假的實時性。

在開始遊戲後,另一個玩家的答案在回答問題前就已經產生了。基於這一點我可以推斷,至少在某些情況下,你只是在和對方的上一次遊戲過程娛樂。另外在沒有其他玩家可以用來匹配時,它們似乎還建立一些虛擬玩家來匹配。雖然很難搞清具體的網路通訊情況,但可以肯定他們花了很多力氣試圖把一個單機遊戲搞得像線上遊戲。

得益於其他的安全漏洞,我可以實時看到在每一個類別裡遊戲的當前玩家數。在一個空房間裡尋找匹配玩家居然能在幾秒中內匹配成功。這再次證明他們說的實時線上遊戲至少部分存在欺騙。我當然也沒有一個確切的方式來測試我的觀點。

沒有安全和隱私也就罷了,在遊戲裡作弊也是小菜一碟。每一輪遊戲開始的時候,所有問題的答案已經出來了。你可以輕易的修改思考問題以及回答問題的時間。一個簡單的測試就可以發現你可以修改答案、分數以及排名。花幾個小時就能輕鬆戰勝程式併成為每個類別的頂級玩家。

這個遊戲不出我所料採用了Flurry來做分析。所有與Flurry的互動資料都很安全。雖然開發人員可以獲得Flurry的token,但對我以及玩家來說並不是什麼問題。更大的問題在於Facebook的token可以直接獲得明文. 請往下看(再次遮蔽部分內容)。如果你有一些額外的技術背景你就

可以直接發表內容而不需要使用者的授權。然而我對於Facebook瞭解有限,這個任務就留給其他人探索吧。

我至少已經確認兩起我朋友的Facebook資訊被QuizUp直接以明文儲存到NSUserDefaults,他們甚至有的都沒有使用這個程式。我不怎麼使用Facebook所以不方便去測試這一類的問題。

儘管QuizUp也採用https來發起所有的網路連線,但他們傳回裝置的資料直接就是可閱讀的文字,而且這些資料本身就很敏感。其中大量的資料根本就不可能用到。比如,我沒有任何理由需要知道對方玩家的郵件地址。

最讓人震驚的就是這些風投公司,這其中不乏大型的和知名的。我的問題是,到底他們有沒有認真審查這家公司還是他們根本就不在乎。我已經搞不清這兩者哪種更嚴重了。一個公司可以在對技術和研發投入如此不用心的情況下還能賺這麼多錢,這是不是一種泡沫現象?

QuizUp還違反了諸多蘋果公司的審查原則,據此直接可以一開始就拒絕合作。比如6.2和6.3章節是針對遊戲中心ID的隱私的,這一條QuizUp同樣沒有用心。QuizUp還違反了蘋果公司強制執行的隱私條款,而且蘋果公司一般不會容忍違反這些條款的行為。17.1和17.2是明顯違反了,17.4也有嫌疑。蘋果公司很難去監控這些行為,當然也不能怪蘋果公司,畢竟每天都有大量的軟體進出系統。其實他們可以對忽略這些條款的開發人員予以重罰,但問題是處罰對於後面的開發者有威懾力嗎?

使用者信賴開發者不會亂來,他們也不會察覺我們這裡討論的問題。我們公司以及員工做了很大努力以確保我們是站在使用者這邊的。為了降低成本而走捷徑或開快車最終只能是損害開發者的信譽。對於現在的部分開發人員我很失望,他們放棄了道德陣地而選擇混水摸魚。我相信如果你讓世界變得更好,哪怕你只出了很少的力,那你一定睡得更香。

在準備這篇文章過程中,我諮詢了移動安全領域的專家 Nick Amott,他幫助我驗證,調查和研究問題。我試圖驗證我所有的結論,但沒有原始碼我也無法完全確定,尤其是那些關於實時匹配和遊戲機制方面的。我希望外面的安全領域社群能夠關注並研究有價值的問題。

 

11月25日更新: QuizUp在Tech Crunch上回復了這些問題。我堅持我的觀點並再次呼籲第三方安全研究專家進行調查。我的文章不會公開發表以便保護QuizUp的使用者。但如果有任何媒體或研究人員聯絡我,我將予以提供。我也很樂意貼出之前發給他們的郵件,他們聲稱從來沒有收到過。

他們說已經修復了一些安全漏洞,所有想重現我說的問題得取決於這些問題是否被修復。

11月25日第二次更新: 一個叫”Jokull”的人自稱是QuizUp程式設計師,他在Hacker News上說,是有很小的可能性出現我們不能找到對方玩家,玩家最終與機器人進行遊戲,但我們選擇最大化的提升使用者體驗。 這也證明了我之前不太確定的一些問題。回答一些讀者的問題:他們至今沒有問我關於我發現的問題以及關於修復問題的建議。

11月26日更新: Plain Vanilla的高管聯絡過我。他們很積極地想去修復我發現的問題。這需要時間和精力,但我認為是一個比較好的結果。我也會向讓讀者提供後續進展。他們立即在伺服器端修復了資訊洩露漏洞,客戶端也不會傳送對方玩家的敏感資料了。我希望這一課能提醒那些創業公司在衝向市場前能多考慮一下使用者的隱私。

相關文章