I&#39;ll do that.  Thanks.<br clear="all">--<br>Andrew Arnott<br>&quot;I [may] not agree with what you have to say, but I&#39;ll defend to the death your right to say it.&quot; - S. G. Tallentyre<br>
<br><br><div class="gmail_quote">On Mon, Nov 16, 2009 at 10:06 AM, Breno de Medeiros <span dir="ltr">&lt;<a href="mailto:breno@google.com">breno@google.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Andrew,<br>
<br>
This is a sufficiently significant risk that should be documented in<br>
the security wiki. I encourage you to do so.<br>
<div><div></div><div class="h5"><br>
On Sat, Nov 14, 2009 at 7:21 PM, Andrew Arnott &lt;<a href="mailto:andrewarnott@gmail.com">andrewarnott@gmail.com</a>&gt; wrote:<br>
&gt; That&#39;s right, John.<br>
&gt; For a vulnerable RP, an attacker could set up any URL to impersonate any<br>
&gt; other user at the RP simply by logging into the RP with his own URL, after<br>
&gt; configuring it to send back the Content-Location header with the victim&#39;s<br>
&gt; claimed_id as its value.<br>
&gt; I&#39;ve confirmed that the extremeswankopenid library is vulnerable to this<br>
&gt; attack, and have contacted the author already.<br>
&gt; Regarding your question about how this is different than delegating your<br>
&gt; identifier to a victim&#39;s OpenID... I&#39;m not familiar with such an approach,<br>
&gt; or how that would be exploited.<br>
&gt; --<br>
&gt; Andrew Arnott<br>
&gt; &quot;I [may] not agree with what you have to say, but I&#39;ll defend to the death<br>
&gt; your right to say it.&quot; - S. G. Tallentyre<br>
&gt;<br>
&gt;<br>
&gt; On Sat, Nov 14, 2009 at 10:50 AM, John Bradley &lt;<a href="mailto:ve7jtb@ve7jtb.com">ve7jtb@ve7jtb.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; This is a attack on discovery.<br>
&gt;&gt; If the RP performs discovery on URL A the owner of URL A can return a XRDS<br>
&gt;&gt; with a content-Location header for URL B.  The RP now believes that whatever<br>
&gt;&gt; OP endpoint is in the XRDS is authoritative for URL B without having<br>
&gt;&gt; retrieved the actual XRDS for it, only the one for URL A claiming to be B.<br>
&gt;&gt; The problem is that .Net &quot;helps&quot; the application by making it think a<br>
&gt;&gt; redirect has taken place when it hasn&#39;t.<br>
&gt;&gt; There are lots of times when this works just fine however the claimed_id<br>
&gt;&gt; is tied to the product of the second normalization so is vulnerable to this<br>
&gt;&gt; sort of fake redirect.<br>
&gt;&gt; Andrew can provide more of the details.<br>
&gt;&gt; John B.<br>
&gt;&gt; On 2009-11-14, at 2:24 PM, Allen Tom wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hi Andrew,<br>
&gt;&gt;<br>
&gt;&gt; Would an attacker be able to exploit this issue by returning the<br>
&gt;&gt; Content-Location HTTP response header for an URL that he owns, making his<br>
&gt;&gt; URL equivalent to a victim&#39;s OpenID? How is this different from having the<br>
&gt;&gt; attacker delegating his URL to the victim&#39;s OpenID?<br>
&gt;&gt;<br>
&gt;&gt; Can you outline a scenario where the Content-Location HTTP header is<br>
&gt;&gt; exploited?<br>
&gt;&gt;<br>
&gt;&gt; Thanks<br>
&gt;&gt; Allen<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Arnott wrote:<br>
&gt;&gt;<br>
&gt;&gt; Just a heads up from something I recently became aware of that impacted<br>
&gt;&gt; older versions of dotnetopenid.<br>
&gt;&gt; The HTTP protocol defines a Content-Location HTTP response header that<br>
&gt;&gt; allows the web server to suggest to the client that another URL would be<br>
&gt;&gt; equivalent to the one that client actually pulled from.  It is not a<br>
&gt;&gt; redirect, but merely a suggestion that two URLs are equivalent.  For the<br>
&gt;&gt; purposes of OpenID claimed identifier discovery, it is imperative that an<br>
&gt;&gt; OpenID RP ignore this header, lest a web server upon which discovery was<br>
&gt;&gt; performed can spoof an arbitrary claimed_id&#39;s identity by fooling the RP<br>
&gt;&gt; into thinking it discovered an identifier that in fact it did not.<br>
&gt;&gt; In particular, .NET&#39;s &quot;helpful&quot; HTTP stack automatically reads this header<br>
&gt;&gt; and reports it to the client as if it was in fact that actual URL that was<br>
&gt;&gt; pulled from even though it wasn&#39;t.  Since .NET follows redirects<br>
&gt;&gt; automatically by default, a legitimate redirect and this Content-Location<br>
&gt;&gt; header are indiscernable, which is really bad.  This is fixed in the<br>
&gt;&gt; dotnetopenid and dotnetopenauth libraries.<br>
&gt;&gt; Other RP library/site authors should verify that the HTTP stack they are<br>
&gt;&gt; using ignore this header, or workaround the issue.<br>
&gt;&gt; I&#39;ve set up a test on <a href="http://test-id.org" target="_blank">test-id.org</a> where an RP can very quickly assess<br>
&gt;&gt; whether they are vulnerable.  Please take a moment to find out, and fix it<br>
&gt;&gt; ASAP if you are.<br>
&gt;&gt; <a href="http://test-id.org/RP/IgnoresContentLocationHeader.aspx" target="_blank">http://test-id.org/RP/IgnoresContentLocationHeader.aspx</a><br>
&gt;&gt; --<br>
&gt;&gt; Andrew Arnott<br>
&gt;&gt; &quot;I [may] not agree with what you have to say, but I&#39;ll defend to the death<br>
&gt;&gt; your right to say it.&quot; - S. G. Tallentyre<br>
&gt;&gt;<br>
&gt;&gt; ________________________________<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; security mailing list<br>
&gt;&gt; <a href="mailto:security@lists.openid.net">security@lists.openid.net</a><br>
&gt;&gt; <a href="http://lists.openid.net/mailman/listinfo/openid-security" target="_blank">http://lists.openid.net/mailman/listinfo/openid-security</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; security mailing list<br>
&gt;&gt; <a href="mailto:security@lists.openid.net">security@lists.openid.net</a><br>
&gt;&gt; <a href="http://lists.openid.net/mailman/listinfo/openid-security" target="_blank">http://lists.openid.net/mailman/listinfo/openid-security</a><br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; security mailing list<br>
&gt; <a href="mailto:security@lists.openid.net">security@lists.openid.net</a><br>
&gt; <a href="http://lists.openid.net/mailman/listinfo/openid-security" target="_blank">http://lists.openid.net/mailman/listinfo/openid-security</a><br>
&gt;<br>
&gt;<br>
<br>
<br>
<br>
</div></div><font color="#888888">--<br>
--Breno<br>
<br>
+1 (650) 214-1007 desk<br>
+1 (408) 212-0135 (Grand Central)<br>
MTV-41-3 : 383-A<br>
PST (GMT-8) / PDT(GMT-7)<br>
</font></blockquote></div><br>