Re: Realm spoofing spec patch

2007-05-29 Thread Josh Hoyt
Allen,

On 5/29/07, Allen Tom [EMAIL PROTECTED] wrote:
 From an implementation perspective, it might make sense for the OP to
 verify the RP during the association request, so that the association
 handle is only returned after the RP has been verified.

Were you concerned about implementation complexity or the time it
could take to do discovery while the user is waiting?

At association time, the provider does not know who the relying party
is. Are you proposing that the realm be included in the association
request? In that case we'd have to include the discovery URL, in the
case of a wildcard realm.

I see two potential problems:

 1. If the discovery happens during the association request, a
single-threaded relying party might not respond to the
verification request. This wouldn't come up too frequently in
production, but it would raise the bar for example and prototype
code.

 2. If the form of a return_to URL changes (and the relying party
updates the discovery information to match) it would be good if
the provider could attempt verification again, so that a valid
request could complete successfully.

(2) requires the same flow as the proposed implementation
(verification during the course of the request), and so I think it's
simpler to just leave it in-band. I suppose that the specification
could remain silent on *when* to perform the verification, since it
doesn't really matter from a security perspective, which would leave
both channels open, as long as the pertinent information was added to
the association request.

Josh
___
specs mailing list
specs@openid.net
http://openid.net/mailman/listinfo/specs


Re: Realm spoofing spec patch

2007-05-29 Thread Allen Tom
Hi Josh,

Having the OP verify the realm/return_to as part of the Authentication
Request is fine. OPs should cache the verifcation status to reduce
latency for RPs that send many users to the OP.

At least from my perspective, it always seemed odd that the Association
Request is just an interface for OPs to return shared secrets and
association handles without knowing anything about the requestor, except
for the IP address. I always thought that RPs should pass some
information about themselves to the OP when requesting association so
that an OP can bind an association handle with an RP.

Anyway, I don't think there's any pressing need to change the
association request interface at this time.

Thanks!
Allen




 Allen,
 
 On 5/29/07, Allen Tom [EMAIL PROTECTED] wrote:
  From an implementation perspective, it might make sense for the OP to
  verify the RP during the association request, so that the association
  handle is only returned after the RP has been verified.
 
 Were you concerned about implementation complexity or the time it
 could take to do discovery while the user is waiting?
 
 At association time, the provider does not know who the relying party
 is. Are you proposing that the realm be included in the association
 request? In that case we'd have to include the discovery URL, in the
 case of a wildcard realm.
 
 I see two potential problems:
 
  1. If the discovery happens during the association request, a
 single-threaded relying party might not respond to the
 verification request. This wouldn't come up too frequently in
 production, but it would raise the bar for example and prototype
 code.
 
  2. If the form of a return_to URL changes (and the relying party
 updates the discovery information to match) it would be good if
 the provider could attempt verification again, so that a valid
 request could complete successfully.
 
 (2) requires the same flow as the proposed implementation
 (verification during the course of the request), and so I think it's
 simpler to just leave it in-band. I suppose that the specification
 could remain silent on *when* to perform the verification, since it
 doesn't really matter from a security perspective, which would leave
 both channels open, as long as the pertinent information was added to
 the association request.
 
 Josh
 
 


___
specs mailing list
specs@openid.net
http://openid.net/mailman/listinfo/specs


Re: Realm spoofing spec patch

2007-05-25 Thread Johnny Bufu
Josh,

On 24-May-07, at 4:19 PM, Josh Hoyt wrote:

 Please review the additions. If you'd like to see the
 specific changes, you can look at the diffs in revision control[3].

Looks good to me. One minor issue about the wording - we have now two  
return URL verifications: one done by the OP and a totally  
different one done by the RP. Would it make sense to call this new  
one something different, e.g. RP endpoint verification (or  
validation)?


Johnny

___
specs mailing list
specs@openid.net
http://openid.net/mailman/listinfo/specs


Re: Realm spoofing spec patch

2007-05-25 Thread Johnny Bufu

On 24-May-07, at 5:54 PM, Recordon, David wrote:

 I guess since we're unable to fully resolve this issue from a  
 technical
 perspective, and no I don't have a better technical solution, I'm
 wondering if this should actually be an extension to the core protocol
 versus seeming like a resolution to the problem when it really doesn't
 completely solve it.

-1

An extension is totally optional. On the other hand, when I implement  
a spec I treat all SHOULDs as MUSTs by default, and only examine them  
if I can't deal with something.


The main issue with this attack I believe was the OP making a false  
statement to their users, thus compromising their trust.

Even with the SHOULDs, the OPs have the means to decide how they  
interact with their users. If this results in not granting access to  
unverified RPs, the OP can say well, the RP you're trying to go to  
really SHOULD implement RP discovery.

With an extension the OP's statement would be we're using this  
extension and can't let you go to this RP because they don't  
implement it and we can't verify their endpoints.


Having said that, I would certainly like some of these SHOULDs to be  
turned into MUSTs if doing so doesn't lead to other issues  
(deployments, etc.).


Johnny

___
specs mailing list
specs@openid.net
http://openid.net/mailman/listinfo/specs


Realm spoofing spec patch

2007-05-24 Thread Josh Hoyt
Hello,

I've added a section to the specification[1] about performing
verification on the realm to avoid realm spoofing. In short, realm
spoofing is the problem of exploiting a bug on a site that a user
would trust to trick them into sending their information to a site
that they would not trust. This is very similar to many phishing
attacks. The difference between this type of attack and a standard
phishing attack is that the user will (usually) only see the realm,
and the realm may actually be trusted, so even an educated user who's
paying attention may be vulnerable.

There are also (minor) changes to the section on discovering relying
parties[2].

The fix that is described is for the relying party to provide a
whitelist of URL patterns that should be usable as return_to
URLs. Relying parties should be as restrictive as possible when
specifying return_to URLs.

This is the fix that was discussed at the Internet Identity Workshop,
by all of the spec editors and several prominent members of the OpenID
community. Please review the additions. If you'd like to see the
specific changes, you can look at the diffs in revision control[3].

Josh


1. 
http://j3h.janrain.com/openid-specs-rendered/openid-authentication_svn-327.html#return_to_verification
2. 
http://j3h.janrain.com/openid-specs-rendered/openid-authentication_svn-327.html#return_to_verification
3. http://openid.net/svn/listing.php?repname=specificationspath=rev=326sc=1
___
specs mailing list
specs@openid.net
http://openid.net/mailman/listinfo/specs


RE: Realm spoofing spec patch

2007-05-24 Thread Recordon, David
Hey Josh,
Thanks for writing this up!

I'm a bit confused by the number of SHOULDs in this patch.

+Relying Parties SHOULD use the Yadis protocol to publish their
+valid return_to URLs. The relying party MAY publish this
+information at any URL, and SHOULD publish it under the realm
+so that providers can verify return_to URLs.

+OpenID providers SHOULD verify that the return_to URL
+specified in the request is an OpenID relying party
+endpoint.

+If verification is attempted and fails, the provider
+SHOULD NOT send a positive assertion to that return_to
+URL. 

It seems that this methodology only works if either:
 1) Every site (RP or proxy) publishes their return_to endpoints or that
they don't have any.
 2) An OP refuses to let the user login to a RP which doesn't publish
their return_to endpoint.

I'm unconvinced that either of those situations will actually become
prevalent and thus worried about the effectiveness of this methodology.

Using the same example from IIW, I am logging into
http://evilrp.com/return_to which is proxying itself through
http://www.google.com/translate/.  If my OP were to prompt me, We're
unable to verify the site
(http://www.google.com/translate/?http://evilrp.com/return_to) you're
logging into, you should use caution when proceeding I'm unsure how
many users would actually not proceed, or rather see google.com and
decide it is alright.

I guess since we're unable to fully resolve this issue from a technical
perspective, and no I don't have a better technical solution, I'm
wondering if this should actually be an extension to the core protocol
versus seeming like a resolution to the problem when it really doesn't
completely solve it.  In some senses I see this as a larger problem
around trust of Relying Parties.  

--David


-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
Behalf Of Josh Hoyt
Sent: Thursday, May 24, 2007 4:19 PM
To: OpenID specs list
Subject: Realm spoofing spec patch

Hello,

I've added a section to the specification[1] about performing
verification on the realm to avoid realm spoofing. In short, realm
spoofing is the problem of exploiting a bug on a site that a user would
trust to trick them into sending their information to a site that they
would not trust. This is very similar to many phishing attacks. The
difference between this type of attack and a standard phishing attack is
that the user will (usually) only see the realm, and the realm may
actually be trusted, so even an educated user who's paying attention may
be vulnerable.

There are also (minor) changes to the section on discovering relying
parties[2].

The fix that is described is for the relying party to provide a
whitelist of URL patterns that should be usable as return_to URLs.
Relying parties should be as restrictive as possible when specifying
return_to URLs.

This is the fix that was discussed at the Internet Identity Workshop, by
all of the spec editors and several prominent members of the OpenID
community. Please review the additions. If you'd like to see the
specific changes, you can look at the diffs in revision control[3].

Josh


1.
http://j3h.janrain.com/openid-specs-rendered/openid-authentication_svn-
327.html#return_to_verification
2.
http://j3h.janrain.com/openid-specs-rendered/openid-authentication_svn-
327.html#return_to_verification
3.
http://openid.net/svn/listing.php?repname=specificationspath=rev=326;
sc=1
___
specs mailing list
specs@openid.net
http://openid.net/mailman/listinfo/specs
___
specs mailing list
specs@openid.net
http://openid.net/mailman/listinfo/specs