あらすじ
先日、「ツイート数カウントくん」というTwitter連携アプリを認証していた12万アカウントから一斉にブロック・フォロー処理が実行される事件がありました。
その件の詳細に関しては以下のまとめ記事等をお読みください。
ツイート数カウントくんのトークンが盗まれたようです – Togetterまとめ
関連して注意を呼びかけるツイートが増えています。これについて補足説明の形で説明させて頂きます。
ツイッターを楽しく使うのにアプリを使うのもいいと思います。だけどなにかしらの権限を要求されたとき、それを渡していいかどうか考えてください。「ツイートを見る」くらいならいいですが、詐欺の片棒担ぎくらいは頻繁に行われてるんですよ? pic.twitter.com/7eKrouW15t
— 中迎 聡(18歳の全手動bot) (@nakamukae) 2014, 6月 16
こちらがリプライ数チェッカ―で頂いている権限です。
「新しくフォローする」と「プロフィールを更新する」権限を余分に取得しているように見えてしまいますが、これは必要最低限の権限になっています。
Twitter連携アプリというのはTwitterにお願いして動かしているものなのですが、アプリが許可を貰い受け、アカウントを操作する合鍵を取得する部分はTwitter側が担当しています。
その合鍵で入れる範囲は以下の3つのみからの指定になります。
・Read only
タイムラインの取得などを行えます。アクションを起こす行為(つぶやき/フォロー/アンフォロー/ブロック/スパム報告/プロフィール変更など)は行えません。
・Read and Write
Read権限の他に、先ほどの自発的な行為の全てが行えます。
・Read, Write and Access direct messages
Read and Write権限の他にDirectMessageを取得することが可能です。
リプライ数チェッカ―の認証画面は、Read and Write権限となります。
各アプリに必要な”最小限の”権限
具体例を挙げてご紹介していきます。リプライ数チェッカーは4番に当てはまります。
- 占い・診断系アプリ(結果をツイートできる)
- フォロー関係を見やすくWebページで表示する
- フォローやブロックを通知する
- 定期的にツイートで通知する
1番のアプリに関しては、Read権限のみで問題ありません。1度ツイートするだけであれば、ユーザーが手動でツイートボタンを押さなければいけませんが、Twitter社が用意している専用のページがあります。一度使った後には認証を止めるのも良いでしょう。
次に2番のアプリに関しても同様です。フォローしている中で返されていない人数を調べる、等を一度見るだけであれば1番のアプリとなんら変わりありません。
3番のアプリでは、「通知」する為には定期的に状況を確認する必要があります。そして、その通知をツイートで行う場合にはRead and Write権限が必要でしょう。
1番の際に言及したページはツイート毎に手動でボタンを押さなければツイートされませんので使用できません。
通知をDirect Messageの送信で行う場合Read,Write and direct messages権限になるでしょうか。※1
最後に4番のアプリに関して。こちらもダイレクトメッセージで通知するかどうかで権限が変わりますが、3番と同様です。
※1.公式の英語での記述が分かりづらいですが、Direct Message権限がなくても今の所は送信ができています。
安全性について
今回の事件の原因について、不正アクセスから守る側の安全性について考えます。
個人で運営しているサーバーですと安全性は企業より劣るのは事実です。しかし、企業であれば絶対に安心だ、という割り切り方が正しいかといえば、そうではありません。
つい先日もTweetDeckに脆弱性が見つかりました。TweetDeckはTwitter社が提供しているクライアントですが、こういったこともあります。
TweetDeckにXSSの脆弱性、ワーム増殖の状態に – ITmedia ニュース
Twitter連携サービス提供側としましては、できる限りの対応をしているつもりです。それでもこういった事故は起こりえます。それは全てのWebサービスに言えることです。 それを理解した上で登録してください。
リプライ数チェッカで行っている操作
2014年6月28日現在、次の操作を自動的に行っています。機能追加等で将来変更される可能性があります。
- リプライの一覧取得(リプライ数の取得の為)
- 自分の発言の一覧取得(ツイート数の取得の為)
- ツイートする(通知する為)
- アカウントが有効か確認する(認証情報が有効か確認する為)
- フォローしている一覧を取得する(関連ユーザーの表示の為)