見出し画像

アカウント乗っ取りなど、ヤバイTwitter連携アプリの見分け方をITエンジニア視点から解説

ツイッターアカウント乗っ取りとかしてくるヤバイTwitterサードパーティーアプリの見分け方をITエンジニア視点から解説します!

一ヶ月くらい前に「Twitterアカウント乗っ取りでDMを勝手に送信するサードパーティーアプリの詳細と対処法」ってnoteを書いて、何名かにシェアしていただいたりしました

読んでくださった方から「サードパーティーアプリ怖い」っていう反応も頂いたりしたんですけど、僕のnoteのせいでヤバくないサードパーティーアプリをヤバイと誤解しちゃう人がいたらイヤなので、どういうのがヤバくてどういうのがヤバくないのか掘り下げて解説しようと思った次第です

サードパーティーアプリ作ってみる

TwitterのサードパーティーアプリはTwitter開発者プラットフォームっていうのに登録すると作れます

サードパーティーアプリ作成

適当に「たんぽぽヤバタニエン」とかいうサードパーティーアプリを作ってみる

たんぽぽヤバタニエン爆誕

アイコンとか公式ウェブページとか

サードパーティーアプリのアイコンに、「いらすとや」から拾ってきたヤバそうな画像を設定

ヤバそうなAPP ICON

組織名には普通は「株式会社なんとか」とか書くんですけど、「たんぽぽヤバタニエンちゃん」という組織名を設定

組織URLにも適当に example.com を設定(検証用に入れるのであって、普通にサードパーティー作るときはちゃんと会社URLを入れてください)

各種URL設定

サードパーティーアプリの権限設定

開発者がサードパーティーアプリに設定できる権限は次の通りです

  • アクセスレベルを3段階で選択

    • 読み取り専用

    • 読み取りと書き込み

    • 読み取り、書き込みとダイレクトメッセージ

  • Twitterアカウントの登録済みメールアドレスを取得できるかどうかの選択

サードパーティーアプリの権限レベル

各権限レベルの、許可画面での見え方、および開発者の意図

権限設定によって、サードパーティーアプリ連携許可画面でユーザにはどう見えるのか確認していきます

前提: 普通の開発者は必要最小限の権限しか与えない

前提として、普通の開発者はシステムに最小限の権限しか与えません

理由としては以下の二点です

  • システムに余分な権限がついてると、同僚がそれを使ったりして意図せずシステムが複雑化していくから

  • システムに余分な権限がついてると、バグによる暴走や、ハッカーに乗っ取られる等のインシデントが発生したとき、被害範囲が拡大してヤバイから

権限を最小にするというのはプログラマの習性なのであって、サードパーティーアプリの要求する権限許可がこれに反しているかどうかで、そのサードパーティーアプリがヤバイかどうかを見分けるのが一番確実かと思います

読み取り専用のサードパーティーアプリ

読み取り専用アプリの許可画面

サードパーティーアプリに付与できる権限のうち最小のものが「読み取り専用」です

開発者視点で一番よくありそうなユースケースは、自社のアプリにOAuth認証によるTwitter連携ログインをつける時に、この「読み取り専用」でTwitterサードパーティーアプリを作成するというもの

サードパーティーアプリに付与される権限のうち

  • 自分や自分のfollowingsの、鍵アカウントの非公開ツイートを読む

  • 自分の非公開リストの内容を読む

という権限は開発者視点でも不要なんですけど、これより小さい権限をサードパーティーアプリに設定できないので、「まぁこれでいいか」って感じで読み取り専用権限にしがち

非公開ツイートが読めるって点だけちょっとモヤモヤしますけど、読み取り専用のサードパーティーアプリはほぼ安全です

読み取りと書き込みができるサードパーティーアプリ

読み取り+書き込みアプリの許可画面

サードパーティーアプリに付与できる権限のうちレベル中のものが「読み取り+書き込み」です

これは読み取り専用アプリの権限に加えて、次の権限が付与されます

  • フォロー、フォロー解除する

  • ツイート、いいね、リツイートをしたり、削除したりする

  • …などなど

開発者視点で一番よくあるユースケースは、自社のアプリでユーザーなにか投稿をしたときに、自動でそれをTwitterにシェアするという機能を付けたいとか? でもUX設計としては「投稿後にツイートにシェアするボタンを表示して、投稿者のユーザーにそれを押してもらう」みたいな感じの方が、意図しないツイートを防止するという点でユーザーにとっても親切なのであって、この場合は読み取り専用権限で足りるので、開発者視点でも、あんまり書き込み権限はいらない気がする。上司が「どうしてもTwitterに自動で共有する権限を付けたいんじゃー!」と言い出したら「えーまじー」って言いながらつけるくらいのイメージ

フォローとフォロー解除を支援するサードパーティーアプリの場合は、この書き込み権限を要求してくるのはごく自然

悪意のある開発者が書き込み権限を取得した場合にできるようになることは「勝手にツイートする」「勝手にフォローする」「勝手にブロックする」みたいな感じ

たまにアカウントを乗っ取ってスパムツイートをタイムラインに垂れ流すサードパーティーアプリがあるけど、目立つからすぐ対策される

サードパーティアプリの許可画面で書き込み権限がついてる場合はちょっと緊張しますけど、「あーはいはい、投稿内容を自動でTwitterに共有するオプション機能が存在してて、それで自社アプリのPVをちょっと伸ばそうっていう想定があるんだね」くらいの温度感で、まだ許容できる(その「自社アプリ」とやらが信頼できるかどうかによるけど)

読み取り、書き込みとダイレクトメッセージができるサードパーティーアプリ

読み取り+書き込み+DMアプリの許可画面

サードパーティーアプリに付与できる権限のうち一番権限が強いのが「読み取り+書き込み+DM」です

この権限は、読み取り+書き込みの権限に加えて、次の権限が付与されます

  • TwitterのDMを読んだり送ったりする

開発者視点で一番よくあるユースケースは、ツイッターの非公式クライアントアプリ

DMを送信する権限なんて開発者視点でも普通はいらないので、「うぉお俺がツイッター公式アプリよりも便利なツイッタークライアントを作ってやるぜ!」みたいな強い意志を持ってるプログラマ以外がこの権限を要求することは稀でしょう

悪意のある開発者がDM送信権限を取得した場合にできるようになることは「DMを勝手に送信する」。DMを受け取った人がまたそのサードパーティーアプリの連携を許可するという形で、コンピューターウイルスのワームのように増殖してきます。僕の前回のnoteで紹介したサードパーティアプリがこのタイプですね

あんまり信頼できないサイトがツイッター連携でDM送信権限を要求してきた場合は、「はいワームおつ!」と言いながらキャンセルボタン即押しが推奨

信頼できるサイトがDM送信権限を要求してきた場合も、それが当該サイトのどの機能に必要なのか不明の場合には「???」って思う

登録済みメールアドレス取得ができるサードパーティーアプリ

読み取り専用+メールアドレス取得のアプリの許可画面

最後、「登録済みのメールアドレスを取得する」権限。これは前述の権限レベル3段階とは別に、「ツイッターアカウントと紐付いているメールアドレスを取得できるかどうか」をサードパーティーアプリの権限に設定するもの

開発者視点で一番よくあるユースケースは、自社アプリのユーザーの連絡可能なメールアドレスを取得したいケース

自社アプリでなにか不具合が起きた時にユーザーに連絡したいことがあるかもしれないけど、ユーザーがアカウント登録でTwitter連携ログインしかしてないときは連絡先が不明で困るので、Twitter連携するときにメールアドレスも貰っておくか…と考えるのは普通のことなので、これについてはあんまり警戒する必要なし

悪意のある開発者がメールアドレス取得権限を取得したときに可能になることは「Twitterアカウントに紐付いているメールアドレスを知ることができる」ことなんですけど、あんまり悪用方法が無さそう(スパムメールを送信するにしても、メールアドレスのリストなんてもっと楽な取得方法がいくらでもありそう)

以上、サードパーティーアプリの権限設定ごとの、許可画面での見え方でした

すでに連携済みのサードパーティーアプリの確認方法

やばいサードパーティーアプリはそもそも連携許可しないことが理想なんですけど、もうすでに連携許可しちゃってる人向けの確認方法を紹介します。すでに連携済みのサードパーティーアプリにどの権限が付与されているかは、次の画面で確認できます

  • 設定とサポート

  • → 設定とプライバシー

  • → セキュリティとアカウントアクセス

  • → アプリとセッション

  • → 連携しているアプリ

僕のいまの画面こんな感じ

連携しているアプリ

さっき作った「たんぽぽヤバタニエン」とかいう謎のサードパーティーアプリが連携済みですね、やばそ〜

このリストから各サードパーティーアプリをタップすると、そのアプリに付与されている権限が確認できます

たんぽぽヤバタニエンの権限

この画面で確認できる情報のうち「アプリアイコン」「提供元組織(会社名)」「提供元組織のURL」の3つについては、開発者側の設定画面で入れた内容がそのまま出てるっぽくて、あんまりヤバイかどうかの確認には使え無さそう(なんかTwitter運営のほうで妥当性を検証するシステムとかオペレーションがあるのかも知れないけど未確認)

見るべきはアクセス権のところに設定されている権限レベルで、上記スクショだと最強の権限である「読み取り+書き込み+DM」が付与されているので、おいおいこいつヤベエんじゃねーのと判別できます

まとめ

サードパーティーアプリが「何に使うのか不明な権限」を要求してきた場合、スパムじゃね?と警戒する

権限のうち、アクセスレベルとして開発者が設定できるのは三段階

  • アクセスレベル低「読み取り専用

    • ほぼ安全

    • 自社アプリへのTwitter連携ログインでよく使われがち

    • 悪意のある開発者がこの権限を取得すると、鍵アカウントのツイート内容とかは読まれるかも

  • アクセスレベル中「読み取り+書き込み

    • 連携先のサービスが信頼できるなら大丈夫

    • 自社アプリへの投稿をTwitterに自動でシェアする機能を付けたいっていう野心的な開発元が使うことがある

    • 悪意のある開発者がこの権限を取得すると、前述のリスクに加えて、スパムツイートを勝手に投稿するかも

  • アクセスレベル高「読み取り+書き込み+DM

    • 要注意

    • 非公式クライアントアプリを作る時くらいしか使いみちが無い

    • 悪意のある開発者がこの権限を取得すると、前述のリスクに加えて、スパムDMを勝手に送信するかも

上記のアクセスレベル三段階とは別に、「ツイッターアカウントの登録済みメールアドレスを取得できるかどうか」という権限設定があり、これはカスタマーサポートに熱心な開発元がオンにすることがあって、これはそんなに気にしなくても良さそう

以上です〜

関連記事


この記事が気に入ったらサポートをしてみませんか?