Zachary,

I have some similar concerns, our client isn't open-source (yet...) but it is a desktop client and still requires that the key be embedded in the application in some fashion.

Since Twitter is not using the secret to identify the application securely for any purpose it really isn't a big deal if some application hijacks the "secret". Assuming someone did hijack the secret for their application it would show "Adium" and the Adium logo when the user went to authenticate. Since application registration is not a valuable resource, there isn't any reason that another developer would want to steal a key because he couldn't get one.

Since a nonce and timestamp is used over SSL when requisitioning a request key I don't think that you have to worry about an application hijacking an outstanding request for access.

On the other hand suppose an application was attempting to gain access to a user's account by using the trust that the name of Adium instills. This could be more of an issue as it is really only limited by the social engineering skills of the application.

Since each request is signed and made unique with a timestamp and a nonce, a proxy solution (to keep the secret, well... secret) would have to process every request for the client. A commercial project may be able to provide a proxy for every request, but for an open source or small closed source project this would still not be a tenable solution. I'm not sure that there is much that we or Twitter can do to solve this technically, user education is probably going to be the most important way to mitigate the social engineering issue.

For an attentive user this may not be a big deal since they can easily lock out the rogue application when they notice something is wrong like the application using their account to spam. Though the application could be more destructive by unfollowing everyone, refollowing random accounts and deleting all tweets and DM's; this could be devastating for a user.

Though, if an arrant do-badder took control of an account that was registered by someone who was curious but mainly inattentive, they could build up a rather large number of dead-head accounts to do their evil bidding. If this got out of hand and noticed by Twitter it could cause significant inconvenience to users because Twitter would have to revoke the existing consumer secret and issue a new one, this would require a new release of your software and in the mean time old versions would not be able to register.

I don't think that the number of accounts that a black-hat would be able to hijack (for the limited time that they could, before the user locked them out) is going to be economically driving for that group to go to the work, except perhaps for cases of defacement.

Its late, I probably said some stuff that doesn't make sense, but I would love to plug this hole if a way exists...

Josh


Zachary West wrote:
Hi,

I've got a question about how open-source applications are expected to behave under OAuth. In order to not violate the GPL, I am going to have to include my client and secret key in the application source available online.

This would allow another client, spoofer, etc., to pretend to be Adium for the sake of gaining access, right? Is this the only major concern involved?

I'm wondering if there's some kind of idea in place about how this might affect things. For example, if a second Adium request is presented, it's entirely possible that it's valid (since multiple computers might be used with Adium on it) so there's no way to say "only one access for this Application is valid" or anything like that.

The OAuth website alludes to the fact that it might be a tricky situation for open-source apps, but says absolutely nothing about it, and that it "may" be a bad thing.

Appreciate the response.

Zachary West
@zacwest

Reply via email to