OAuthを悪用したspam? shoppybag の動作内容 仮説編

おそらくは、このTwitterスパムと同系統。
http://www.itmedia.co.jp/news/articles/0908/10/news015.html
 
実際にshoppybagのサイトに行ったら、
「招待制なんだゴメンね。」
と言われて登録できなかった。
 
しかたないので、ついったーで誰かそのspamを転送してくれと頼みつつ、机上で調査。
 
勝手にメールを送られるまでの流れはこんな感じらしい。
1)ShoppyBagに登録したら、Google API の OAuth 認証が掛かる
2)ユーザが Google アカウントで認証する
3)Google API の利用許可画面が出る
4)許可してしまうと、ShoppyBagがGmailAPI経由で制御可能になる
5)後は自由にspam送信。
 
何故こんなコトが出来るのかは、まず、OAuth について知らないとダメ。
で、OAuthについては以下のURLが参考になります。
http://ja.wikipedia.org/wiki/OAuth
http://gihyo.jp/dev/feature/01/oauth/0001
http://www.atmarkit.co.jp/fsecurity/special/106oauth/oauth01.html
 
まあ、要するにOAuth は自分のアカウントに関する権限を他者にも付与するための仕様です。
で、今回は 他者=shoppybag アカウントに関する権限=アドレス帳の閲覧、メール送信 だったのかなと。
それを、ユーザが意図せず(理解せず)許可してしまったことが問題だったのではないかと。
 
先の流れをOAuthにあてはめて書き起こすとこんな感じ。
Service Providerがgoogle
ConsumerがShoppyBagね。
1)ShoppyBag に登録したら、Google API の リクエストトークンが発行される
2)ユーザが Googleにリダイレクトされ、認証を要求される
3)認証後、リクエストトークンの認可画面が表示される
4)許可すると、ShoppyBag は認可済みリクエストトークンをアクセストークンに変換する。
5)後はアクセストークンを使って、自由にspam送信。
 
ちなみに、上記手続きはまともなアプリケーションと全く違わないので、google側でこれを見分けるのは不可能。
(ユーザが許可している時点でgoogleはその意志を受け入れないといけない)

これからは、「OAuthの認可画面はパスワード入力画面と同じぐらい危険だよ」っていう啓蒙が必要になるのかもね。