OAuthを悪用したTwitter DMスパムが登場
はじめに
今回のDMスパムについての基本的な情報です。
- 「MobsterWorld」と書かれたDMが届いても無視しましょう
- 間違ってURLを踏んで、さらにTwitterの「ALLOW」ボタンを押してしまった人は、後述の「ALLOWをクリック
感染してしまったら」の対処をしましょう(URLを踏んでも、ALLOWボタンを押していなければ大丈夫です)
ここから本題
これは初めてOAuthが悪用された事例になるかも。
TwitterでスパムDMが広がっている。これを踏むと、意図せずにフォロワーへスパムDMを送信してしまうというもの。 スパムDMについては ITmedia に記事がでている。
Twitterで8月1日ごろから、スパムDM(ダイレクトメッセージ)が出回っている。DMに書かれたURLのページにアクセスし、ボタンをクリックすると、同じDMを自動でフォロワーに送り付けるという仕組み。
ここで注目なのが、「ボタンをクリックすると、同じDMを自動でフォロワーに送り付ける」の一文。 これまでにも SNS を悪用したスパムDMは存在したけど、たいていはスパムサイトにIDとパスワードを教えてしまうか、サイトにセキュリティ上の問題(CSRFへの脆弱性)があった場合だった。 もともと、SNS経由のスパムDMは知り合いからのメッセージということで警戒感が薄れてしまうけど、今回はボタンのクリックだけでDMが送られてしまうという、より広まりやすい条件になっている。
スパムDMが送られるまでの流れ
まず、知り合いから自分のTwitterアカウントにDMが届く。 DMは、 MobsterWorld というサービスへ無料で招待しますよ、という内容。
DMのURLをクリックすると、スパムサイトへとアクセスする。 サイトにはTwitterベースのマフィアゲームという紹介文と赤いボタンが載っている。
赤いボタン (Click here to play!) をクリックすると、Twitterのサイトへと戻ってくる。 Twitterのサイトには「An application would like to connect to your account.」というタイトルと、「Allow Mobster World access?」というメッセージが表示されている。
ここで「Allow」をクリックすると、先ほど送られてきたDMと同じ内容が、今度は自分の名前で他のフォロワーへと自動的に送られてしまう。
ALLOWをクリック 感染 してしまったら
ITmediaの記事にあるように、Twitterの画面から「設定」→「このユーザーに対する操作」をクリックして、「Mobster World」の「許可を取り消す」をクリックすればOK。
ボタンクリックだけでDMが送られる理由
これはウイルスや脆弱性じゃなくて、OAuthという仕組みを見事に悪用している。 OAuth詐欺とでも言えばいいのか。
OAuthというのは、Webサービスへのアクセス権を、他のサービスへ与えるための仕組み。 たとえば、ブログを更新すると、自動的にブログのタイトルを Twitter でつぶやいてくれるというサービスがあったとする。 普通は、 Twitter の ID とパスワードを、そのブログサービスに教えることで実現するんだけど、これを「パスワードを教えることなく」実現できるのが OAuth のいいところ。 OAuthについての詳細は、以下のサイトを参照。
ちょっと難しいけど、OAuthは「Twitterのパスワードを教えずに、パスワードを教えるのと同じこと(つぶやき)ができる仕組み」と思ってもらえればOK。
スパムDMの話に戻る。 先ほどの Mobster World サイトのボタンは、実は OAuth 要求を Twitter に送るためのボタンになってる。 なので、Twitterのサイトでは、「Mobster World にあなたの Twitter アカウントの権限を与えますか?」というメッセージを表示している。 ここで、「ALLOW(与えるよー)」ボタンを押すと、スパムサイト (Mobster World) にアカウント権限を与えてしまうことになり、このサイトがユーザの代わりに勝手にDMを送れるようになってしまうという訳。
何が問題なのか?
ここで「OAuthって怖い」と考えそうだけど、そうじゃない。 これだけ WebAPI が普及した今、「パスワードを教えずに、パスワードを教えるのと同じことができる仕組み」自体は必要。
問題は、 OAuth の運用方法、特にユーザインタフェースじゃないかと思う。 Twitter の確認画面だけど、「パスワードを教えるのと同じことができる」ことを確認するには、少し説明不足。
- メッセージの「would like to connect to your account」と「Allow ×× access?」だけでは、つぶやき権限を与えるという意味には読み取りづらい。
- その間に、小さな字で「access and update」と書かれているけど、DMを送ることができるとまでは書いていない。
- 「拒否する」は日本語なのに、「ALLOW」は英語のまま。
例えば、Yahoo!の OpenID でログインする場合には、以下のような警告メッセージが表示される。
冒頭に警告アイコンが表示されていたり、「Warning」と書かれていたりと、利用者が一瞬手を止めるようなデザインになっている。 OpenID のように ID を通知するだけでもこのメッセージなので、アクセス権限を与える OAuth ならもう少し強めのメッセージの方がいいんじゃないかな。 それに、ログインのたびに確認を求める OpenID と違って、 OAuth は一度許可したら取り消すまではずっと有効になる。 ユーザは1サービスあたり1回だけの確認なので、少し手間だったとしても問題ない。
例えば、「私は危険性を理解した上で、○○へアクセス権限を与えます」というチェックボックスを入れないと「ALLOWボタン」が有効にならないとか、ね。危険性という言葉がネガティブなら、「私は○○サイトを信頼するので、アクセス権限を与えます」でもいい。 合わせて、アクセス権限が何を意味するのかも明記する。
- Access … あなたのフォロワーの発言を○○サイトが読めるようになります
- Update … あなたに代わって○○サイトがあなたのつぶやきを更新できるようになります
さらに、DMはUpdateとは別の権限にしたほうがよさそう。
まとめ
- 今回のスパムDMは Twitter やクライアントに脆弱性がある訳じゃない。
- OAuthを悪用したフィッシング、OAuth詐欺のようなもの。
- OAuthの知名度が低い現状では、対応サイト(SP側)の承認画面にて周知を徹底すべき。
OAuth はまだ認知度が低いので、幅広いユーザが使うサービスで使う場合は、ユーザへの説明を丁寧にすべきといういい事例になったと思う。 パスワードを教えることに近い(もちろん完全に同じじゃないけど)ことをやるための仕組みだし、「パスワード入力欄」が表示されない分だけ、さらにユーザに注意を促すことが大切。 でも、こういう事件を経ながら、少しずつ普及するんじゃないかな。
また、ユーザとしては一般論として、怪しいDM・URLは無視することと、(特に)英語のメッセージを読み飛ばさない(分からないならボタンをクリックしない)ことが自衛として大切かなぁ。
追記
MobstarWorldのOAuth利用スパムについて - r-weblifeという記事に、Yahoo!とYahoo! JapanのOAuth承認画面のスクリーンショットが載っている。 このインターフェースは参考になる。