at posts/single.html

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 というサービスへ無料で招待しますよ、という内容。

oauth-attack 01

DMのURLをクリックすると、スパムサイトへとアクセスする。 サイトにはTwitterベースのマフィアゲームという紹介文と赤いボタンが載っている。

oauth-attack 02

赤いボタン (Click here to play!) をクリックすると、Twitterのサイトへと戻ってくる。 Twitterのサイトには「An application would like to connect to your account.」というタイトルと、「Allow Mobster World access?」というメッセージが表示されている。

oauth-attack 03

ここで「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 でログインする場合には、以下のような警告メッセージが表示される。

oauth-attack 04

冒頭に警告アイコンが表示されていたり、「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承認画面のスクリーンショットが載っている。 このインターフェースは参考になる。

関連する日記