2012.07.15 23:23

iOS App 裡的付費機制被攻破,駭客找到免費取得內容的方法

ADVERTISEMENT

你會在免費的 iOS App 裡面付費取得更多內容嗎?例如取得更多遊戲關卡、取得遊戲裡面的點數、讓進階功能解鎖、取得更多精美圖片、取得更多文章等等。而這個機制在最近被攻破了,使用者可以免費取得要錢的內容,我們來看看這是怎麼回事。

在 iOS App 裡面付費取得更多內容的機制,Apple 官方稱之為「In-App Purchase」,相信不少使用者接觸了免費的 App,覺得是自己需要的,便花錢在 App 裡面購買更多內容,例如許多學習語言的 App 會提示使用者花錢購買更多課程。這樣的付費機制最近被駭客攻破,不需要越獄(JB),也沒有複雜的做法,一般使用者都能透過一些方式來免費取得要錢的內容,至於方法是什麼?小編並不知道,請大家把這件事當做新聞來看吧!

發現此方法的老兄名為 Alexey V. Borodin,而且還架了網站來協助 iOS 使用者做到這件事,目前大約有超過3萬筆的 App 內部購買行為,透過這個方法來免費取得要收錢的內容。

ADVERTISEMENT

▲ 這是典型的 App 內建購買功能範例,你可以在這個遊戲 App 裡面付費取得所需的點數。(圖片來自 的畫面)

如何運作?

簡單說,Alexey V. Borodin 提出的方法既不是破解 iOS 本身的某種機制,也不是更改 App 的程式碼。大家可以參考下面由 所提供的流程圖,Borodin 以自行架設的伺服器取代了 Apple 用於「In-App Purchase」的伺服器,而 App 所發出的請求其實是由 Borodin 架設的伺服器來處理,這個假的伺服器回傳一個 receipt(小編在此先翻譯為「購買收據」),讓 App 以為使用者已經付了錢,也就是下圖的步驟8出了問題。App 認為使用者已經付費了,使用者當然可以取得所需的內容。

ADVERTISEMENT

當然,iOS 裝置的使用者要修改機器裡面的 DNS 設定,才能讓 App 在發出購買請求時,導向 Borodin 的伺服器。Borodin 所提供的服務需要一些 receipt(購買收據),為了提供這個非法的服務,已花了數百美元來測試和產生這些之後會用到的 receipt(購買收據)。

其實 Apple 也知道會有人利用假伺服器來騙過 App,所以也提供了讓 App 可以確認購買收據是來自真正的 Apple 伺服器的方法,但 Borodin 剛好利用了這一點,讓 App 認為假伺服器所傳回的購買收據是真的。

ADVERTISEMENT

但這個方法有個問題是,當使用者要重新下載之前已購買的內容時,也要透過 Borodin 的伺服器才行。但這應該不是個問題,因為非法取得的內容本來就不應受到保護。

Apple 要採取的行動

根據 的分析,這一套方法可行,是因為購買收據上面只有一般性的資訊,包括:App 名稱、購買項目和一些辨識用的位元資訊,但購買收據上面沒有記載是那個帳號或是那個機器買的,所以當 A 用戶的購買收據被攔截以後,駭客就可以拿來給 B 用戶使用,讓 App 以為 B 用戶也真的買了 App 所提供的付費內容,這也是為什麼 Borodin 要自己花錢做測試,以取得不同 App 的購買收據。另外一個問題是,許多 App 和 Apple 伺服器在交換資訊時,是沒有加密的,所以相關資訊才會被有心人士攔截。

因此 Borodin 表示,如果 Apple 要解決這個漏洞的話,就必須在購買收據上記載購買人的帳號或唯一性資料,但同時也可能引發隱私問題的爭議。

ADVERTISEMENT

另一個可能的解決之道是,在開發者和 Apple 之間設定只有雙方才知道的秘密資訊,而這些秘密資訊不會用於交易的過程,而且在 App 和 Apple 伺服器交易的過程也要使用更強的加密方式,以免被有心人士所攔截,想出其他的破解方法。

在這個事件中,Apple 做出了回應,表示他們相當重視詐騙行為的報告,而且正在調查中。

資料來源:、

延伸閱讀:

ADVERTISEMENT