介紹

大概在今年7月份,有俄羅斯黑客破解了蘋果的應用內付費(In-App Purchases),裝置在不越獄的情況下就可以免費獲得來自蘋果官網App Store裡應用的收費道具。受影響的產品眾多,包括著名的Angry Birds,切水果,Mega Jump, Pandora等。這裡有一份受影響的著名的遊戲應用列表。

正常的越獄行為還是比較複雜的,需要下載破解軟體,並且操作進入DFU模式,所以大部分人並不能夠方便地越獄。但該方案不需要越獄就可以破解應用內付費,給使用者實施該行為提供了方便。

為了驗證破解的有效性,我今天試了一下,確實能夠直接繞開蘋果的應用內付費就直接完成購買操作。而蘋果也在它的官方文件上特別註明了該漏洞的存在,截圖如下:

從該文件中我們可以知道,iOS6以下的所有裝置(包括越獄或非越獄裝置),都會受到該漏洞的影響。

攻擊原理

我們知道通常的IAP購買行為,從邏輯上就是裝置向App Store發起一個購買操作,App Store在驗證過使用者的密碼確認身份後,扣費並返回購買成功的憑證,整個網路操作是通過SSL加密的。

該IAP破解方法,是讓裝置誤以為另一個網站就是AppStore,而向它通訊,而這個假AppStore返回一個假的購買成功的憑證,這樣就欺騙裝置完成了購買。整個欺騙使用的手段包括:

  1. 使用者給自己新增一個受信任的證書以完成SSL通訊的證書校驗
  2. 設定一個偽DNS(域名解析服務)地址,把AppStore的域名指向假的地址。

應對措施

現在看來,暫時有效的應對方法是,將該交易憑證上傳到我們自己的伺服器上,然後讓我們自己的伺服器與AppStore進行驗證,以確認該憑證是否是偽造的,然後將驗證結果返回給裝置。蘋果的官方網站上也是這麼介紹的。這樣做麻煩的地方是,對於那些遊戲和工具類應用,增加了伺服器開發和維護的開銷。

但是就象蘋果自己也意識到的那樣(如下圖),既然破解者可以欺騙裝置來和AppStore通訊,那麼同樣破解者從原理上,也可以欺騙裝置同我們自己的伺服器通訊,到頭來,裝置本身無論如何是無法知道自己的資訊的真實性的。

對於這件事,我們只能期望於:因為我們的應用使用者量不大,驗證協議又不是通用的,所以破解者需要專門針對我們的通訊協議進行破解,這需要他本身有動力做這個事情,並且要花費他一些時間。所以可能他覺得做這個事情沒什麼挑戰和意義,就不破解我們了。在這件事情上,“希望他不要破解”,好象也是我們唯一能做的事情。

樂觀一點講,AppStore上有上百萬的應用,如果所有應用都採用伺服器驗證購買憑證,黑客一一針對破解,確實也太不可能了,所以這件事情還是很有必要的。另外隨著iOS6的普及,該漏洞也將被修補掉,所以大家也不用過於悲觀。