Apple、iOS 6でアプリ内購入詐欺を修正、開発者に一時的な修正プログラムを提供c

Apple、iOS 6でアプリ内購入詐欺を修正、開発者に一時的な修正プログラムを提供c
Apple、iOS 6でアプリ内購入詐欺を修正、開発者に一時的な修正プログラムを提供c

Appleは、最近発生したApp Storeのアプリ内課金バグと不正行為に対し、登録済みのiOS開発者向けにメールと一時的な解決策を提供しました。このメールには、問題の詳細と一時的な対策方法を説明したApple開発者向けWebドキュメントへのリンクが含まれています。Appleは、このバグをiOS 6の次期リリースで完全に修正すると発表しています(@natesiphoneさん、ありがとうございます)。

iOS 5.1以前のバージョンにおいて、iOSデバイスからApp Storeサーバーに直接接続することでアプリ内購入レシートを検証する際に発生する脆弱性が発見されました。攻撃者はDNSテーブルを改ざんすることで、これらのリクエストを攻撃者が管理するサーバーにリダイレクトできます。攻撃者は、攻撃者が管理し、ユーザーがデバイスにインストールした認証局を利用して、攻撃者のサーバーをApp Storeサーバーとして偽装するSSL証明書を発行できます。この偽装サーバーは、無効なレシートの検証を要求されると、レシートが有効であるかのように応答します。

iOS 6ではこの脆弱性が修正されます。アプリが以下のベストプラクティスに従っている場合、この攻撃の影響を受けません。

Apple は、過去数日間 (App Store の重大な欠陥が発見されてから) 開発者から寄せられた 3 つのよくある質問に対して、質問、回答、および解決策のセクションを設けています。

私のアプリは独自のサーバーに接続して検証を行っています。どのような影響がありますか?

アプリがベストプラクティスに従い、レシートをサーバーに送信し、サーバー側でApp Storeサーバーとの検証を行うという方法でレシート検証を実行している場合、アプリはApp Storeサーバーに接続しないため、この攻撃の影響を受けません。ただし、サーバーに接続する際に同様の攻撃を受ける可能性があります。

適切な暗号化技術を用いて、アプリがサーバーに、そしてサーバーがApp Storeサーバーに確実に接続されていることを確認してください。このドキュメントで概説されている緩和策を出発点としてご活用ください。詳しくは、セキュリティの概要をご覧ください。

私のアプリはApp Storeサーバーに直接接続して検証を行っています。どのような影響がありますか?

レシートを検証するためのベストプラクティスは、レシートをサーバーに送信し、サーバーで App Store サーバーを使用して検証を実行することです。

アプリがデバイスから直接App Storeサーバーに接続している場合、この脆弱性の影響を受ける可能性があります。この脆弱性に対処するには、以下の手順に従ってください。

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

すでに完了したトランザクションを検証するにはどうすればよいですか?

消耗品: デバイスまたはサーバーにレシートを保存している場合は、緩和策を実施した後、レシートを再検証してください。レシートを保存していない場合は、過去の取引を検証できないため、何もする必要はありません。

非消耗品: 現在のレシートを保管し、復元操作を実行して新しいレシートを検証してください。このプロセス中は、デバイスに既に保存されているコンテンツの再ダウンロードは避けてください。

Apple は開発者向けに、問題を軽減するためのコードと段階的なプロセスも提供しています。

このドキュメントの付属ファイル内のコード リストは、このドキュメントで説明されている軽減戦略の実装アプローチを示しています。

注: このリストでは、公開APIではないシンボル kSecTrustInfoExtendedValidationKey とを 使用していますSecTrustCopyInfo。アプリは、この特定の目的のためにこれらのシンボルを使用することが許可されています。

このコードをプロジェクトに追加するには:

    1. このドキュメントの関連ファイルをダウンロードして解凍してください。(リンクはこのページの右上にあります。)
    2.  Xcode でプロジェクトにVerificationController.h および ファイルを追加し 、適切なターゲットに追加します。VerificationController.m
    3. プロジェクトをセキュリティ フレームワークにリンクします。
    4. base64 エンコーダー、base64 デコーダー、および検証が成功したときに実行するアクションを提供します。

Appleは以前、声明の中でこの問題について次のように回答した。

「App Storeのセキュリティは、私たちにとっても開発者コミュニティにとっても極めて重要です」と、Appleの代表ナタリー・ハリソン氏はThe Loopに語った。「不正行為の報告を非常に深刻に受け止め、調査を進めています。」

この問題は1週間前の本日初めて公表され、ロシアのハッカーがわずか3つの手順でAppleのアプリ内購入プロセスを回避できたことが報じられました。この問題はiOS 3.0からiOS 6.0までのiOSデバイスに影響を与えると以前にも指摘しており、AppleはiOS 6の次期ベータ版で修正をリリースするか、今秋の正式リリースまで待つ可能性が高いと考えられます。

ハッキングに関する最初の報道から数日後、AppleはApp Store開発者からアプリ内課金を盗む行為を阻止するための対策を講じ始めました。Appleは当初、不正なハッキングを実行したサーバーへの削除通知を発行するなど、この計画を阻止しようと試みました。ハッカーたちは、サーバーをアクセスしにくい場所に移転することで反撃しました。

iOS 6がこの問題の唯一の真の最終解決策となると思われます。Appleが本日開発者に働きかけたのは、あくまで一時的な解決策に過ぎません。問題の終息は、Appleと開発者が協力して取り組むことによってのみもたらされるようです。Appleは今秋にiOS 6のパッチを準備しており、開発者はAppleが本日発表した新しいツールとガイドラインを活用して、アプリ内購入をより適切に保護する必要があります。

havebin.com を Google ニュース フィードに追加します。 

FTC: 収益を生み出す自動アフィリエイトリンクを使用しています。詳細はこちら。