アサルトリリィ Last Bullet(ラスバレ)は利用者に無断でFacebookに情報を送信している
新型コロナウイルスに関係する内容の可能性がある記事です。
新型コロナウイルス感染症については、必ず1次情報として厚生労働省首相官邸のウェブサイトなど公的機関で発表されている発生状況やQ&A、相談窓口の情報もご確認ください。またコロナワクチンに関する情報は首相官邸のウェブサイトをご確認ください。※非常時のため、すべての関連記事に本注意書きを一時的に出しています。
見出し画像

アサルトリリィ Last Bullet(ラスバレ)は利用者に無断でFacebookに情報を送信している

ポケラボのゲーム『アサルトリリィ Last Bullet』(ラスバレ)の通信をキャプチャしたところ、利用者に無断でFacebookに情報を送信していることを発見した。

通信内容

以下がAndroid版ラスバレVer.1.6.0での通信をWindowsのmitmproxyでキャプチャしたものになる。本来はラスバレの利用規約に反する内容だが、公益性を鑑みて公開する。

スクリーンショット 2021-09-08 16.43.46

他のアプリの通信もまとめてキャプチャしているため、すべてがラスバレのものとは限らないが、FacebookのグラフAPI ”graph.facebook.com” との通信が発生していることが見て取れる。特に着目すべきは次の通信内容だ。

POST https://graph.facebook.com/v5.0/243966770319189/activities HTTP/1.1
User-Agent:                   FBAndroidSDK.5.15.3
Accept-Language:              ja_JP
Content-Type:                 application/x-www-form-urlencoded
Content-Encoding:             gzip
Transfer-Encoding:            chunked
Host:                         graph.facebook.com
Connection:                   Keep-Alive
Accept-Encoding:              gzip
content-length:               549

format:                       json
sdk:                          android
custom_events:                [{"_eventName":"fb_mobile_activate_app","_eventName_md5":"cb7f3b6cd294afce05ece615d43ea7b9","_logTime":1616521668,"_ui":"PaymentUnityActivity","_session_id":"2bea7ff0-062b-123f-a9e9-4f071100dcf3","fb_mobile_launch_source":"Unclassified","fb_mobile_pckg_fp":"a53408224051ae8b03e3a2719999dd86","fb_mobile_app_cert_hash":"fYwdBDtcM+vCZx9ThX4mC6FjW00=\n"}]
event:                        CUSTOM_APP_EVENTS
anon_id:                      XZ5c7b011a-8fac-1152-3e3c-dbc47c875fad
application_tracking_enabled: true
advertiser_id:                d07599f5-9e0a-b56e-9d53-8c2c59d40d7c
advertiser_tracking_enabled:  true
installer_package:            com.android.vending
extinfo:                      ["a2","jp.co.allb",37,"1.6.0","10","Pixel 5","ja_JP","JST","",2340,1080,"3",8,54,5,"Asia\/Tokyo"]
application_package_name:     jp.co.allb

特定を避けるため一部のIDはダミーに置き換えた上で、URLエンコードされたPOSTリクエストパラメータを見やすいよう整形している。

FacebookのグラフAPIリファレンスと照らし合わせると、端末に割り当てられたAndroid広告IDを”advertiser_id"として送信しているほか、使用中のアプリパッケージ名(jp.co.allb=ラスバレ)、アプリのビルド番号(37)、アプリのバージョン(1.6.0)、OSバージョン(10)、端末型番(Pixel 5)、端末ロケール(ja_JP)、タイムゾーン略語(JST)、通信事業者(Null)、画面解像度-横[px](2340)、画面解像度-縦[px](1080)、ピクセル密度[dip](3)、CPUコア数(8)、ストレージ容量[GB](54)、ストレージ空き容量[GB](5)、端末のタイムゾーン(Asia/Tokyo)を"extinfo"として送信していることが読み取れる。

これらの情報はアプリ上で特徴的な出来事(アプリイベント)が発生する度に送られており、ここではアプリを起動したこと(fb_mobile_activate_app)がトリガーになっていることも読み取れる。

これらに加えて、ユーザーアプリがFacebookのドメインとやりとりする関係上、当然Facebook側はユーザーのIPアドレスも知得できることになる。IPアドレスは広告IDは利用者追跡に利用可能なプライバシー性の高い情報になる。EUのGDPRではIPアドレスを明確に個人データと位置付けている。

上記のキャプチャは今年3月頃のもので少し古いのだが、記事公開時点の最新Android版及びiOS版アプリVer.2.14.3でも同様の通信を行っていることを確認している。

画像2

先述の通り、Windows端末からはそれぞれがどのアプリから発生した通信なのか判別できないが、Android端末上からはどのアプリから発生した通信なのか判別できるため、他ならぬラスバレのアプリがFacebookのグラフAPI ”graph.facebook.com” と通信しようとしていることが確認できる。

これらの通信は利用者がFacebookを利用しているか否かに関わらず発生する。

原因はFacebook SDK?

こうした通信は、アプリに組み込まれたFacebook SDKのアプリイベント取得機能によるものとみられる。

Facebook SDKは米Facebook社がアプリ開発者向けに提供するソフトウェア開発キットで、「Facebookログイン」「Facebookシェア」「Facebookソーシャルグラフの読み書き」「アプリ広告」「アプリイベント取得」といった機能を簡単にアプリに追加することができる。

ラスバレのAndroid/iOS版はFacebookログインによるデータ引き継ぎ機能を備えており、そのためにFacebook SDK for Unityを使用していると思われる。

画像3

開発者がFacebookログイン実装のついでにアプリイベントも取得しておこうと考えたのか、それともアプリイベントの取得は意図しない動作なのかは定かではないが、Facobook SDK for Unityではアプリイベントの取得と広告IDの取得が既定で有効になっており、Facebookの開発者向けドキュメントには次のように書かれている。

Disable Automatically Logged Events(自動的なイベント記録の無効化
Our Unity SDK enables automatically logged events by default. To disable or enable automatic event logging, go to Facebook -> Edit Settings in the Unity IDE menu bar and select or unselect Auto Logging App Events under the App Events Settings section.(抄訳: Faceook の Unity SDK では既定で自動的なイベント記録が有効になっています。イベント記録を無効化または有効化するには、Unity IDE メニューバーから Facebook -> Edit Settings を開き、App Events Settings セクションの下にある Auto Logging App Events を選択または選択を解除してください。)

スクリーンショット 2021-09-13 23.25.41_PNGoo

このほか、Facebook SDKの初期化処理(FB.Init)も気を付けたいポイントだ。for Unityではどうか知らないが、for Android / iOSではアプリの起動時にFacebookへSDKの初期化完了を知らせる通信が行われてしまうため、アプリ上で利用者の同意を取得するまで初期化を保留する機能が近年追加されている。

なお、Windows(DMM GAMES)版ではFacebookログインによる引き継ぎ機能が存在しないため、そもそもFacebook SDKが組み込まれておらず、Facebookへ情報の送信はしていないようだ。

プライバシーポリシー

こうした情報の送信自体は珍しいものではないが、問題はこれが利用者の同意なく無断で行われているという点だ。

ラスバレのAndroid版プライバシーポリシーでは

ⅱ.情報収集モジュール
本アプリには、本アプリに含まれる機能の提供や広告表示、利用状況解析等を目的として、第三者が提供する以下の情報収集モジュールが含まれます。これらの情報収集モジュールにより取得される情報又は取得された情報の利用目的等については、各情報収集モジュール提供会社が提供しているプライバシーポリシーをご確認ください。
・PushWoosh.Inc「PushWoosh」https://www.pushwoosh.com/privacy-policy/
(本アプリでプッシュ通知機能を提供するため)
・adjust株式会社「adjust」https://www.adjust.com/ja/terms/privacy-policy/
(本アプリのプロモーション効果の把握・分析を行うため)
・Google LLC「Firebase」https://policies.google.com/privacy?hl=jp
(本アプリのログ解析、アプリ向上・マーケティング調査の目的でアクセス解析を行なうため)
・Microsoft Corporation「AppCenter」https://privacy.microsoft.com/ja-jp/privacystatement
(本アプリのダウンロード状況、クラッシュレポートを調査するため)

といくつかの情報収集モジュールについて記載されているが、Facebookによる情報収集についてはどこにも記載がない(iOS版ポリシーも同様)。

送信されている情報自体は大したことがないと思われるかもしれない。プライバシーポリシーなんて誰も読まないかもしれない。Facebookに情報を送信するからといってアプリの利用を止めたりはしないかもしれない。しかし、これは透明性の問題なのだ。

昨今のプライバシー意識の高まりから、Facebook、Google、Appleの各プラットフォーム規約においても、こうした情報の送信についてはプライバシーポリシーに記載し、利用者の同意を得ることが強く求められている。

4. プライバシーポリシー

a. プラットフォームを利用してプラットフォームデータを処理する開発者は、一般に公開され容易に閲覧可能なプライバシーポリシーを設け、これに従うものとします。

b. このようなポリシーは、適用される法規に準拠するとともに、開発者が処理するデータの種類とその処理の方法、処理の目的、およびそのデータの削除を利用者がリクエストする方法について、正確かつ明確に説明するものでなければなりません。
ユーザーデータ(デバイス情報を含む、ユーザーについての情報やユーザーから収集する情報など)を扱う場合は、その処理方法を明らかにする必要があります。つまり、アプリがこのデータにアクセスし、収集、使用、共有することを開示し、開示した目的にのみデータを使用することが求められます。さらに、アプリが個人情報や機密情報を扱う場合は、以下の「個人情報や機密情報」に記載されている追加の要件もご確認ください。これらの Google Play の要件は、プライバシー保護とデータ保護に関する適用法令が規定する要件に加えて適用されます。サードパーティのコード(SDK など)をアプリに含める場合は、アプリで使用されているサードパーティのコードが Play デベロッパー プログラム ポリシーを遵守していることを確認する必要があります。
(i)プライバシーポリシー:すべてのAppには、App Store Connectのメタデータフィールドと各App内にアクセスしやすい形で、プライバシーポリシーへのリンクを必ず含める必要があります。プライバシーポリシーはわかりやすく明確なものである必要があります。

・App/サービスが収集するデータの種類(該当する場合)、データの収集方法、データの用途はすべて明確に提示してください。

・本ガイドラインに準拠して、Appのユーザーデータをサードパーティ(分析ツール、広告ネットワーク、サードパーティ製のSDK、その他ユーザーデータにアクセスできる親会社、子会社、その他の関連組織)と共有する場合は、そのサードパーティがAppのプライバシーポリシーで定める内容や本ガイドラインの要求事項と同一、あるいは同等のレベルでユーザーのデータを保護していることを確認する必要があります。

・データ保存/削除のポリシーと、ユーザーが同意を無効にする方法やユーザーデータの削除をリクエストする方法を記載する必要があります。

(ii)許可:ユーザーデータや使用状況に関するデータを収集するAppでは、収集するデータが収集の時点またはその直後の時点で匿名であると考えられる場合でも、そのデータ収集に関してユーザーから同意を得る必要があります。

過去の類似事例

Facebook SDKを巡っては過去に複数のアプリが利用者に無断でデータ共有をしていたことが発覚し、問題となっている。特に2018年の末に公表されたプライバシー・インターナショナルによる報告書が秀逸で、日経やスラドに日本語での概説記事がある。

実は私も1年半ほど前に国内アプリを対象として独自に調査を行い「note」「Dr.WALLET」アプリで同様の問題を発見したことがある。海外ではGDPR違反やデータ保護法違反として訴訟沙汰になるものの、日本においては明確に違法とまでは言えないため、そのままお蔵入りネタとなっていたのだが、あの時声を挙げていればこうはならなかったのではないかと思うところもあり、今回は記事に残すこととした。

サードパーティーSDKが意図せず動作した結果であろうと、最終責任を持つのはアプリ開発者であり、プラットフォームのストア規約に違反するアプリは最悪BAN(排除)され、売り上げを凍結される。数日なりとも月商2億円のアプリがBANされれば多額の機会損失が発生することは言うまでもない。

この件についてはポケラボ側に問い合わせ中のため、続報があれば追記する。

問い合わせと回答(13日追記)

9月8日午後に以下のような内容で問い合わせを行った。

ラスバレの起動中、時折Facebook社に利用機種名、OS情報、本アプリの利用状況、広告IDといったデータが送信されていますが、これは意図した挙動ですか?
この点についてプライバシーポリシーに記載がないのはなぜですか?
Facebook社と共有する可能性のある情報の詳細をお知らせください。

9月10日午前に以下のような回答が届いた。

いつも「アサルトリリィ Last Bullet」をご利用いただきありがとうございます。
ポケラボサポート事務局です。

このたびは、ご案内までにお時間を頂戴しており申し訳ございません。

ご連絡いただいた件になりますが、「プライバシーポリシー」ではプライバシーポリシーの「1.プライバシーポリシーについて」に記載しているとおり、「アサルトリリィ Last Bullet」における個人情報の取扱いを定めたものでございます。

New Relicについてはサーバーの負荷情報を取得しており、個人情報は取得していないため、プライバシーポリシーに記載は行っておりません。

また、FacebookについてはFacebook上のサインイン認証した結果(本人可否判定結果)のみ返却しており、個人情報は取得していないため、プライバシーポリシーに記載は行っておりません。

上記について、ご参考としていただけますと幸いです。

今後とも「アサルトリリィ Last Bullet」をよろしくお願いいたします。

New Relicについては別記事にまとめているが、いずれについても残念ながら問題を理解してもらうことができなかった。

ラスバレに組み込まれたFacebook SDKは、上記のキャプチャで示した通りアプリイベント情報を収集しており、Facebook上のサインイン認証した結果(本人可否判定結果)のみ返却しているというのは明らかに虚偽の回答だ。

ポケラボ側の担当者が「データを収集していないはず」だと思い込んでいるのであれば同情の余地もあるが、具体的に「利用機種名、OS情報、本アプリの利用状況、広告IDといったデータが送信されています」と指摘した上でこの回答なので、もはや救いようがない。

個人情報は取得していないという主張についてはNew Relicについての別記事の繰り返しとなるためここでは割愛するが、個人情報となり得る情報を取得していることに違いはなく、何なら匿名データであっても利用者の同意を取得するようストア規約で求められているのは上述した通りである。

ポケラボには速やかに正しい説明と是正を求めたい。