OpenLDAP
Up to top level
Build   Contrib   Development   Documentation   Historical   Incoming   Software Bugs   Software Enhancements   Web  

Logged in as guest

Viewing Incoming/5195
Full headers

From: russell-openldap@stuart.id.au
Subject: ssf not available during sasl bind
Compose comment
Download message
State:
0 replies:
23 followups: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

Major security issue: yes  no

Notes:

Notification:


Date: Fri, 19 Oct 2007 05:33:44 GMT
From: russell-openldap@stuart.id.au
To: openldap-its@OpenLDAP.org
Subject: ssf not available during sasl bind
Full_Name: Russell Stuart
Version: 2.3.30
OS: Debian Etch
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (210.15.201.110)


I am trying to insist that connections during sasl auth operations are
encrypted.  Ie, that this works:

  access to attrs=userPassword
        by tls_ssf=128 ssf=128 anonymous auth
        by * none

It does work for a simple bind.  But for a sasl bind it fails, and this telltale
appears in the log:

  slapd[26499]: <= check a_authz.sai_ssf: ACL 128 > OP 0 

I fixed the issue using this patch, which applies to 2.4.5, 2.3.38 and 2.3.30:

diff -Nur openldap2.3-2.3.30/servers/slapd/sasl.c
openldap2.3-2.3.30.new/servers/slapd/sasl.c
--- openldap2.3-2.3.30/servers/slapd/sasl.c     2007-10-19 15:27:53.000000000
+1000
+++ openldap2.3-2.3.30.new/servers/slapd/sasl.c 2007-10-19 15:29:18.000000000
+1000
@@ -384,6 +384,7 @@
                                op.ors_slimit = 1;
                                op.ors_filter = &generic_filter;
                                op.ors_filterstr = generic_filterstr;
+                               op.o_authz = conn->c_authz;
                                /* FIXME: we want all attributes, right? */
                                op.ors_attrs = NULL;



Followup 1

Download message
Date: Fri, 19 Oct 2007 08:26:50 -0700
From: Howard Chu <hyc@symas.com>
To: russell-openldap@stuart.id.au
CC: openldap-its@openldap.org
Subject: Re: (ITS#5195) ssf not available during sasl bind
russell-openldap@stuart.id.au wrote:
> I am trying to insist that connections during sasl auth operations are
> encrypted.  Ie, that this works:
> 
>   access to attrs=userPassword
>         by tls_ssf=128 ssf=128 anonymous auth
>         by * none
> 
> It does work for a simple bind.  But for a sasl bind it fails, and this
telltale
> appears in the log:
> 
>   slapd[26499]: <= check a_authz.sai_ssf: ACL 128 > OP 0
> 
> I fixed the issue using this patch, which applies to 2.4.5, 2.3.38 and
2.3.30:

I suppose that may be a legitimate bug, but this isn't really the correct fix. 
slap_auxprop_lookup is doing an internal search, so there is no network to 
speak of. In SSF terms it would have an SSF of "infinity".

> diff -Nur openldap2.3-2.3.30/servers/slapd/sasl.c
> openldap2.3-2.3.30.new/servers/slapd/sasl.c
> --- openldap2.3-2.3.30/servers/slapd/sasl.c     2007-10-19
15:27:53.000000000
> +1000
> +++ openldap2.3-2.3.30.new/servers/slapd/sasl.c 2007-10-19
15:29:18.000000000
> +1000
> @@ -384,6 +384,7 @@
>                                 op.ors_slimit = 1;
>                                 op.ors_filter = &generic_filter;
>                                 op.ors_filterstr = generic_filterstr;
> +                               op.o_authz = conn->c_authz;
>                                 /* FIXME: we want all attributes, right? */
>                                 op.ors_attrs = NULL;
> 
> 
> 
> .
> 


-- 
   -- Howard Chu
   Chief Architect, Symas Corp.  http://www.symas.com
   Director, Highland Sun        http://highlandsun.com/hyc/
   Chief Architect, OpenLDAP     http://www.openldap.org/project/



Followup 2

Download message
Subject: Re: (ITS#5195) ssf not available during sasl bind
From: Russell Stuart <russell-openldap@stuart.id.au>
To: openldap-its@OpenLDAP.org
Cc: russell-openldap@stuart.id.au
Date: Thu, 25 Oct 2007 17:15:13 +1000
In one sense you are correct: the userPassword read
by slap_auxprop_lookup will never be revealed.  And
so yes, the ssf for the results of that search would
be infinity.

But what I want to check is the weakest link in the
chain.  I can't imagine any instance when that isn't
what you would want to check, so that is what the
ssf should reflect.  By definition, the 
slap_auxprop_lookup can never be the weakest link.
The weakest link in this case when sasl sent the 
password to slapd.  Really, what I want to say is if 
the password was sent in the clear, whether it be by
sasl or simple auth, then the link must be encrypted.

The patch makes the information required to do that
test available.



Followup 3

Download message
Date: Thu, 25 Oct 2007 05:18:27 -0700
From: Howard Chu <hyc@symas.com>
To: russell-openldap@stuart.id.au
CC: openldap-its@openldap.org
Subject: Re: (ITS#5195) ssf not available during sasl bind
russell-openldap@stuart.id.au wrote:
> In one sense you are correct: the userPassword read
> by slap_auxprop_lookup will never be revealed.  And
> so yes, the ssf for the results of that search would
> be infinity.
> 
> But what I want to check is the weakest link in the
> chain.  I can't imagine any instance when that isn't
> what you would want to check, so that is what the
> ssf should reflect.  By definition, the
> slap_auxprop_lookup can never be the weakest link.
> The weakest link in this case when sasl sent the
> password to slapd.  Really, what I want to say is if
> the password was sent in the clear, whether it be by
> sasl or simple auth, then the link must be encrypted.
> 
> The patch makes the information required to do that
> test available.

Using ACLs to enforce this requirement is the wrong approach though. You 
should just use the "security" directive instead. With your approach you're 
missing the fact that SASL may not have sent any password at all to slapd 
(e.g., when using DIGEST-MD5 or an OTP mechanism). As such, you're imposing a 
constraint that makes no sense.
-- 
   -- Howard Chu
   Chief Architect, Symas Corp.  http://www.symas.com
   Director, Highland Sun        http://highlandsun.com/hyc/
   Chief Architect, OpenLDAP     http://www.openldap.org/project/



Followup 4

Download message
Subject: Re: (ITS#5195) ssf not available during sasl bind
From: Russell Stuart <russell-openldap@stuart.id.au>
To: openldap-its@openldap.org
Date: Fri, 26 Oct 2007 09:01:44 +1000
On Thu, 2007-10-25 at 05:18 -0700, Howard Chu wrote:
> Using ACLs to enforce this requirement is the wrong approach though. You 
> should just use the "security" directive instead. With your approach you're

> missing the fact that SASL may not have sent any password at all to slapd 
> (e.g., when using DIGEST-MD5 or an OTP mechanism). As such, you're imposing
a 
> constraint that makes no sense.

So you are saying:

  security sasl=128 simple_bind=128 

would achieve that?  I guess it would.

However, with the patch applied this would have the same 
effect, with the addition that if some other authorisation 
mechanism were introduced (eg pam), it would fail unless 
it was encrypted or I explicitly allowed it.

  acl <password-stuff>
      by tls_ssf=128 ... read
      by sasl_ssf=128 ... read
      by * none

This may look icky to you, but to someone who is just
trying to deploy slapd it means there is one less
slapd.conf option I have to get my head around.

<rant>

Perhaps ease of configuration doesn't seem so important.
But I was at a talk given by Andrew Tridgell about why
he wrote tdb instead of using just using openldap.
Answer: because it took him 3 days to get slapd
configured and working.  3 days is an impressively
short time going on my experiences with it.  He actually
said it wasn't because slapd had bugs, or slapd was too
slow, or slapd didn't have a feature.  It was just 
because in the final analysis, he could not see the
typical samba user being able to make the thing work.

When something is hard to configure typically the doco
is blamed.  But that is often wrong and is wrong in the
case of openldap.  The blame lies with the design of 
the system.  The programmers fail to see the 
configuration of the system as another interface.  They
will put hours of work into designing an API, and
devote 100's of lines of code to making sure that API
is easy to use, that it hides the complexities of its
implementation.  Yet they ignore configuration, which
in effect another API - it is the interface between
the users and the program.

Like most projects openldap uses many libraries to do
its thing.  But makes no attempt to hide that from the
user.  In order to configure openldap you have to 
understand ldap, sasl, tls, berkley db, but whats
worse you have to understand how they interact with 
each other within openldap.  For example, ssf is a sasl
concept.  simple_bind is an ldap concept.  But the
"security" option has "simple_bind=<ssf_factor>", so
suddenly you have to know both, even if you have no
intention of using one of them.  Ick, ick, ick.

If it had of been an API presented to other 
programmers, I bet the original designer who of thought 
"how can I hide all this behind a simple, clean, easy 
to understand interface".  But he didn't, and so now
openldap deservedly has the reputation as one of the
harder pieces of open source software to get up and
going.  As a consequence it is deployed a lot less
than it should be.

</rant>



Followup 5

Download message
Date: Thu, 25 Oct 2007 16:33:30 -0700
From: Howard Chu <hyc@symas.com>
To: russell-openldap@stuart.id.au
CC: openldap-its@openldap.org
Subject: Re: (ITS#5195) ssf not available during sasl bind
russell-openldap@stuart.id.au wrote:
> On Thu, 2007-10-25 at 05:18 -0700, Howard Chu wrote:
>> Using ACLs to enforce this requirement is the wrong approach though.
You
>> should just use the "security" directive instead. With your approach
you're
>> missing the fact that SASL may not have sent any password at all to
slapd
>> (e.g., when using DIGEST-MD5 or an OTP mechanism). As such, you're
imposing a
>> constraint that makes no sense.
> 
> So you are saying:
> 
>   security sasl=128 simple_bind=128
> 
> would achieve that?  I guess it would.
> 
> However, with the patch applied this would have the same
> effect, with the addition that if some other authorisation
> mechanism were introduced (eg pam), it would fail unless
> it was encrypted or I explicitly allowed it.
> 
>   acl <password-stuff>
>       by tls_ssf=128 ... read
>       by sasl_ssf=128 ... read
>       by * none
> 
> This may look icky to you, but to someone who is just
> trying to deploy slapd it means there is one less
> slapd.conf option I have to get my head around.

There are no shortcuts when it comes to security. If you don't take the time 
to understand it you'll get it wrong, period. That's true of all systems, no 
matter how simple or complex - if you don't take the time to understand the 
system's security requirements, you will screw up. As in your example above, 
which should use "auth" access, not "read" access.

> <rant>
> 
> Perhaps ease of configuration doesn't seem so important.
> But I was at a talk given by Andrew Tridgell about why
> he wrote tdb instead of using just using openldap.
> Answer: because it took him 3 days to get slapd
> configured and working.  3 days is an impressively
> short time going on my experiences with it.  He actually
> said it wasn't because slapd had bugs, or slapd was too
> slow, or slapd didn't have a feature.  It was just
> because in the final analysis, he could not see the
> typical samba user being able to make the thing work.

He should have come and talked to us. (In fact, since then, he has. We've 
shown how easily a canned Samba config can be setup, and we'll be 
collaborating closely on schema issues and other things down the road.)

> When something is hard to configure typically the doco
> is blamed.  But that is often wrong and is wrong in the
> case of openldap.  The blame lies with the design of
> the system.  The programmers fail to see the
> configuration of the system as another interface.  They
> will put hours of work into designing an API, and
> devote 100's of lines of code to making sure that API
> is easy to use, that it hides the complexities of its
> implementation.  Yet they ignore configuration, which
> in effect another API - it is the interface between
> the users and the program.

You presume a lot here. Configuration in OpenLDAP 2.3 and 2.4 is a lot more 
rational than it ever was in prior releases, and that's because it has been 
the focus of considerable attention. The fact that your old methods still 
work, allowing you to limp along without reading about all the new methods, is 
a testament to the care that was taken in building the configuration
enhancements.

> If it had of been an API presented to other
> programmers, I bet the original designer who of thought
> "how can I hide all this behind a simple, clean, easy
> to understand interface".  But he didn't, and so now
> openldap deservedly has the reputation as one of the
> harder pieces of open source software to get up and
> going.  As a consequence it is deployed a lot less
> than it should be.

Nonsense. The primary reason OpenLDAP has a bad reputation in some circles is 
because distros like RedHat continued to bundle obsolete versions years after 
they had been dropped by the Project, and so a vast number of users were never 
exposed to the myriad improvements made over time. Regardless, OpenLDAP usage 
is still growing, and it looks like the growth will continue to accelerate.

None of this discussion is relevant to this ITS.
-- 
   -- Howard Chu
   Chief Architect, Symas Corp.  http://www.symas.com
   Director, Highland Sun        http://highlandsun.com/hyc/
   Chief Architect, OpenLDAP     http://www.openldap.org/project/



Followup 6

Download message
Subject: Re: (ITS#5195) ssf not available during sasl bind
From: Russell Stuart <russell-openldap@stuart.id.au>
To: openldap-its@openldap.org
Date: Fri, 26 Oct 2007 10:22:02 +1000
On Thu, 2007-10-25 at 16:33 -0700, Howard Chu wrote:
> There are no shortcuts when it comes to security. If you don't take the
time 
> to understand it you'll get it wrong, period. That's true of all systems,
no 
> matter how simple or complex - if you don't take the time to understand the

> system's security requirements, you will screw up. As in your example
above, 
> which should use "auth" access, not "read" access.

I am not sure I agree, but to borrow your words a 
discussion about short cuts to security seems 
irrelevant to this ITS, as is whether I made a typo 
in my example.  

The rather long winded rant is relevant in one minor way
(sorry about the length).  In your original counter 
example, you said correctly "slap_auxprop_lookup" is 
doing an internal search and thus doesn't expose the 
password.  The fact that I would have to know that in
order to realise that "acl ... by tls_ssf=" doesn't do
what I want is what I was railing against.  It is purely 
a technical detail.  When plain text is used, the 
password is sent over the connection.  The fact happens 
not to be the copy in the slapd database (and thus as
you say the copy in the database is infinitely secure)
is irrelevant to me, the user.

You said that if "you don't take the time to understand
[the] security [model], you will get it wrong, period".
Well there is room for movement at both ends.  You can
insist the user spends a long time understanding slapd's
security model, or you can make the model easier to
understand.  I think the patch does the latter.  If you 
think I am wrong, ie it makes slapd configuration harder 
to understand, then by all means reject it.



Followup 7

Download message
Subject: Re: (ITS#5195) ssf not available during sasl bind
From: Russell Stuart <russell-openldap@stuart.id.au>
To: openldap-its@OpenLDAP.org
Cc: russell-openldap@stuart.id.au
Date: Fri, 26 Oct 2007 19:40:35 +1000
I have now tried:

  security tls=128 sasl=128

It didn't work.  All the commands below work without
the 'security' option.

  ldapsearch -x -ZZ -D "uid=openldap,dc=auth,dc=lubemobile,dc=com,dc=au" -w
"$(ssu cat /etc/libnss-ldap.secret)" -b "dc=pwd,dc=lubemobile,dc=com,dc=au"
"(uid=it)"
  ldap_bind: Confidentiality required (13)
        additional info: SASL confidentiality required

Which, when I think about it may be reasonable.  I am
apparently saying I require a sasl ssf of 128, and
obviously I don't have that.  This was a surprise
though:

  ldapsearch -ZZ -U "openldap" -b "dc=pwd,dc=lubemobile,dc=com,dc=au" "(uid=it)"
  ldap_sasl_interactive_bind_s: Confidentiality required (13)
        additional info: SASL confidentiality required

Is that a bug?

Anyway, bugs aside, assuming I now have some idea how it 
works its useless for my application.  I want to insist 
that userPassword to be encrypted when sent and received, 
be that via CRAM-MD5 or friends or by using TLS, but clear 
text is fine for the rest of the information in the ldap 
database, and in fact anonymous connections unencrypted 
connections are the rule for VPN access.  The 'security' 
option applies to all connections.

Anyway, to state the problem as clearly as I can, I can't
see how to do the following combination of things:

  . Allow anonymous access over unencrypted connections
    for the bulk of the database.

  . Allow simple binds, but they must be over encrypted
    connections to protect userPassword.
   
  . Allow sasl binds over unencrypted connections, but
    the must not use clear text.

  . Not particularly relevant to me, but it would be
    nice to allow sasl binds using clear text if they
    are over an encrypted connection.

The patch does this of course, but if there is some other
way then the patch is irrelevant, except perhaps from a
usability point of view.



Followup 8

Download message
Date: Fri, 26 Oct 2007 19:59:50 -0700
From: Quanah Gibson-Mount <quanah@zimbra.com>
To: russell-openldap@stuart.id.au, openldap-its@openldap.org
Subject: Re: (ITS#5195) ssf not available during sasl bind
--On Friday, October 26, 2007 9:47 AM +0000 russell-openldap@stuart.id.au 
wrote:

> I have now tried:
>
>   security tls=128 sasl=128
>
> It didn't work.  All the commands below work without
> the 'security' option.

This says: Require a TLS section of 128 bit security AND SASL security of 
128.

>   ldapsearch -x -ZZ -D "uid=openldap,dc=auth,dc=lubemobile,dc=com,dc=au"
> -w "$(ssu cat /etc/libnss-ldap.secret)" -b
> "dc=pwd,dc=lubemobile,dc=com,dc=au" "(uid=it)"   ldap_bind:

You aren't using SASL here.  So of course it fails.

> Which, when I think about it may be reasonable.  I am
> apparently saying I require a sasl ssf of 128, and
> obviously I don't have that.  This was a surprise
> though:

Right.

>   ldapsearch -ZZ -U "openldap" -b "dc=pwd,dc=lubemobile,dc=com,dc=au"
> "(uid=it)"   ldap_sasl_interactive_bind_s: Confidentiality required (13)
>         additional info: SASL confidentiality required
>
> Is that a bug?


I suggest reading the part on sasl-secprops in the slapd.conf (5) man page. 
It notes that the default is to setting is to block anonymous and plain 
SASL binds.


> Anyway, bugs aside, assuming I now have some idea how it
> works its useless for my application.  I want to insist
> that userPassword to be encrypted when sent and received,
> be that via CRAM-MD5 or friends or by using TLS, but clear
> text is fine for the rest of the information in the ldap
> database, and in fact anonymous connections unencrypted
> connections are the rule for VPN access.  The 'security'
> option applies to all connections.

access to userPassword
	by users read sasl_ssf=128 break
	by users read tls=128

I think might do it.

> Anyway, to state the problem as clearly as I can, I can't
> see how to do the following combination of things:
>
>   . Allow anonymous access over unencrypted connections
>     for the bulk of the database.

Above acl followed by

access to *
	by * read

(or however else limited).

>   . Allow simple binds, but they must be over encrypted
>     connections to protect userPassword.

See above ACL.

>   . Allow sasl binds over unencrypted connections, but
>     the must not use clear text.

Read the sasl-secprops setting.

--Quanah



--

Quanah Gibson-Mount
Principal Software Engineer
Zimbra, Inc
--------------------
Zimbra ::  the leader in open source messaging and collaboration



Followup 9

Download message
Date: Fri, 26 Oct 2007 20:10:13 -0700
From: Quanah Gibson-Mount <quanah@zimbra.com>
To: openldap-its@openldap.org
Subject: Re: (ITS#5195) ssf not available during sasl bind
--On Saturday, October 27, 2007 3:00 AM +0000 quanah@zimbra.com wrote:


> access to userPassword
> 	by users read sasl_ssf=128 break
> 	by users read tls=128

Replace users by self, sorry.  Obviously you don't want any user to read 
it. ;)  Although hm, anonymous need access at least for auth, so:

access to userPassword
	by anonymous auth
	by self read sasl_ssf=128 break
	by self read tls=128

Note that in the anonymous access case, the user password is never 
transmitted from the server end, in any case.

You could do a similar requirement as above, something like:

access to userPassword
	by anonymous auth sasl_ssf=128 break
	by anonymous auth tls=128
	by self read

(At this point, you've forced any user to be encrypted, so no need to 
duplicate the requirements on the read access).

--Quanah



--

Quanah Gibson-Mount
Principal Software Engineer
Zimbra, Inc
--------------------
Zimbra ::  the leader in open source messaging and collaboration



Followup 10

Download message
Subject: Re: (ITS#5195) ssf not available during sasl bind
From: Russell Stuart <russell-openldap@stuart.id.au>
To: Quanah Gibson-Mount <quanah@zimbra.com>
Cc: openldap-its@openldap.org
Date: Sat, 27 Oct 2007 13:52:58 +1000
On Fri, 2007-10-26 at 19:59 -0700, Quanah Gibson-Mount wrote:
> >   ldapsearch -ZZ -U "openldap" -b "dc=pwd,dc=lubemobile,dc=com,dc=au"
> > "(uid=it)"   ldap_sasl_interactive_bind_s: Confidentiality required
(13)
> >         additional info: SASL confidentiality required
> >
> > Is that a bug?
> 
> 
> I suggest reading the part on sasl-secprops in the slapd.conf (5) man page.

> It notes that the default is to setting is to block anonymous and plain 
> SASL binds.

I suspect you are right in that is the cause of the
problem because a -Y DIGEST-MD5 fixes it.  But, as
I said, it worked before the security option was
added.  It worked because DIGEST-MD5 was the default.
So why isn't it the default now?

Now that you have pointed it out, I guess that the 
addition of the 'security'  option prevented SASL 
from searching dn="" for the types of authentications 
supported.  

> access to userPassword
> 	by users read sasl_ssf=128 break
> 	by users read tls=128
> 
> I think might do it.

You would think that would do it - certainly I did.  But
you would be wrong.  Currently it doesn't, and that is
what this ITS is about.  The patch I supplied with the
initial bug report changes things so it does work.



Followup 11

Download message
From: Hallvard B Furuseth <h.b.furuseth@usit.uio.no>
Date: Mon, 29 Oct 2007 18:07:35 +0100
To: openldap-its@openldap.org
Cc: russell-openldap@stuart.id.au
Subject: Re: (ITS#5195) ssf not available during sasl bind
quanah@zimbra.com writes:
> access to userPassword
> 	by anonymous auth sasl_ssf=128 break
> 	by anonymous auth tls=128
> 	by self read
>
> (At this point, you've forced any user to be encrypted,

No, you've forced users who authenticate against userPassword
to be encrypted.  Not all SASL methods, nor auth with rootpw.

Also, repeating an old point, remember that the "security" keyword
produces better error messages ("Confidentiality required") than
"access ... ssf=..." ("Insufficient access" for updates, "Invalid
credentials" for Bind).  With the latter, the user likely thinks
he mistyped the password and sends it again unencrypted.

Come to think of it, I guess I should insert that in the slapd.access(5)
manpage.

> so no need to duplicate the requirements on the read access).

-- 
Regards,
Hallvard



Followup 12

Download message
Date: Mon, 29 Oct 2007 10:22:02 -0700
From: Quanah Gibson-Mount <quanah@zimbra.com>
To: h.b.furuseth@usit.uio.no, openldap-its@openldap.org
Subject: Re: (ITS#5195) ssf not available during sasl bind
--On Monday, October 29, 2007 5:08 PM +0000 h.b.furuseth@usit.uio.no wrote:


> Also, repeating an old point, remember that the "security" keyword
> produces better error messages ("Confidentiality required") than
> "access ... ssf=..." ("Insufficient access" for updates, "Invalid
> credentials" for Bind).  With the latter, the user likely thinks
> he mistyped the password and sends it again unencrypted.


The problem with the security directive that the user ran into, however, I 
don't see a way to get around.  Which is there is no "OR" support.  I.e., 
you can't say, I want the user to have a TLS of 128 OR SASL SSF of 128.  If 
you specify both, both are required.

--Quanah

--

Quanah Gibson-Mount
Principal Software Engineer
Zimbra, Inc
--------------------
Zimbra ::  the leader in open source messaging and collaboration



Followup 13

Download message
Date: Mon, 29 Oct 2007 13:10:23 -0700
From: Howard Chu <hyc@symas.com>
To: quanah@zimbra.com
CC: openldap-its@openldap.org
Subject: Re: (ITS#5195) ssf not available during sasl bind
quanah@zimbra.com wrote:
> --On Monday, October 29, 2007 5:08 PM +0000 h.b.furuseth@usit.uio.no wrote:
> 
> 
>> Also, repeating an old point, remember that the "security" keyword
>> produces better error messages ("Confidentiality required") than
>> "access ... ssf=..." ("Insufficient access" for updates, "Invalid
>> credentials" for Bind).  With the latter, the user likely thinks
>> he mistyped the password and sends it again unencrypted.

> The problem with the security directive that the user ran into, however, I
> don't see a way to get around.  Which is there is no "OR" support.  I.e.,
> you can't say, I want the user to have a TLS of 128 OR SASL SSF of 128.  If
> you specify both, both are required.

You really need to read more carefully. If you only care about the overall 
SSF, regardless of whether it's from TLS or SASL, then just use the "ssf"
factor.
-- 
   -- Howard Chu
   Chief Architect, Symas Corp.  http://www.symas.com
   Director, Highland Sun        http://highlandsun.com/hyc/
   Chief Architect, OpenLDAP     http://www.openldap.org/project/



Followup 14

Download message
Date: Mon, 29 Oct 2007 15:51:47 -0700
From: Quanah Gibson-Mount <quanah@zimbra.com>
To: hyc@symas.com, openldap-its@openldap.org
Subject: Re: (ITS#5195) ssf not available during sasl bind
--On Monday, October 29, 2007 8:13 PM +0000 hyc@symas.com wrote:


> You really need to read more carefully. If you only care about the
> overall  SSF, regardless of whether it's from TLS or SASL, then just use
> the "ssf" factor. --

Nice, in theory, but I think my example was bad.  So let's rehash.

When I was at Stanford, the SASL SSF max was 56, because of the DES keys. 
The TLS SSF was 128.  So how would I indicate that I want EITHER a SASL SSF 
of 56 or a TLS SSF of 128 using the security directive?

--Quanah


--

Quanah Gibson-Mount
Principal Software Engineer
Zimbra, Inc
--------------------
Zimbra ::  the leader in open source messaging and collaboration



Followup 15

Download message
Date: Mon, 29 Oct 2007 15:54:58 -0700
From: Howard Chu <hyc@symas.com>
To: quanah@zimbra.com
CC: openldap-its@openldap.org
Subject: Re: (ITS#5195) ssf not available during sasl bind
quanah@zimbra.com wrote:
> --On Monday, October 29, 2007 8:13 PM +0000 hyc@symas.com wrote:
>> You really need to read more carefully. If you only care about the
>> overall  SSF, regardless of whether it's from TLS or SASL, then just
use
>> the "ssf" factor. --
> 
> Nice, in theory, but I think my example was bad.  So let's rehash.
> 
> When I was at Stanford, the SASL SSF max was 56, because of the DES keys.
> The TLS SSF was 128.  So how would I indicate that I want EITHER a SASL SSF
> of 56 or a TLS SSF of 128 using the security directive?

You don't. That would open you up to a downgrade attack.
-- 
   -- Howard Chu
   Chief Architect, Symas Corp.  http://www.symas.com
   Director, Highland Sun        http://highlandsun.com/hyc/
   Chief Architect, OpenLDAP     http://www.openldap.org/project/



Followup 16

Download message
Date: Mon, 29 Oct 2007 16:04:51 -0700
From: Quanah Gibson-Mount <quanah@zimbra.com>
To: hyc@symas.com, openldap-its@openldap.org
Subject: Re: (ITS#5195) ssf not available during sasl bind
--On Monday, October 29, 2007 10:57 PM +0000 hyc@symas.com wrote:


> You don't. That would open you up to a downgrade attack.


So I think the point of the ITS remains.  It's difficult to do what they 
wanted to do.  And really, sometimes all you care is that the connection is 
encrypted at a particular base level based on the type of encryption being 
done.  Which is how it was at Stanford.  Which apparently we don't support 
using the security directive.  Which is why my acl's had sasl_ssf=56 all 
over them.

--Quanah


--

Quanah Gibson-Mount
Principal Software Engineer
Zimbra, Inc
--------------------
Zimbra ::  the leader in open source messaging and collaboration



Followup 17

Download message
Date: Mon, 29 Oct 2007 16:12:42 -0700
From: Howard Chu <hyc@symas.com>
To: Quanah Gibson-Mount <quanah@zimbra.com>
CC: openldap-its@openldap.org
Subject: Re: (ITS#5195) ssf not available during sasl bind
Quanah Gibson-Mount wrote:
> --On Monday, October 29, 2007 10:57 PM +0000 hyc@symas.com wrote:
>> You don't. That would open you up to a downgrade attack.

> So I think the point of the ITS remains.  It's difficult to do what they
> wanted to do.  And really, sometimes all you care is that the connection is
> encrypted at a particular base level based on the type of encryption being
> done.  Which is how it was at Stanford.  Which apparently we don't support
> using the security directive.  Which is why my acl's had sasl_ssf=56 all
> over them.

Your point and the original ITS are quite different. In your case, you want to 
require a different SSF based on the underlying mechanism. That is foolish as 
far as security policy goes; any attacker will simply ignore the stronger 
defense and focus on breaking the weaker one. As the original poster stated, 
security is only as strong as the weakest link.

Stay focused on the original ITS topic.
-- 
   -- Howard Chu
   Chief Architect, Symas Corp.  http://www.symas.com
   Director, Highland Sun        http://highlandsun.com/hyc/
   Chief Architect, OpenLDAP     http://www.openldap.org/project/



Followup 18

Download message
Date: Mon, 29 Oct 2007 16:31:58 -0700
From: Quanah Gibson-Mount <quanah@zimbra.com>
To: hyc@symas.com, openldap-its@openldap.org
Subject: Re: (ITS#5195) ssf not available during sasl bind
--On Monday, October 29, 2007 11:15 PM +0000 hyc@symas.com wrote:

> Stay focused on the original ITS topic.

Discussing further with Howard offline, he notes that ssf=<n> is the 
minimum, not the requirement, so in the case I was thinking of:

security ssf=56

would be sufficient in that specific case, although all connections are 
forced to be encrypted at that point.  I'm not sure the security directive 
then satisfies allowing anonymous binds to be unencrypted, which is why 
then using ACL statements is a better route for that data you specifically 
want to ensure is protected.

--Quanah

--

Quanah Gibson-Mount
Principal Software Engineer
Zimbra, Inc
--------------------
Zimbra ::  the leader in open source messaging and collaboration



Followup 19

Download message
Subject: Re: (ITS#5195) ssf not available during sasl bind
From: Russell Stuart <russell-openldap@stuart.id.au>
To: Hallvard B Furuseth <h.b.furuseth@usit.uio.no>
Cc: openldap-its@openldap.org
Date: Tue, 30 Oct 2007 09:45:12 +1000
On Mon, 2007-10-29 at 18:07 +0100, Hallvard B Furuseth wrote:
> No, you've forced users who authenticate against userPassword
> to be encrypted.  Not all SASL methods, nor auth with rootpw.

Thats a worry.  Rootpw aside, the intended objective of
the ACL was to ensure passwords were never sent in the
clear.  Either a protocol like CRAM-MD5 was used, or the
entire link is encrypted.  Does it not do that?  (Actually
it doesn't.  It should have been sasl_ssf=71.  But bugs
aside ...)

Secondly, just out of curiosity, are there SASL methods 
that check a shared secret of some kind and don't use 
userPassword?  What are they?

The "security" option may produce better error messages
by it appears to apply to all connections, including
lookups done by SASL to dn="" to discover what mechanisms
are allowed.  It wasn't at all obvious to a newbie like me
that this sentence from "man 1 ldapsearch" only applies
if you don't use the "security" option:

  "-Y mech .... If it's not  specified, the program will 
  choose the best mechanism the server knows."



Followup 20

Download message
Date: Mon, 29 Oct 2007 18:38:25 -0700
From: Quanah Gibson-Mount <quanah@zimbra.com>
To: russell-openldap@stuart.id.au, openldap-its@openldap.org
Subject: Re: (ITS#5195) ssf not available during sasl bind
--On Monday, October 29, 2007 11:45 PM +0000 russell-openldap@stuart.id.au 
wrote:

> On Mon, 2007-10-29 at 18:07 +0100, Hallvard B Furuseth wrote:
>> No, you've forced users who authenticate against userPassword
>> to be encrypted.  Not all SASL methods, nor auth with rootpw.
>
> Thats a worry.  Rootpw aside, the intended objective of
> the ACL was to ensure passwords were never sent in the
> clear.  Either a protocol like CRAM-MD5 was used, or the
> entire link is encrypted.  Does it not do that?  (Actually
> it doesn't.  It should have been sasl_ssf=71.  But bugs
> aside ...)
>
> Secondly, just out of curiosity, are there SASL methods
> that check a shared secret of some kind and don't use
> userPassword?  What are they?

GSSAPI



--

Quanah Gibson-Mount
Principal Software Engineer
Zimbra, Inc
--------------------
Zimbra ::  the leader in open source messaging and collaboration



Followup 21

Download message
Date: Mon, 29 Oct 2007 18:53:26 -0700
From: Howard Chu <hyc@symas.com>
To: russell-openldap@stuart.id.au
CC: openldap-its@openldap.org
Subject: Re: (ITS#5195) ssf not available during sasl bind
russell-openldap@stuart.id.au wrote:
> On Mon, 2007-10-29 at 18:07 +0100, Hallvard B Furuseth wrote:
>> No, you've forced users who authenticate against userPassword
>> to be encrypted.  Not all SASL methods, nor auth with rootpw.
> 
> Thats a worry.  Rootpw aside, the intended objective of
> the ACL was to ensure passwords were never sent in the
> clear.  Either a protocol like CRAM-MD5 was used, or the
> entire link is encrypted.

By the way, CRAM-MD5 has a few known weaknesses. Should use DIGEST-MD5 
instead. http://www.ietf.org/rfc/rfc2831.txt (For what that's worth. Given 
that methods exist to create MD5 collisions, it's not clear how much longer 
DIGEST-MD5 will be useful.)

> Does it not do that?  (Actually
> it doesn't.  It should have been sasl_ssf=71.  But bugs
> aside ...)
> 
> Secondly, just out of curiosity, are there SASL methods
> that check a shared secret of some kind and don't use
> userPassword?  What are they?
> 
> The "security" option may produce better error messages
> by it appears to apply to all connections, including
> lookups done by SASL to dn="" to discover what mechanisms
> are allowed.  It wasn't at all obvious to a newbie like me
> that this sentence from "man 1 ldapsearch" only applies
> if you don't use the "security" option:
> 
>   "-Y mech .... If it's not  specified, the program will
>   choose the best mechanism the server knows."

Perhaps we should add a security option to separately specify the SSF for 
anonymous sessions.
-- 
   -- Howard Chu
   Chief Architect, Symas Corp.  http://www.symas.com
   Director, Highland Sun        http://highlandsun.com/hyc/
   Chief Architect, OpenLDAP     http://www.openldap.org/project/



Followup 22

Download message
From: Hallvard B Furuseth <h.b.furuseth@usit.uio.no>
Date: Tue, 30 Oct 2007 09:27:35 +0100
To: quanah@zimbra.com
Cc: openldap-its@openldap.org
Subject: Re: (ITS#5195) ssf not available during sasl bind
quanah@zimbra.com writes:
> --On Monday, October 29, 2007 11:45 PM +0000 russell-openldap@stuart.id.au 
> wrote:
>> Secondly, just out of curiosity, are there SASL methods
>> that check a shared secret of some kind and don't use
>> userPassword?  What are they?
>
> GSSAPI

And all SASL methods that use passwords, if SASL is configured to use
another password store than slapd.  Like Cyrus SASL's default sasldb.

-- 
Regards,
Hallvard



Followup 23

Download message
From: Hallvard B Furuseth <h.b.furuseth@usit.uio.no>
Date: Tue, 30 Oct 2007 09:31:05 +0100
To: russell-openldap@stuart.id.au
Cc: openldap-its@openldap.org
Subject: Re: (ITS#5195) ssf not available during sasl bind
[Resending, I forgot Russell wasn't in the to/cc list of your
reply.  Don't know if that means he didn't receive it or if ITS
did something clever.]

quanah@zimbra.com writes:
> --On Monday, October 29, 2007 11:45 PM +0000 russell-openldap@stuart.id.au 
> wrote:
>> Secondly, just out of curiosity, are there SASL methods
>> that check a shared secret of some kind and don't use
>> userPassword?  What are they?
>
> GSSAPI

And all SASL methods that use passwords, if SASL is configured to use
another password store than slapd.  Like Cyrus SASL's default sasldb.

-- 
Regards,
Hallvard


Up to top level
Build   Contrib   Development   Documentation   Historical   Incoming   Software Bugs   Software Enhancements   Web  

Logged in as guest


The OpenLDAP Issue Tracking System uses a hacked version of JitterBug

______________
© Copyright 2009, OpenLDAP Foundation, info@OpenLDAP.org