Epic Games Launcher がPCにあるSteamのユーザーデータを収集している様子。Steamはユーザーデータを暗号化して欲しい [更新2]
Fortnite や Epic Games Store のゲームをダウンロード・起動する際に使う「Epic Games Launcher」が、起動時に Steam のユーザーデータを収集していると MetaCouncil にてユーザー madjoki が報告しました。GigaZine がこの報告を日本語に訳して伝えています。
News - Epic Game Store, Spyware, Tracking, and You! | MetaCouncil
人気バトルロイヤル「フォートナイト」の起動ソフトがSteamのデータをこっそり収集していたことが判明 - GIGAZINE
Epic Game Store, Spyware, Tracking, and You! : PhoenixPoint @ Reddit
報告によると Epic Games Launcher は起動時にPCに保管されている Steam のユーザーデータファイルを読み込むとのことです。Steam のユーザーデータは Steam のインストールフォルダ下の「userdata」にあります。
そもそも Epic Games Launcher には Steam とリンクさせ、Steam のフレンドリストを読み込んで Epic Games Launcher 内でもそのフレンドを追加するシステムがあります。それを怪しく思ったようでさらに調査をしたようです。
Epic Games Launcher が読み取る、"userdata\*******\config\localconfig.vdf" に含まれる情報。
フレンドの情報。
ユーザーのゲーム情報。
apps の下の数字の番号はそれぞれのゲームに割り振られた番号です。「440」は「Team Fortress 2」です。この番号は Steam Store を利用するときも URL に含まれるので目にしたことがある人が多いと思います。「130」は何だろうと調べるときは、下のようにアクセスするとすぐに分かります。
Epic Games Launcher が収集したデータは「C:\ProgramData\Epic\SocialBackup\RANDOM HEX CODE_STEAM ACCOUNT ID.bak」に暗号化されて保存されます。ファイル名の末尾に Steam アカウントの番号が含まれています。これを復号化しなくても、「Process Explorer」を使うと Steam のデータにアクセスしている事実はすぐに分かるとのこと。
First step is finding out where Steam is:
Then it will enumerate everything in Steam Cloud.
It doesn't seem to read anything, but just names of all your saves of games
Then it will read localconfig.vdf
after it's done:
42834588 = steam account id
76561197960265728 + account id = steam id = 76561198003100316 (this is my account)
これらは他のユーザーによっても確認されています。少なくとも 2018/5 以降にはもう収集を開始しているようです。私は Epic Games Launcher をインストールしたことがなく、「RANDOM HEX CODE_STEAM ACCOUNT ID.bak」の存在を確かめられません。今はちょっとインストールする勇気がありません。
Fortnite をプレイしている人はチェックしてみてください。
報告された Forum では、この事実には「驚かないな」というコメントがあります。中国企業の Tencent ならこのくらいはやるだろうと考えている人が多いようです。
Windows は通常利用ではアクセス権管理が緩いため、このようなことは簡単にできてしまいます。ファイルの位置を決め打ちで読み取るソフトは以前はよくありました。マルウェアなどもその方法を使うものがあります。私も何かのソフトをインストールする際に管理者権限を要求されたら、あまり渡したくないと思いつつも渡しています。悪さをされると危険だとは思うのですがインストールするためには仕方ない…。
Windows はセキュリティにはちょっと緩いです。最近は Android とかの方がアクセス権に厳しいかもしれません。Windows も Linux のようにアプリケーション毎にアクセス権を設定したりするとこういう事が防げますが…。セキュリティは面倒臭さとのせめぎ合いです。
Steam/Valve がこうしたデータ収集に対抗し、ユーザーデータを暗号化するのが急務でしょう。ユーザーデータのファイルをメモ帳などで開くとそのまま平文で保存してあり、簡単にデータを見ることができます。本名や住所などの重要な個人情報ではないので平文なのでしょう。いつかこういうことが起きるのではないかと心配していましたが、Epic Games が見事にやってのけました。
Facebook や Line などの SNS アプリも連絡帳などのデータを読み取って勝手に色々してくれますし、ユーザーデータを読み取るソフトは見つかっていないだけで色々とあると思います。パスワード管理ソフトや Twitter も重要なデータを平文で保存していたということも発覚したりしています。ユーザー側にセキュリティ対策を負担させるのではなく、システム側で頑張って欲しいところです。
今回はデータ収集の事実が発見されて良かったです。ただデータは勝手に読み取ってはいるのですが、このデータが Tencent に送信されているのかは不明です。(下で追記しましたが、フレンドリストは Epic Games に送信されています。)
データ収集の理由を「フレンドリストの連携のためと、Steam と Epic Games Store で同じゲームを持っている際にセーブデータを利用できるようにするため」と言えばギリギリ言い訳が成立しそうです。勝手に情報収集しているのは言い訳できず、今のところ実際にはセーブデータの共有はないでしょうし、Valve のゲームの情報を読み取っている説明にはなりませんが。
追記
Epic Games は Reddit で下のようにコメントしています。
We use a tracking pixel (tracking.js) for our Support-A-Creator program so we can pay creators. We also track page statistics.
The launcher sends a hardware survey (CPU, GPU, and the like) at a regular interval as outlined in our privacy policy (see the “Information We Collect or Receive” section). You can find the code here.
The UDP traffic highlighted in this post is a launcher feature for communication with the Unreal Editor. The source of the underlying system is available on github.
The majority of the launcher UI is implemented using web technology that is being rendered by Chromium (which is open source). The root certificate and cookie access mentioned above is a result of normal web browser start up.
The launcher scans your active processes to prevent updating games that are currently running. This information is not sent to Epic.
We only import your Steam friends with your explicit permission. The launcher makes an encrypted local copy of your localconfig.vdf Steam file. However information from this file is only sent to Epic if you choose to import your Steam friends, and then only hashed ids of your friends are sent and no other information from the file.
Epic is controlled by Tim Sweeney. We have lots of external shareholders, none of whom have access to customer data.
Daniel Vogel
VP of Engineering
Epic Games Inc.
これに対しては「フレンドリストなどのデータ収集は Steam API を使えば良いのに、なんでローカルデータから収集しているのか」というのが厳しい意見です。データを収集されるのが嫌で Steam Profile を非公開にしている人もいるでしょう。Epic Games Launcher は "your explicit permission" を得る前にローカルデータを収集しています。
フレンドリストはハッシュ化されて送信されているようです。下は Epic Games の行動を決定していると発言している Tim Sweeney の言葉です。
This is data Steam stores in localconfig.vdf. which contains friends and lots of other stuff. The Epic Games launcher never parses library or playtime data and never sends it to Epic. The launcher only sends hashed ids of friends to Epic, and only when you choose to import Steam friends.
Steam ライブラリーの情報とプレイ時間は読み取っておらず送信していないが、フレンドリストはユーザーが Steam のフレンドリストをインポートすると選択したときにハッシュ化して送信しているとのこと。
Epic Games Launcher の挙動としては、まず Steam のユーザーデータのフォルダを一通りチェックし、ユーザーの許可無く Steam のユーザーデータ "localconfig.vdf" を全て読み取り、暗号化してファイルに保存します。その後、Epic Games の言葉を信じれば、Epic Games Launcher でユーザーが Steam のフレンドリストのインポートを求めたらフレンドのIDをハッシュ化して Epic Games 送信するとのこと。
あらかじめデータを収集する意味が分かりませんが、Steam API ではなくローカルファイルを収集する理由については下のように発言しています。
We don't use the Steam API because we minimize the number of third-party libraries we include in our software. While Valve is above reproach, shady API practices are a concern we take very seriously, e.g. see https://appleinsider.com/articles/19/02/22/iphone-android-apps-share-sensitive-health-financial-data-with-facebook-without-users-knowledge
私にはフレンドのIDをハッシュ化して送信する意図が分かりません。Epic Games Launcher では Steam からインポートしたフレンドは、ユーザーのローカル環境でしか保存されないということでしょうか。もし他の端末で Epic Games Launcher にログインしたとき、サーバーにあるハッシュ化されたIDではフレンドが特定されません。そのフレンドが表示されないのなら主張の通りですが、表示されるなら話がおかしくなります。
今回の件は話が色々と出てきていて、どれが正しい情報なのか分かりません。hash じゃなくて encrypt だ、その逆だという指摘もあり、コピーしたファイルは XOR したものだという話も。とりあえず、Steam のローカルデータを読み取っていることは Epic Games のスタッフと Founder の発言から確実です。
それをどこまで読み取っているのか、どれが送信されているのかはユーザー側では判別が難しいです。Epic Games の主張を信じるなら、全てコピーしたユーザーデータの中からフレンドリストしか読み取らず、ユーザーが Steam のフレンドリストを読み込むと選択したときにフレンドの ID がハッシュ化されて Epic Games に送信される。
本当にハッシュ化されたフレンドIDしか送られていないのかは、より詳しい解析が必要となるでしょう。データを送信する際には暗号化していると思いますので、その辺りは詳しい人にお任せです。
Steam がユーザーデータを暗号化すれば終わる話ですが、Epic Games が他のプラットフォームのユーザーデータを密かに読み取るようにしたのはとても印象が悪いです。プライバシーを大切にするなら勝手には読み取らないのでこれは意図的にやっています。当然 GDPR に反するという話も出ています。勝手な読み取りを発見して報告してくれたのは有り難いことです。
今回の件はブラウザーのデータを読み取るマルウェアを思い出させます。昔はパスワードなどを平文で保存していたソフトがよくありました。私はそれで FileZilla を使うのを止めました。