[VRChat] アバター盗難に関しての調査、考察と対策

VRC Twitter界隈がアバター盗難(ぶっこ抜き、アバターハックとも)の話題に沸いています。いつもはちょっと技術入門なNoteを楽しく書いていますが、今回は比較的シリアスなテーマを取り上げます。いつものKawaii要素は控えてお送りします。

私が一番伝えたいことは、不法行為であるアバター盗難をユーザが恐れすぎるあまりに、コミュニティ全体が衰退してはいけない、ということです。

原理が理解できないものには、噂や恐怖がついて回り、過剰な反応や偏見、差別によって、悪循環が発生します。

このnoteでは、どのようにアバター盗難が行われるのかを技術的に説明し、対策の可能性を検証し、またどういった人物が、なぜ盗難を行うのかを考察することで、事態に冷静・正確に対応できるようになることを目的としています。

結論から言うと万が一の被害に遭うまで私たちにできることはほとんどありません。得体のしれない恐怖に、かなり心配していたあなたが、読後、また楽しくVRChatができるようになってれば本記事の目的は達成です!

1. はじめに

アバター盗難。怖いですよね。なぜ、怖いんでしょうか。
盗まれるから?自分のアバターが誰かに使われてしまうから?
その根源は、「得体が知れないから」だと考えています。

アバターをどうやって盗まれるかわからない。何故できるのか。
どんなスーパーハッカーが自分に攻撃を仕掛けているのか。
目をつけられたら、何をされるかわからない。

そんな気持ちから、どこかアバターを盗む人は技術的に特別な人であるといった畏敬の念や、それ以上の何かをされるのではないか、という恐れを抱いている人もいるのではないでしょうか。

現実は、違います。
現状アバターを盗むことは作られたツールがあれば「誰にでも出来る」ことであり、現実はキッズが遊び感覚で行っているイタズラです。
そんな彼らを必要以上に恐れることは、かえって彼らを喜ばせることにも繋がります。

エンジニアではあるけれど畑違いである筆者が、Web上に散見されるツール、サービスの類を「お昼休みに、ハヤシライスを食べながら20分で」調査し、その手口と実行可能な範囲を検証しました。
記事を書くのはちょっと時間がかかりましたが、今日のVRCを遊び終わってから2時間くらいでまとめました。
あなたのアバターを盗難して見せびらかしてくる程度の人間は、おそらく数日にわたって必死でやり方を調べて、何度も試行錯誤をして、ようやくそれが出来るようになって、その程度のものをVRC上で自慢したがっている程度の知識と技術しか持っていません。おそらくそれがどうやって動いているかも理解できていないでしょう。アバター盗難に関しては、彼らの技術への尊敬も、恐れることも、必要ないのです。

ほか、本記事の技術的内容に関して更新・追記を希望される方は、適宜更新しますので、ぜひエビデンスと更新が必要な対象および内容を添えてTwitter@Shimotsuki_myonまでDMを送付してください。具体的な情報・手法が含まれていた場合は適切にマスクして公開します。ただし、一部情報は公開段階で本稿の特性から省略・簡易な表記が使用されている場合があり、変更できかねる場合があります。ほか、伝聞・噂・特定個人団体に関する情報はご遠慮ください。
本稿は2021年2月18日の情報をもとに作成されています。

2. アバター盗難のしくみと手口

まずは箇条書きにまとめます。

1. アバターの固有ID(Blueprint ID)を知る。
2. 固有IDを使ってVRChatのサーバからアバターデータをダウンロードする
3. ダウンロードされたアバターデータを自分のアバターとしてVRChatにアップロードする

以上です。簡単でしょう?

まず、本来のVRCがどうやって動いているかを説明します。
アップロードされているVRCのすべてのアバターにはBlueprint IDと呼ばれる固有のIDがあります。これはアップロードするとき、プレイするとき、ありとあらゆる場面で使われています。フレンドと遊ぶとき、あなたのPCはフレンドのID情報からBlueprint IDをVRCのサーバーから一時的にダウンロード(キャッシュ)して再生しています。

画像5


さて、アバター盗難の第一歩であるアバターの固有IDを知るには、基本的にはVRChat上で同じワールドに入る必要があります。Friendになる必要はありません。同じワールドにいるだけでIDを表示してくれるソフトがあります。
一方で、アバターIDをリストにしたものをサービスと称して公開している者も存在しますので、VRC上で会うことが必須というわけでもありません
ただし、このリストは膨大な情報量であり、お目当てのアバターを探しているケースや嫌がらせを行う被害者を探しているケースに関してはPublicを徘徊することで自らの気に入るアバターを探して、Blueprint IDハンティングを行っているといえるでしょう。

画像7

続いて、固有IDからアバターデータをダウンロードします。ここで、ワールドでのロード時を狙ったり、メモリをハックしたり、上等なことはしていません。
「その固有IDを持った人と自分が同じワールドにいて、その人を表示したいのでアバターデータを送ってください」と、VRCサーバーに誤認させる命令を送って、キャッシュとしてダウンロードした情報をアバターデータとして悪用しています。やり方はツールのボタンを押すだけなので、簡単にできてしまいます。

画像7

最後に、違法ダウンロードしたアバターファイルから自分のアバターとしてアップロードすることも同ツールから行われます。サムネイルや名前、説明はアバターに紐づけられた情報なので変えられます。
が、この時、ダウンロードされたファイルはUnityで編集可能な形式ではない(VRC独自のファイル形式)ので、中身を同ツールやUnityで直接編集することはできません。

画像7


こうして、アバター盗難は行われています。

さて、お気づきでしょうか。
技術的な事柄のすべては「非正規VRCクライアント」によって行われています。「悪意あるユーザ」はただただボタンを押しているだけです。単に用意された環境でツールを使っているだけに過ぎず、彼らは何の技術も理解も持ち合わせていません。



ところで、全般にわたって行われているVRCサーバからDLされている「アバターデータ」ですが、これは独自のキャッシュファイルで、Unitypackageなどの汎用ファイルではありません。VRCは対策を行っていますが、それをクラッキングして再利用させている・している悪い奴がいるという話です。

さて、この独自ファイルを解析して再度Unity上で編集することはちょっと難しいですが、うまくツールを揃えればできなくはないです。
とはいえ、盗まれたアバターを簡単に解析して色々調べられてしまうかも…というのは少し心配しすぎです。
ただし、ストーカーレベルで執着心があれば不可能ではないため、個人が特定できる情報をアバターのファイルに使うのは良くありません(ファイル名に本名を使うなど)。

ほか、データをDLして自分のアバターとしてアップロードするよりも、もっとお手軽な手法として、Clone禁止のPrivateアバターをPublicアバターと同じようにCloneしてしまう手法も存在していたようですが、現在実行可能かどうかは不明でした(VRCにて対策済のようです)。

3. わたしたちにできる対策

極論を言うと、ありません。
どんな強固なセキュリティであれ、破れないものはありません。

そんなことはない!VRCが悪い、プレイヤーは対策を採れ、と思う人だけ読んでください。
仮にVRChatが非常に強固な暗号化を施したとしましょう。それでも、例えばプレイのためキャッシュされたメモリをハックしてオフライン環境に持ち込み、スーパーコンピュータで片っ端から総当たり攻撃をすれば、人類が滅亡するよりは早くあなたのアバターをハックできるでしょう。この件は、オンラインゲーム共通の仕組みに不法アクセスした結果行われています。
すべてのセキュリティは突破することができます。

すべての人はいずれ死にます。簡単に死なないようにお医者さんがいます。
セキュリティは突破されます。簡単に突破されないようにセキュリティエンジニアがいます。
人が通り魔に刺されて死んだとき、あなたはお医者さんや刺された人を責めますか?通り魔が悪であることは明らかです。
本当に責められるべきはサービスを提供し日々更新を続けているVRChatでも、Publicで遊ぶプレイヤーでもありません。
悪いのは、悪質なツールを開発し、それを配布し、使うユーザです。

VRCにもっと対策を取ってほしいのは事実、と私も思っていましたが…いわゆる非正規ツールのLogを見ると頻繁にUpdateが行われていたり、使えなくなっている機能があるとアナウンスされています。つまりこれはVRC側もしっかり対策を取っていて、それでも悪質なプレイヤーといたちごっこが行われている証左であります。

それでは可能性を一つ一つ見ていきましょう。

#1 アバターの固有ID(BlueprintID)を知られないには?
極論を言うと、Publicへ行かないことは直接的ではないですが、一つの対策として成り立ってしまいます。なぜならそこには目ぼしいアバターを狙っている者がいる可能性があるからです。しかし、それは通り魔がいるかもしれないから外に出ないのと同じです。
そして、片っ端からBlueprint IDを記録・公開して「サービス」を名乗っている不届き者も既に存在しています。そうすればPublicへ行かないことすら対策にはなりません。
リスクを過剰に恐れて人生の楽しみを失う前に考えてみてください。通りに出なくても部屋に泥棒が入ってくる可能性だってあるんです。

#2 固有IDからダウンロードされないようにするには?
不可能です。

が、一度流出した固有IDから延々とDLされ続けること、また最新版のアバターをDLさせないことはできます
もし、アバターが盗まれたり、IDが漏れていると感じた場合、下記手順でBlueprint IDをDetachし、再Uploadすると、新しいBlueprintがあなたのアバターに付与されます。
既にDLされたものや、上記のキャッシュを保存し再配布している集団を通して一度でもDLされてしまった場合はそのバージョンの流出を止めることはできません。しかし、一度盗難されたBlueprintIDを引き続き使い続けると、自分が更新したアバターを何度でも最新版としてDLされてしまいます。
Blueprint IDを変更することで再度そのIDが認識されない限りは新規VersionをDLされることは避けられます。

手順を下記に記します。

画像1

VRC Avatar Descripterと同じところにある、Pipeline managerのDetachボタンをクリック(一度でもUploadしているとここにBlueprintIDが表示されています。)

Detach後Uploadすると、新規のアバターとして登録されます。

画像2

新しいアバターをアップロードしたら、VRC SDKから古いアバターをDelete。これでVRCから古いBlueprintを不正にDLしようとしても当該アバターが削除されているためにDLできなくなります。新しいアバターのBlueprintは#1の部分で認識されない限りは安全です。

単純なDeleteの他の手としては、多くの不正DLツールにおいてBlueprint IDに紐づけられた最新版をダウンロードする仕組みになっていることから、流出したBlueprint IDを全く別の無意味なアバターにAttachし、上書きアップロードする手もあります。この場合、一旦流出してしまった事実は諦めるしかありませんが、以後そのIDを使って再度違法DLしようとした人はダミーアバターしか手に入れられないようになります。ただし、これも盗人側が自動収集するようなツールを使っている場合、Blueprint IDを回覧されている場合などには単純なDeleteよりも効果的な可能性がありますが、あくまで限定的な効果に留まります。

#3 一度ダウンロードされたファイルを再アップロードや解析されることを防ぐ手法はありません。
不正に再アップロードされたアバターには新しいBlueprint IDが割り振られ、別のアバター扱いになってしまいますので、被害者側から出来ることはありません。
悪質なプレイヤーはReportしてVRCにBANしてもらうしかありません。
同じく、一度DLされたファイルが解析されることを防ぐ方法はありません。

4. (おそらく)意味のない対策と、間違った情報

・(×)海外や○○勢など、特定の人種やグループを避ける。
 →かなしいのでやめましょう。テロリストに屈してはいけない。

一方でいますでにアバター盗難を行っている人物とFriendであり続けることは大きなリスクです。もしあなたがそのFriendと関係を持ち続けたいのなら、更生を促しましょう。本稿の第5章 <私見> あたりを読ませて少し凹んでもらってもいいかもしれません。考えを改めたなら、暖かく迎えてあげてください。それを踏まえてもその人物が行動を改めないのならば…。
VRC上に限らずBlueprintIDは収集可能とはいえ、アバターを盗難する短絡的な人物からすれば、ワールドで目に付いたアバターを盗難する方がよっぽど楽なのは事実です。悪意あるユーザをFriend+インスタンスに誘導してしまう結果となった場合、嫌な思いをするのはあなたではなく、あなたのほかのFriendです。あなたの話も聞かない、悪意あるユーザとFriendであり続けるリスクは、あなた自身がPublicへ行く/行かないといった選択の自己責任範囲を超えています。よく考えてください。

(×)Publicに行かなければ(Publicで○○しなければ)100%安全だ。
 →そんなことはありません。セキュリティに100%はありません。
 理由は先述の通りです。過度に恐れるあまり自らの行動に制約を課しすぎることはおすすめできません。
 またアバターロードやアバター変更がデータ取得のトリガになっているという情報はなかったため、Publicで○○しない系の対策はあまり意味がありません。突発的な嫌がらせ避けとして、Public用・Private用にアバターを分けることは強いて言えばアリかもしれません。

(△)アバターの違法DL後、改変はできないという情報
 →単体ツールではできないですが、別途ツールの組み合わせでAsset単位まで分解することは可能であり、それを再度Unityで再構成することでアバターが開発された環境へ持っていくことは不可能ではないと考えます。
なので、アバターロックや独自のコピーガード等をUnity上で実装することは、基本的なツールしか使えない知識レベルの低いイタズラキッズや、根気の無い人間に対して有効ですが、執念を持ったストーカーに対しては100%の守りではありません。信用しすぎないようにしましょう。

(△)Settings → FutureProofPublishのチェックを外すことが対策になる
 →ここは私もTwitterで触れてしまった部分ですが、調査の範囲ではアカウントそのものがハックされない限りUnitypackageとしてDLする方法はなさそうです。
ただし、チェックを外すことで明らかにアップロードは速くなるのでおすすめの設定です。

画像3

5. <私見>なぜ盗むのか?

すべての根源は承認欲求と考えています。

承認欲求は人間の本能的欲求にして、人間の社会が回ることに不可欠なものです。例えばかわいいアバターになって見てもらいたい、かっこいい車に乗りたい、美しい絵を描いてみてもらいたい、音楽で人を魅了したい…こういった自らの欲求に対して人々は働き、互いにサービスを提供し、稼いだお金で別の人からサービスを購入することで、ゼロサムゲームではないWin-Winの経済が循環し、人類の文化・文明が発展してきました。これはおそらく健全なものであって、否定すべきものではありません。

一方で、VRC用のアバター盗用に使われているソフトウェアはオンライン上で無償配布されています。これを配っている人は「こういったものを作れる技術力のある自分」を見せびらかしたいと考えています。謂わば金銭的にメリットのない不法行為を行っているありとあらゆるハッカー・クラッカーは名声と承認欲求のために違法性のあるツールを作成し、公開し、そのコミュニティでは称賛を得ています。彼らはいずれ更生してエンジニアになったり、いよいよ逮捕されたりしてその活動に終わりを迎えます。
その文化に対する是非はここでは語りません。

さて、こういった非正規ソフトウェアを使っている人はどうでしょう。彼らは「スクリプトキディ」と言われ、他人の使ったツール(スクリプト)を使って不法行為を行う”ガキ”(Kiddy)です。Scriptには台本という意味もあり、台本通りにしか動けない能無し、という含みもあります。
スクリプトキディは何もできません。自分でツールを作ることも出来なければ、仮想世界でも現実世界でも他人に認められることも無く、他人の作ったスクリプトで、他人の邪魔をして、他人が驚いたり苦しむことでようやく自分が承認されることに喜びを感じています。何故でしょうか。スクリプトそのものを見つけることすら容易といえますが、一般人はそもそもそんなものを探そうともしないので、スクリプトキディ本人が何か凄いことをしているように誤認してしまいます。スクリプトキディは元々なにも出来ない能無しなので、誤解ですごいと思われることでも承認欲求を満たせるのです。

先述の仕組み上、アバターを盗むためにわざわざFriendになる必要は無いと書きました。なぜ彼らはFriendを送ってくるのか。それは、あなたがSafety設定でFriend以外のアバターを見えないようにしていたら、彼らがあなたのアバターを盗んだことがわからないからです。彼らはあなたのアバターを盗むのが目的ではありません、「自分にアバターを盗まれたことでリアクションをするあなた」を見たいのです。

彼らスクリプトキディを殺す方法がひとつあります。こうして手口を公開して、お前は凄くない、ツールを使っているただの”能無しのガキ”だということを人々に、そして彼ら自身に見せつけることです。

6. おわりに

ちょっと熱くなってしまった部分もありましたが、書きたいことは書けたと思います。
みんなでワイワイやるのが楽しいVRChat、つまらない人のせいで疑心暗鬼になったり、コミュニティが閉じていってしまうのはとても悲しいです。
また、対策が出来ないことに対して心をとがらせるのはつらいものです。

もし、アバターぶっこ抜きを見かけたら、「え?未だにそんなことやってるの?どうせどっかの誰かが作ったツールで抜いてんでしょ?しょーもな!スクリプトキディかよ!」と笑い飛ばしましょう。アバターを盗むことはアングラでもハッキングでもダークウェブでもなんでもありません。
アバターぶっこ抜きは技術も知識も必要としない、万引きみたいな、犯罪の上にカッコ悪い行為だ!ということを浸透させていきましょう。

私たちの武器は冷静さと知識です。

以上です。たのしいVRChatライフを!






この記事が気に入ったらサポートをしてみませんか?