<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/rss-style.xsl" type="text/xsl"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	     xmlns:dc="http://purl.org/dc/elements/1.1/"
	   xmlns:atom="http://www.w3.org/2005/Atom"
	     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	  xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>Twitter, OAuth and Passwords &#8211; Oh My! &#8211; Terence Eden’s Blog</title>
	<atom:link href="https://shkspr.mobi/blog/2009/11/twitter-oauth-and-passwords-oh-my/feed/" rel="self" type="application/rss+xml" />
	<link>https://shkspr.mobi/blog</link>
	<description>Regular nonsense about tech and its effects 🙃</description>
	<lastBuildDate>Tue, 04 Nov 2025 06:36:19 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://shkspr.mobi/blog/wp-content/uploads/2023/07/cropped-avatar-32x32.jpeg</url>
	<title>Twitter, OAuth and Passwords &#8211; Oh My! &#8211; Terence Eden’s Blog</title>
	<link>https://shkspr.mobi/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title><![CDATA[Twitter, OAuth and Passwords - Oh My!]]></title>
		<link>https://shkspr.mobi/blog/2009/11/twitter-oauth-and-passwords-oh-my/</link>
					<comments>https://shkspr.mobi/blog/2009/11/twitter-oauth-and-passwords-oh-my/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 04 Nov 2009 13:04:57 +0000</pubDate>
				<category><![CDATA[usability]]></category>
		<category><![CDATA[NaBloPoMo]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[twitter]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=994</guid>

					<description><![CDATA[Twitter has a gaping security hole.  Changing your password won&#039;t stop malicious users logging in as you!  I received a rather worrying email from Twitter.  Apparently they thought my password had been compromised and needed to be reset.  Reset Your Twitter Password  After checking to see if it was valid, I went and changed my password.  Any site which relied on a cookie to post to Twitter would h…]]></description>
										<content:encoded><![CDATA[<p>Twitter has a gaping security hole.&nbsp; Changing your password <strong>won't stop malicious users logging in as you!</strong></p>

<p>I received a rather worrying email from Twitter.&nbsp; Apparently they thought my password had been compromised and needed to be reset.</p>

<p></p><div id="attachment_996" style="width: 310px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-996" class="size-medium wp-image-996" title="twitpass" src="https://shkspr.mobi/blog/wp-content/uploads/2009/11/twitpass-300x192.jpg" alt="Reset Your Twitter Password" width="300" height="192"><p id="caption-attachment-996" class="wp-caption-text">Reset Your Twitter Password</p></div><p></p>

<p>After checking to see if it was valid, I went and changed my password.&nbsp; Any site which relied on a cookie to post to Twitter would have been blocked out. Ha! Gotcha, suckers!</p>

<h2 id="the-oauth-problem"><a href="https://shkspr.mobi/blog/2009/11/twitter-oauth-and-passwords-oh-my/#the-oauth-problem">The OAuth Problem</a></h2>

<p>OAuth tokens are <strong>not</strong> revoked when the master password is changed.</p>

<p><a href="http://oauth.net/">OAuth </a>is a great idea - rather than give your username and password to any random site, you log on to Twitter and tell them that you authorise the refering site.&nbsp; The site gets an OAuth token and never gets to see your password.&nbsp; Great! Right? Not really.</p>

<p>Let's consider the following scenario.</p>

<p>Alice has a Twitter username and password.</p>

<p>Bob runs a Twitter site.</p>

<p>Alice visits Bob's site.&nbsp; Alice is security conscious and uses OAuth.</p>

<p>Eve somehow discovers Alice's password.</p>

<p>Eve also visits Bob's site and uses OAuth.</p>

<p>Alice gets suspicious about strange activity on her account and changes her password.</p>

<p>Because Bob's site uses OAuth, it <strong>does not require</strong> either Alice <em>or</em> Eve to re-enter Alice's password.</p>

<p>In this scenario, Alice has to visit <a href="http://twitter.com/account/connections">Twitter's OAuth Connections page</a> and revoke access to <em>all</em> the sites she has previously connected to.&nbsp; Alice has no way of knowing when each site was last accessed.&nbsp; She also doesn't know which site Eve is using.</p>

<p></p><div id="attachment_995" style="width: 310px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-995" class="size-medium wp-image-995" title="twitoauth" src="https://shkspr.mobi/blog/wp-content/uploads/2009/11/twitoauth-300x192.jpg" alt="Twitter's OAuth Page" width="300" height="192"><p id="caption-attachment-995" class="wp-caption-text">Twitter's OAuth Page</p></div><p></p>

<h2 id="the-problem"><a href="https://shkspr.mobi/blog/2009/11/twitter-oauth-and-passwords-oh-my/#the-problem">The Problem</a></h2>

<p>Changing a password should - in the minds of most people - mean that you need to re-enter your password even if you have previously authenticated yourself.</p>

<p>In this scenario, changing the password does not revoke access to malicious users who have previously used your credentials.</p>

<p>Twitter should revoke all OAuth tokens when a user's password is changed. It is the only way to ensure that stolen credentials cannot continue to be used after a user has changed their password.</p>

<h2 id="addendum"><a href="https://shkspr.mobi/blog/2009/11/twitter-oauth-and-passwords-oh-my/#addendum">Addendum</a></h2>

<p>As I've made clear in the comments - this <em>isn't</em> a vulnerability within OAuth per se.&nbsp; It's a usability issue which has strong security implications.</p>

<p>I spoke to Eran Hammer-Lahav (listed as <a href="http://oauth.net/advisories">OAuth's advisory contact</a>) who said:</p>

<blockquote><p>If you suspect someone stole your password, you should revoke any tokens you did not personally authorized. But there is no reason to revoke tokens just because you are changing password.</p></blockquote>

<p>While I appreciate this as the official line from those in the know, it does nothing to prevent a user who uses the same sites as you.&nbsp; For example, I can see on every tweet that you use Dabr.&nbsp; Therefore, I can safely OAuth myself as you on Dabr.&nbsp; You'll change your password, but you <em>won't</em> revoke Dabr's token because <strong>you personally authorised it</strong>.</p>

<h2 id="continuing-the-conversation"><a href="https://shkspr.mobi/blog/2009/11/twitter-oauth-and-passwords-oh-my/#continuing-the-conversation">Continuing The Conversation</a></h2>

<p>Heise Online <a href="http://www.heise.de/newsticker/meldung/Hintertuer-bei-Twitter-schliessen-850287.html">provides comentary in German</a> (<a href="http://www.h-online.com/security/news/item/Shutting-Twitter-backdoors-850717.html">English version</a>)</p>

<p>El Reg has a <a href="http://www.theregister.co.uk/2009/11/04/oauth_dark_side/">feature about Twitter and OAuth</a>.</p>

<p>There's also an <a href="http://news.ycombinator.com/item?id=921619">interesting discussion over at Hacker News</a>.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=994&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2009/11/twitter-oauth-and-passwords-oh-my/feed/</wfw:commentRss>
			<slash:comments>38</slash:comments>
		
		
			</item>
	</channel>
</rss>
