Twitterさん、OAuthのアクセス権限の細分化を!

TwitterのOAuth認証を利用するサービスを作ってみたが...

一昨日の日曜日(9/5)に、クックパッドさんのオフィス提供による 『TFJ CodeCamp #2』 という1日開発合宿に行きまして、TwitterのOAuth認証を使ったサービスを初めて作ったんです。ユーザーのタイムラインを読んでいろいろやってくれるタイプのサービスを。で、実際OAuth認証するサービスを公開することを考えてみたんですが、どーにも無視できないリスクがありまして。

まず、TwitterのOAuth認証のアクセス権限レベルって、「全部のデータが読める」or「何でもできる」しかありません。今回のサービスはタイムラインさえ読めればいいのですが、OAuth認証としては全部のデータを読める要求しかできなくて、その認証をしてもらったならば、DM(Direct Message)も読み出し放題になっちゃうんですね。実際のDMの読み出しはとても簡単で、APIを1発ポンと呼び出すだけです。

DMを読める立場になんか立ちたくない

もちろんDMを勝手に読むことなんてしないんですけど、否が応にも読める立場に立ってしまうんです。そうなってしまうと、いくらやってなくても、やってるんじゃないかと疑われるリスクが発生しちゃうわけです。DMデータへアクセスしてないことの証明方法は今のところありません。また、自分が読まなくても、脆弱性やらなんやらでOAuth認証の結果を盗み出されて、悪用されちゃうかもしれない。(後者はそれなりに安全にする策はありますが、それなりに面倒)

アクセス権限を細分化してほしい

そもそもタイムラインだけを読み出せるアクセス権限があれば、こんな心配をする必要はなくなります。具体的には、Twitter側がOAuth認証のアクセス権限を細分化することです。

ほんと、このリスクは不可避なんで、Twitterさんには切にお願いしたく、エントリにしました。

以上、よろしくお願いします!

コメント / トラックバック

コメント / トラックバック 8 件

  1. すずき より:

    なんで日本語のエントリなんですか

  2. akiyan より:

    だって にほんじん だもの
    にほん ほうじんも あるもの

  3. amachang より:

    日本法人に期待!

  4. nippondanji より:

    つたないですが訳してみました。

    * I developed a service which utilize Twitter OAuth authorization though...

    The day before yesterday, Sep 5, I joined a one-day coding camp which was held at Cookpad's office. I used Twitter's OAuth as an authorization mechanism at the first time in order to develop a web service. The service makes use of users' timelines and does some work. Then, I realised that there could be a nontrivial security risk when I was about to reveal it.

    Firstly, Twitter's OAuth provides all-or-nothing privileges, which is "I can access user's all data" or "I cannot access user's data at all". It's sufficient to access timelines for this service, however, the service can access user's all data including even direct messages, because the service gets authorized using OAuth. Reading user's direct messages is very easy; it can accomplished by only one API call.

    * I don't want to access DMs

    Of course, I will not read such direct messages, but I will become the man who can access someone's DMs once a user gets authorized via OAuth. Then, users may suspect that "the service provider accesses my private direct messages!" no matter how I insist I'm innocent! Furthermore, if by any chance the OAuth information is stolen by a malicious person, it would be abused. (Of course, we should defend the latter case, but it's costly)

    * Separate access privileges!

    If all what I can access is user's timelines when gets authorized via OAuth, I do not have to worry about such a risk at all. So, I really hope Twitter OAuth will be separated to some parts in order to make access control more flexible.

    I write this entry, because I really think it's an inevitable security risk. Twitter, please fix it!

    Best regards!

  5. so より:

    ユーザのタイムラインを読む(statuses/user_timeline)ならば認証は必要ないのでは?

  6. akiyan より:

    認証しないとIPアドレス単位でAPIアクセス制限がかかってしまうので、不特定多数にサービスするにはOAuthするしかないんですよー。

  7. akiyan より:

    >nippondanjiさん
    うわー!翻訳ありがとうございます!使わせていただきます!
    タイトルはどうすればいいでしょうかねーー。

  8. [...] 神奈川県警・瀬谷警察署 マスコットキャラクター なんだこれ(^ω^; Twitterさん、OAuthのアクセス権限の細分化を! : akiyan.com [...]