こんばんは、ritouです。
IPAからたいへんにためになる呼びかけが出されています。
今月の呼びかけ:IPA 独立行政法人 情報処理推進機構
こんなことが書いてあります。
- SNSとOAuthで連携するサービス多いよね
- Twitterで誰かをフォローするとか言って得た権限を使って投稿したりする悪意のあるサービスもあるよ
- 今の連携状態を確認して、連携先はしっかり見極めてね
- 他にも気をつけた方がいいことあるから教えるね
このような呼びかけがされるほどOAuthもメジャーになったものだ(遠い目 とか思いながら読んでました。
連係解除や確認の方法まで書かれていてとても親切だと思ったのですが、少しだけ気になる点が。
3.「連携サービスをAさんの権限で動作させてもよいか?」という内容のページが表示されます。ここで「ログイン」をクリックしてしまうと、TwitterのIDとパスワードを入力していないにも関わらず、Aさんの権限をその連携サービスに対して許可することになります。つまり、AさんのTwitterアカウントがその連携サービスに乗っ取られた状態になってしまいます※2。今回IPAで検証したケースでは、連携サービスがAさんの代わりに勝手に、【1】で受け取ったものと同じ内容の「ツイート」をしてしまうことを確認しました(図1-3の【3】)。
今月の呼びかけ:IPA 独立行政法人 情報処理推進機構
勝手に「ツイート」されるだけであれば、それほど大きな実害ではありませんが、問題は連携サービスにアカウント利用権限を乗っ取られてしまうという点です。
今月の呼びかけ:IPA 独立行政法人 情報処理推進機構
利用権限の乗っ取り?
※2 乗っ取られた状態:実際に行われているのは「認可情報の委譲」で、アカウントの乗っ取りではありませんが、便宜上「乗っ取り」としています。
今月の呼びかけ:IPA 独立行政法人 情報処理推進機構
・・・
OAuthにより権限を受け取ったことを「乗っ取り」と表現しています。
便宜上とあるものの、どうしてもしっくりこない。
私はこう思ったわけです。
- 「アカウント乗っ取り」ってフィッシングなどでID/PW奪って全ての権限を取得し、正しいユーザーが利用できない状態にするぐらいのイメージである
- ユーザーのID/PWを別のサービスに預けることで発生する「アカウント乗っ取り」のリスクを避けるためのしくみがOAuthである
- Twitterのようにscopeがざっくりしてて残念なOAuth Serverもあるし、与える権限が広ければそりゃあいろいろされるけど
- ID/PWを扱わないOAuthでは、ClientにPW再設定やアカウントの削除などの権限を与えないのが"暗黙的な常識"であり、全ての権限は渡らないはず
- この例の場合はしれっと本人っぽく投稿してさらにフォロワーもそれを本人のものだと思って連鎖が始まる的な説明なので「乗っ取り」ではなく「なりすまし」の方が適切ではないか
こんな書き方すると「なんだ、OAuthも(Basic認証とかと同じぐらい)危ないんじゃん、だったら簡単な方使うわ」とかいう開発者が出てきたりしそうで嫌です。
試しに「乗っ取り」の部分を「なりすまし」に変えた文章を考えてみます。
3.「連携サービスをAさんの権限で動作させてもよいか?」という内容のページが表示されます。ここで「ログイン」をクリックしてしまうと、TwitterのIDとパスワードを入力していないにも関わらず、Aさんの権限をその連携サービスに対して許可することになります。つまり、その連携サービスがAさんのTwitterアカウントになりすませる状態になってしまいます※2。今回IPAで検証したケースでは、連携サービスがAさんの代わりに勝手に、【1】で受け取ったものと同じ内容の「ツイート」をしてしまうことを確認しました(図1-3の【3】)。
個人的にはこっちの方がしっくり来ます。みなさんはどう思われたでしょうか?
以上、こまけぇ話でございました。