Re: NFS: Treat NFS4ERR_CLID_INUSE as a fatal error

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Aug 9, 2012, at 5:38 PM, J. Bruce Fields wrote:

> On Thu, Aug 09, 2012 at 05:29:47PM -0400, Chuck Lever wrote:
>> 
>> On Aug 9, 2012, at 5:13 PM, J. Bruce Fields wrote:
>>> The server could just compare principal strings (and ignore
>>> pseudoflavors) in the gss case.
>> 
>> Barring a correction about how GSS Kerberos principals work, I think that's the correct approach.
> 
> I also don't know if principals produced by other mechanisms are going
> to be comparable.  Of course that's a bit academic given that kerberos
> is the only mechanism for the forseeable future.

Agreed, I would expect this to work only for pseudoflavors that share the same type of principal.

Let me be sure I understand... I think the text of RFC 3530bis allows this implementation choice, but you are suggesting below that such an implementation may allow an attack.  Does this concern warrant a change to RFC 3530bis or 5661?  Should we bring this up on nfsv4@xxxxxxxx?

> 
>>> If the intention is to ensure that a clientid can't be "hijacked" by
>>> someone malicious, then you don't want to allow a krb5 setclientid to
>>> blow away a clientid established with krb5i.  (If sending the
>>> setclientid with krb5i indicates the client wants protection against
>>> attacks which replace the body of the rpc, then a later krb5 setclientid
>>> should be rejected, since it could be the product of such an attack.)
>> 
>> If the client wants to avoid hijacking, it should start out with krb5i, as is recommended in the Security Considerations section of 3530(bis).
>> 
>> The intention of 3530(bis) is that one client instance uses just one nfs_client_id4.id string.  A client that attempts to change flavors on its SETCLIENTID/RENEW operations in mid-journey, on purpose, seems a little schizophrenic.  I can't think of a good reason it should do this.
> 
> You don't know it's the same client any more.  The attack is:
> 
> 	client sends setclientid with krb5i.
> 
> 	client later sends some other rpc with krb5.
> 
> 	attacker intercepts that operation, takes the rpc header, strips
> 	out the body, and replaces the body by a setclientid operation
> 	destroying the client's state.
> 
> Since krb5 only protects the header, the server can't tell that's what's
> happened.

-- 
Chuck Lever
chuck[dot]lever[at]oracle[dot]com




--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux