水曜日、Twitterはログイン時における多要素認証(multi-factor login verification)を導入した。良いニュース?うーん…、それは場合によりけりだ。

 Twitterの最初の実装では、SMSに依存した2FA(2要素認証、two-factor authentication)になっている。

 しかし…、Twitterはツイートの送受信の方法としてもSMSを使用している(SMSをソーシャルとセキュリティの2つの役割で用いることになる)。SMS経由でやってくるツイートを「STOP」することも可能で、これには意味がある。なぜなら、時に予期せずにローミングすることもあるため、SMSの機能を停止する手段が必要になっている。でなければ高額な請求が発生し得るだろう。

 あいにく、攻撃者がターゲットの電話番号を知っていれば、SMSスプーフィングを用いて2FAを無効にすることができる。

Twitter's SMS 2FA

 我々はあるテストを行った。

 STOPコマンドによりアカウントから電話番号が削除される。その結果Twitterの2FAが無効になる。

 これは良くないな。

 しかし、この場合さらに悪い可能性さえある。

 もしまだ2FAを有効にしていないのなら、スピアフィッシングを経てあなたのアカウントへアクセスできるようになった攻撃者が、自身で2FAを有効にできるのだ!

 必要なのは、適当な電話番号と「GO」というコマンドのSMSスプーフィングだけだ。

Twitter's SMS 2FA

 すると攻撃者は当該アカウントの2FAを有効にすることができる。

Twitter's SMS 2FA

 続いてメッセージを送信する(このメッセージには確認コードが含まれていない。つまり現実問題として確認コードは不要なのだ)。

Twitter's SMS 2FA

 そして「Yes」をクリックする。

Twitter's SMS 2FA

 これで終わりだ。

 電話番号を追加するのに、確認コードは一切必要ない(アカウントに紐づくメールアドレスの変更には確認が求められる)。

 以下は犠牲者が目にするものだ。当該アカウントのパスワードをリセットしたとしてもだ。

Twitter's SMS 2FA

 犠牲者は締め出され、Twitterのサポート無しではアカウントを回復できない。

 したがって…、誰かがあなたの代わりにあなたのアカウントの2FAを有効にする前に、おそらく自分でやるべきだ。

 幸運にも、Twitterユーザの大多数は重要なターゲットとはならない。不幸にも、たとえば@APといったアカウントはターゲットになる。そしてTwitterのSMSベースの2FAは、熱心な攻撃者が使用する場合、手助けになるどころか有害になり得る。

 Twitterのブログ記事では次のように述べられている。「this feature has cleared the way for us to deliver more account security enhancements in the future.(この機能は、今後さらにアカウントのセキュリティを強化する道を開くことになる)」

 そのように願おう。

追記:良い知らせ(たぶん)

 Lucian Constantin2012年12月の記事によると、発信元の電話番号の電話会社をTwitterが認識し、電話会社がショートコードをサポートしている場合、Twitterのバックエンドは、ロングコードで送られたコマンドは受け付けない。そして、ショートコードで発信元の電話番号をスプーフすることはできない。

 つまり、もしあなたの電話会社がTwitterのショートコードをサポートしているなら、「STOP」コマンドは送信できない。しかしながら、フィッシングによって侵害された場合、攻撃者が自分の電話番号をあなたのアカウントに追加することは、なおも十分に可能だ。

 Twitterでは2FAを有効にする際に、多要素認証は求められない。パスワードがあれば誰でも簡単に電話番号を追加できるのだ。