なぜVRChatアカウントやパスワードを入力するサービスがいけないのか

はじめに

一部のWebサービスでVRChat IDとパスワードを入力させるものがあります。
これはVRChat APIを利用するために必要なものなのですが、簡単に言ってしまうと以下のようにVRChat運営に禁止されている行為のようです。
なぜ禁止されているのか、具体的にどういう危険性があるのかをこの記事では書いていきたいと思います。

また、この記事ではVRChat IDとパスワードを要求するアプリ・サービスの提供者を「サービス提供者」と呼ぶことにします。

もし間違いなどありましたら気軽に指摘していただけると助かります。

Terms of Service (利用規約) より

 You are solely responsible for maintaining the confidentiality of your account and password, and you accept responsibility for all activities that occur under your account. If you have reason to believe that your account is no longer secure, then you must immediately notify us at support@vrchat.com.

(以下Google翻訳)

あなたはあなたのアカウントとパスワードの機密性を維持することに対して単独で責任があり、あなたはあなたのアカウントの下で起こるすべての活動に対する責任を引き受けます。あなたのアカウントが安全ではなくなったと信じる理由がある場合は、すぐにsupport@vrchat.comまでご連絡ください。

API の利用に関して問い合わせたオニオンさんのツイート

VRChat API で何が出来るのか

公式サイト、VRChatクライアント、UnityのVRChat SDKで行える操作はすべて出来ると思ったほうが良いです。
やられたら困ると思われる例をいくつか挙げておきます。

  • アバター/ワールドの盗難 (ファイルのダウンロード)
  • アバター/ワールドの全削除
  • フレンドの全削除

現在のVRChat APIでは個別の権限について制御できないので、認証を通してしまうとこれらの事を行うことが可能になります。
Twitter連携のアプリやTwitterログインに対応してるサービスを利用しても危険ではないのは、この「個別の権限について制御」が出来るからです。
(タイムラインを読むだけしかできないとか。こういう認証と権限を制限をするために OAuth や OpenID Connect という規格があります)

よくありそうな質問

代替案はないの?

今の所ありません。VRChat API が OAuth や OpenID Connect に対応するのを祈るか、新機能として機能追加を要求するのが良いと思います。

サービス提供者が信頼できるので良いのでは?

覚悟を持って利用するなら、そこはもう個人の裁量だと思います。
ただし、不正操作などのトラブルが起こった場合、VRChatが正式に提供しているサービスの範囲外でトラブルの原因となる操作が行われている可能性があるためサポートは受けられなくなると思ったほうが良いと思います。(利用規約では「あなたのアカウントとパスワードの機密性を維持すること」とあるのに自らアカウントとパスワードをサービス提供者から利用可能な場所に入力しているため)
また、これらのトラブルの際にサービス提供者を疑わなくてはいけません。

サービス提供者が信頼できるかどうかはVRChat運営からはわからないため、これは極端な例ですが「中国の怪しいVRChatアカウントとパスワードを入力させるサービス」と同じ扱いになると考えてください。

個人的には、関連サービスを作れるくらいの人はこういう危険性を理解できてると思うので、危険性についてなにも触れないで利用を推奨するのはフェアではないと思います。

サービス提供者がID/パスワードの保存はしてないと言ってるので大丈夫?

まず第一にサービス提供者が信用できるか。これは個人によるのでなんとも言えませんが、客観的に評価することは難しいと思います。途中で心変わりによって突然IDとパスワードを盗みたくなるかもしれません。
また、サービス提供者にその気がなくてもXSSなどの脆弱性で第三者によってID/パスワードだったり認証情報が盗まれる可能性もあります。

VRChat 公式の API を使ってるなら大丈夫なのでは?

VRChatのAPIというのはあくまでも「VRChatクライアント」及び「VRChat公式サイト」と「VRChat SDK (Unity)」で利用するために作られていて関連サービスを提供するために作られているわけではありません。
APIの利用は許されているようですが、おそらくこれは個人でプログラムを書いて何かを調査したりするために利用することが許されているのだと思います。
(自分で書いたプログラムを自分のアカウントで使うため、アカウント情報の漏洩はしないものと見做している)

ID / Password を入力しないものなら大丈夫?

VRChat運営のポリシーには一応反していないと思いますが、結局すべての権限をアプリ・サービス側で利用できることになるのでなにかあったときの影響度はあまり変わりません。
ただ認証トークン(一時的な利用権限)の期限切れによって、継続的に不正利用されることはなくなると思います。

具体的に他の方法での認証を提供してる例を以下に挙げます。

  • Chrome拡張で公式ページの機能を拡張する
    • 公式ページの認証トークンでAPIにアクセスできる(ので全てのAPIによる操作が可能)
  • 認証トークンを入力するサービス
    • 入力された認証トークンでAPIにアクセスできる(ので全てのAPIによる操作が可能)