Twitterのあたらしいアカウント乗っ取りの件

[追記] このブログへのリンクを気軽にクリックしたそこのアナタ!!!!!
気をつけてください!!!!!!!!!!!!!


経緯


手法

  1. ダイレクトメッセージ経由で短文+短縮URL
  2. callback指定された認証URLをiframeで開く
  3. 2.のiframeのcallbackにはcallback.phpがあって(攻撃者のサーバ上)、アクセストークンを抜き取る
  4. ウハウハ

特徴

  • パスワードを抜き取るような通常のフィッシングサイトではない、Twitterの一種の脆弱性を利用していること
    • →twitter.comにログインした状態なら起こりえる
  • 既存の公式・サードパーティ製クライアントのコンシューマーキーを使用していること
    • →なんで持ってるのって話
  • 旧twitter.comのcssとかjsとかそのまんま使ってる
    • →ソースをちょっとみただけではなにが問題なのかわからない
  • スタートは2chだそうで。
    • →特定が困難

問題点

パスワード抜きの可能性もある
送信フォームあったけど記録されてるかはわからないね。トークンとられてパスワードも抜かれたのならもうウハウハだろうけど。iframeで認証ページが6つほどあったのでトークンが何個かとられててもおかしくない。というか、フォームでパスワードゲットできたのなら、アプリ連携解除されても、また手動でもアプリ連携設定できるよね。

認証方法がまずくね?
トークンをリクエストするときにコールバック先を指定できるなら意図しない動作を利用者にバレずに引き起こすことができる。今回のものは、認証後にそれぞれのクライアントが予定していないところへコールバックしていた。これはまずい。

あれっ、でも、トークンをリクエストするときって、コンシューマーキーとコンシューマーシークレットが必要なんじゃ・・・?


なんでコンシューマーキーとコンシューマーシークレットが使われてるの。
ウワサによればだけど、コンシューマーキーとかは暗号化されずに保存されていたものもあるそうだ。そんなのでは容易に抜き取ることができるだろう。というか、コンシューマーキーはそもそもクライアントサイドにあるものが多いので漏れるのは無理もないかもしれない。

[追記] そもそもコールバックはブラウザ用で使われるもの、モバイル端末の認証を容易にするものではない、という見方もできるかもしれない。だからTwitter社もそのようなものは想定外だったのかもしれない。


というか、これ、頻繁につかいそうなコンシューマーキーとかが使われてるので
連携アプリ解除とかしづらい感ある・あと気づきにくい、でも仕方ない。すべて解除するしかないだろう。

対応方法とか方針とか

じゃあどうするべきなのか。

PIN認証をする
→コールバックを起こさせないようにする。すこし負担が増えるけど仕方ない。

コールバックのドメインを制限する。
→意図しないところへのコールバックを防ぐ

もしDMを送ってしまっていたら
→もう全部のアプリ連携を解除するしかないでしょう。

このくらいしか思いつかなかった。


パターン


けっこう巧妙だったし、いくつかパターンがあるみたいだった。
ウーン、センスあるなあと。

短文の種類

  • ちょっとこれみてよ
  • あの写真
  • やばいw

短縮URLの種類

  • p.tl
  • xtw.me
  • wk.tk
  • 9oo.jp


[追記]もし自分のアカウントからDMを送っていることがわかったら

  1. とりあえず「これはクリックしないでください」とか送って被害者を増やさないようにしましょう。
  2. 該当するメッセージを消去しておく
  3. パソコンのWeb版Twitterのアプリ連携より、すべての連携を解除する(ここで、iOSの連携は解除できないので、Twitter社の対応を待つしかないと思います。すべて解除した状態でもメッセージが勝手に送信される場合は、iOSのトークンが盗られているというのが濃厚でしょう。)
一度アクセストークンをとられてしまうと、oAuthの仕様上、こちらから連携を解除するしかありません。cookieをこちらで消去しても無意味。
一度アプリ連携を解除すれば、以前のトークンは無効化されるよう[要出典]なので、やってみるのもいいかもしれません。

[追記]今すぐにできる対策

知らないドメインのページは開くときに細心の注意を。
わからなければ開かないほうが良いと思います。

これみてよってリンクを送ってきたら「それ、何?」と聞き返すように問うてみましょう。
というか、このページをよんだ方なら、フィッシングサイトだろうなと察しがつくと思うので、「それ、乗っ取られたんじゃね?」とか言って口頭で、もしくは文面で対応法を教えてあげましょう。
決してこのページのURLを貼らないこと。

究極の対策: Twitterやめる

コメント

  1. > コンシューマーキーとかは暗号化されずに保存されていたものもあるそうだ
    ローカルで実行されるクライアント・アプリケーションが使用するコンシューマ・シークレットを暗号化することは原理的に不可能です(どんな暗号化を施したところでそれを復号するのはローカルのプロセッサですから,その時点では復号に必要な情報は全て手元に揃っていることになります)

    返信削除
  2. コメントありがとうございます。
    その通りですね。確実に隠蔽は不可能だと思います。
    ただ、少しでもコンシューマーキーなどの悪用を防止するためにそういった対策の必要性があるのではないかと思いました。

    返信削除

コメントを投稿

このブログの人気の投稿

インターネット共有のための sysctl での設定に躓いた

ISUCON 7 予選に参加した話