2013-07-16 10 views
28

アップルのiOSアプリ内購入システムは、過去にアプリを騙して無料でコンテンツを提供してきた人々によって攻撃されてきました。彼らは以来、この種のものを制限しようとするために、関係するシステムを改良してきました。iOSのアプリ内購入に対する攻撃の保護

Appleから入手できるStoreKitリファレンスドキュメントを読んだことがあります。ワークフローとチェックが必要であるという一般的な考え方などがあります。しかし、私が気づいていないセキュリティ問題があるかもしれません。

アプリ内購入メカニズムに対して試みることができる盗難攻撃の全リスト、開発者が誤ってこれらの攻撃を許可している可能性があります。

答えて

67

これらは、過去と現在、私が知っ攻撃です:

偽のApp StoreロシアのプログラマAlexey Borodinで有名になった

、この攻撃は、唯一の直接購入の領収書を確認するアプリケーションに影響を及ぼしApp Store。デバイスのDNS設定を変更し、偽造されたセキュリティ証明書をインストールすることによって、確認リクエストが偽のApp Storeサーバーに送信され、偽のApp Storeサーバーが自動的に購入が有効であることを返します。疑いのないアプリは、これらの確認呼び出しを受け入れ、コンテンツをユーザーに配信します。

解説

このエクスプロイトは、2012年の7月に知らされた後、開発者がこの種の攻撃が発生し続けないと保証するためにのために、Appleが更新されたドキュメントやアドバイスを発行しました。 Borodinは、アップルのアップデートされたAPIとベストプラクティスのガイドラインに基づいて、「ゲームは終わった」と述べています。

予防

Appleはこの抜け穴here専用の文書全体を持っています。 (編集:リンクがダウンしている場合は、Waybackが必要です.iOS 5.1以前のドキュメントではありますが)最大のポイントは、自分の所有する外部サーバーに領収書を送信し、あなたのサーバーはAppleとの領収書を確認します。ただし、アプリケーションから直接App Storeに領収書を送信する場合は、次のチェックを行うことをお勧めします。

  • App Storeサーバーへの接続に使用するSSL証明書がEV証明書であることを確認します。
  • 検証から返された情報がSKPaymentオブジェクトの情報と一致することを確認します。
  • 領収書に有効な署名があることを確認します。
  • 新しいトランザクションに一意のトランザクションIDがあることを確認します。

あなたのアプリが、その後のApp Storeに転送してサーバーへのトランザクションの領収書を送り

場合は偽の検証サーバは、一つの選択肢は、偽のあなたの検証サーバーへの攻撃のためです。何らかの方法(DNSテーブルの変更、URLの変更など)によって、領収書が別の場所に送信され、「成功した確認」が返されます。この方法では、レシートはサーバーに届かず、App Storeでチェックする機会はありません。

解説

はどうやら、バックグラウンドで実行レシートトラフィックを監視し、この目的のためにそれをリダイレクトするのに役立つCydiaのストア内のアプリケーションの様々なものがあります。出典:あなたはすぐに、すぐに領収書が検証されるようコンテンツを配信した場合Hussulinux Blog

予防

、この種の攻撃を防ぐために、既知の方法はありません。ただし、このシナリオをとってください:自分のサーバーで管理されているユーザーアカウントシステムがあります。アプリ内購入の目的が、特定のユーザアカウントがアイテムを購入したことをサーバに通知し、そのアイテムがサーバからダウンロードされた場合、攻撃から免除されます。レシートを別のサーバーにリダイレクトすると、攻撃者は何も成立しません。なぜなら、サーバーはアイテムを所有していると決してユーザーアカウントに領収書が表示されないためです。

偽の領収書

は、攻撃者が偽の購入プロセスと、あなたの検証サーバに偽造領収書を送ることができます。以前の攻撃とは異なり、領収書のアウトバウンドの場所は変更されませんが、詐欺師に置き換えられます。このスプーフィングされた領収書は、実際には以前のApp Storeトランザクションからの有効な領収書であり、App Storeはそれをそのように確認します。購入プロセスを偽装し、偽の領収書をサーバーに送信することによって、コンテンツは実際に決済されることはありません。

解説

どうやらこの種のものを行うのCydiaのアプリの様々なものがあります。 product_idはあなたのアプリで使っているものとまったく違うので、偽の領収書を見つけることができます。明らかに最も有名な偽装IDはcom.zeptolab.ctrbonus.superpower1です。出典:Hussulinux Blog。私はこの攻撃を発見したリンクで

予防

、ブロガーはあなたの検証サーバー(BASE64_DECODE)で領収書を解凍し、App Storeに領収書を送信する前にproduct_idを確認することをお勧めします。しかし、this articleでは、最初に領収書をApp Storeに送信し、領収書が有効であることを確認するために返された情報を読むことをお勧めします。

(私が間違っていると私も訂正しますが、あなたが検証サーバーを持っていなくてもこの種の攻撃を防ぐためにAppleの推奨技術を使用することもできます。ストアは、それが有効だことを確認するためにJSON応答の内容を調べることができます。しかし、これはAppleの外部認証サーバを使用してのベストプラクティスを推奨反するので、私はそれを提唱しません。)

を閉じるには

これは私が気付いている攻撃です。私が間違っている場合や、追加の攻撃や修正を加える場合は、私を修正してください。

メモ:このウェブサイトはhttp://www.in-appstore.com/で、iOS 5またはjailbroken iOS 6端末でのアプリ内購入を無料で許可し、2013年7月5日現在で有効です。私は100%彼らがそれをやっているのかどうかは確かではありませんが、間違いなくDNSの再ルーティングと偽のセキュリティ証明書が含まれているようです。Fake App StoreやFake Verification Serverを暗示します。これらの攻撃から保護されていません。

リソース

EDIT:

追加

は、1つまたは2つの人々がここで揺動し、この記事が有用であることが判明し、私はうれしいしているように思えます。

他の記事、書籍、またはのいずれかで、このテーマにあったことができますより多くの情報が、あります、あなたは、インターネットの下腹部を精練、それまでなら。ここには、私が見てみたいと思うが、まだチャンスがなかったちょっとしたウェブサイトや投稿などがあります。興味のあるものを見つけたら、後でリンクを追加します。

http://www.se7ensins.com/forums/threads/tut-how-to-hack-ios-games-and-apps.701845/ http://www.iapphacks.com/

即時持ち帰りのカップルは:あなたは、それはいくつかのティーンエイジャーによって編集される場合を除き、単純なplistの中にプレーヤーのデータを格納しないでください。ディスク上のファイルを編集することで、自分自身に金などを与えることができるのであれば、IAPシステムをハックする必要はありません。おそらく、これらのファイルを暗号化することによって、攻撃者の特定のセグメントを阻止する可能性があります。

se7ensinsリンクに基づいて、攻撃者はバイナリを分解してplistファイルを編集するのと同じ目的を達成するために混乱させるかもしれないようですが、これには少し高いスキルレベルが必要です。おそらく脱獄検出を設定すれば、これに頼る大部分の人を抑えることができます。

繰り返しますが、このセクションでは、主に憶測ですが、それは、誰かを助けるかもしれません。実際、あなたが保有する保護レベルは、開発者が最終的な利益を守るためにどれくらい遠い(セキュリティと暗号化のウサギの穴を掘り下げる)ことができるかによって決まります。

+1

偉大な書き込みと非常に便利です。 – philipp

+0

この攻撃のすべてに対して電話機の脱獄が必要ですか?私が見てきたように、この攻撃のいくつかはMac App App Purchasesに適用することができます。アプリを購入した特定のMacに攻撃がありますか? – Petr

+1

@Petr DNSリルートと証明書偽造攻撃は、iOS 6以降の脱獄を必要とします。はい、これらのいくつかはOSXにも適用できるようです。私は正確にどのものか分からない。多分すべて。 OSX App Storeの領収書は、詳細を覚えていませんが、iOSの領収書とは異なります。 –

関連する問題