Re: [Standards] Proposed XMPP Extension: SASL SCRAM Downgrade Protection

2022-10-19 Thread Dave Cridland
On Wed, 19 Oct 2022 at 16:02, Thilo Molitor  wrote:

> Am Mittwoch, 19. Oktober 2022, 16:32:55 CEST schrieb Dave Cridland:
> > Small point: GS2 doesn't ever allow clients to know if channel binding is
> > proven, since the channel binding data is passed in the clear to the
> > server. It does prove the server saw the channel binding data as sent by
> > the client, but not whether the server can see the same channel.
>
> Surely the GS2 implementing server would abort authentication if the
> channel-
> binding data did not match it's own channel. right?


That would be a sensible and conformant implementation, yes.

 But what I was meaning is that the client cannot prove that the server has
done so. It's mostly an irrelevance, really - but when we're discussing
what can and cannot be proven at either end, I think it's important to be
accurate.

Dave.
___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Re: [Standards] Proposed XMPP Extension: SASL SCRAM Downgrade Protection

2022-10-19 Thread Thilo Molitor
Am Mittwoch, 19. Oktober 2022, 16:32:55 CEST schrieb Dave Cridland:
> Small point: GS2 doesn't ever allow clients to know if channel binding is
> proven, since the channel binding data is passed in the clear to the
> server. It does prove the server saw the channel binding data as sent by
> the client, but not whether the server can see the same channel.

Surely the GS2 implementing server would abort authentication if the channel-
binding data did not match it's own channel. right?

-tmolitor



___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Re: [Standards] Proposed XMPP Extension: SASL SCRAM Downgrade Protection

2022-10-19 Thread Dave Cridland
On Wed, 19 Oct 2022 at 14:59, Thilo Molitor  wrote:

> That's a wekness of SCRAM itself. Channel-binding problems will be
> detected
> after the client-final-message as well.
>

Small point: GS2 doesn't ever allow clients to know if channel binding is
proven, since the channel binding data is passed in the clear to the
server. It does prove the server saw the channel binding data as sent by
the client, but not whether the server can see the same channel.

Dave.
___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Re: [Standards] Proposed XMPP Extension: SASL SCRAM Downgrade Protection

2022-10-19 Thread Thilo Molitor
Hi Marvin,

> I think the specification partially exaggerates on what it is able to
> actually achieve security-wise.
> 
> The requirements say: "Allow detection of SASL mechanism downgrades
> even if no channel-binding is in use.". However, as this is an
> extension to SCRAM, it only allows detection of SASL machanism
> downgrades to SCRAM (as already mentioned). The detection only happens
> after the client-final-message is sent to the server. This means that
> if there was any attacke possible because of downgrading to some
> version of SCRAM (and because of no channel-binding being used, the
> SASL mechanism serves purely as mechanism of providing client
> authentication information), this attack would already be possible with
> the data in the client-final-message and thus the attack would not have
> been prevented. Or in short: This does not provide a protection against
> a downgrade of the SASL mechanism, it merely provides detection after
> it is too late.
That's a wekness of SCRAM itself. Channel-binding problems will be detected 
after the client-final-message as well.
But detecting a downgrade may still be better than not detecting it at all.
At least the user could be informed about the downgrade and change her 
password.

That said, OPAQUE will not have this weakness and adding the same downgrade 
protection to OPAQUE would detect the downgrade before sending "credentials" 
to the server.

My proposal furthermore protects the list of channel-binding types agains 
downgrades. See my mail to Daniel earlier today.


> The requirement to "allow detection of downgrades of channel-binding
> types" is fulfilled - under the assumption that the attacker was not
> able to gain access to the credential database of the server or the
> user's cleartext password. This means that as long as any of the user's
> clients still uses or can be downgraded to use PLAIN, an attacker can
> compromise all clients, including those that implement this
> specification.
Yes, PLAIN is evil and should only be used if it can not be avoided, I 
answered that already in another mail.

> IMO, changing clients to not accept servers claiming to only support
> channel-binding that is worse than what they supported previously is
> probably better than this specification (and requires to changes to the
> server).
That way you won't be protected on your first connection.
My proposal detects downgrades even on first connection.

-tmolitor





___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Re: [Standards] Proposed XMPP Extension: SASL SCRAM Downgrade Protection

2022-10-19 Thread Thilo Molitor
Hi Peter,

> In any case, if the client has a local policy not to use PLAIN (or other 
> mechanisms that it considers to be too weak), then it simply wouldn't 
> use those in case of a downgrade attack. Similar policies are in place 
> already for things like old versions of TLS, see here:

> https://datatracker.ietf.org/doc/html/draft-ietf-uta-rfc7525bis-11#section-3.2

Yes, but if you'll leave PLAIN aside, even different flavors of SCRAM have 
different protection levels.
If, for example, SCRAM-SHA-1 is deemed broken one day, server operators most 
probably will still have to support it for some time, until all clients have 
upgraded their policy to not support SCRAM-SHA-1 anymore.
Not to mention that some server operators may not be aware of this newly 
discovered SCRAM SHA-1 weakness at all.
In this timeframe, an attacker could still downgrade the connection to SCRAM-
SHA-1 even though this is insecure now.
Policies are always a hard cut creating timeframes of opportunity for 
attackers.
Having a downgrade-protection in place will close this timeframe of 
opportunity altogether.

-tmolitor



___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Re: [Standards] Proposed XMPP Extension: SASL SCRAM Downgrade Protection

2022-10-19 Thread Thilo Molitor
Hi Daniel,

Am Mittwoch, 19. Oktober 2022, 09:23:10 CEST schrieb Daniel Gultsch:
> > But that leaves clients not able to implement this type, or any
> > channel-binding at all, vulnerable to downgrades of channel-binding types
> > and SASL mechanisms.
> This specification protects clients that are not able to support
> channel binding from being tricked into thinking the server doesn’t
> support channel binding either? That doesn’t make sense. No matter if
> an attacker strips the channel binding announcement the client still
> won’t support channel binding.

No that "being tricked" part refers to a client supporting channel-binding, 
but none of the types the server announces.
An attacker could use this to change the server-advertised channel-bindings to 
only list a fictional type like "BLURDYBLOOP-CB". That would downgrade the 
client to not use channel-binding at all, even if both, server and client 
supported, for example, tls-exporter.

A client now has two options: lie to the server and tell it that it does not 
support channel-binding at all (that's a downgrade now), refrain to connect in 
that case, or try to use channel-binding nevertheless (but that's roulette, 
because the client has to guess which channel-binding to use and if the server 
supports tls-server-end-point, but not tls-exporter and the client uses tls-
exporter, the authentication will fail and the client won't have any way to 
detect if it's because of the channel-binding type it used or because of 
something else like wrong credentials etc.)

See the security considerations of XEP-0440: https://xmpp.org/extensions/
xep-0440.html#security

-tmolitor





___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Re: [Standards] Proposed XMPP Extension: SASL SCRAM Downgrade Protection

2022-10-19 Thread Daniel Gultsch
> But that leaves clients not able to implement this type, or any 
> channel-binding at all, vulnerable to downgrades of channel-binding types and 
> SASL mechanisms.

This specification protects clients that are not able to support
channel binding from being tricked into thinking the server doesn’t
support channel binding either? That doesn’t make sense. No matter if
an attacker strips the channel binding announcement the client still
won’t support channel binding.

cheers
Daniel
___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Re: [Standards] Proposed XMPP Extension: SASL SCRAM Downgrade Protection

2022-10-18 Thread Marvin W
I think the specification partially exaggerates on what it is able to
actually achieve security-wise.

The requirements say: "Allow detection of SASL mechanism downgrades
even if no channel-binding is in use.". However, as this is an
extension to SCRAM, it only allows detection of SASL machanism
downgrades to SCRAM (as already mentioned). The detection only happens
after the client-final-message is sent to the server. This means that
if there was any attacke possible because of downgrading to some
version of SCRAM (and because of no channel-binding being used, the
SASL mechanism serves purely as mechanism of providing client
authentication information), this attack would already be possible with
the data in the client-final-message and thus the attack would not have
been prevented. Or in short: This does not provide a protection against
a downgrade of the SASL mechanism, it merely provides detection after
it is too late.

The requirement to "allow detection of downgrades of channel-binding
types" is fulfilled - under the assumption that the attacker was not
able to gain access to the credential database of the server or the
user's cleartext password. This means that as long as any of the user's
clients still uses or can be downgraded to use PLAIN, an attacker can
compromise all clients, including those that implement this
specification.

IMO, changing clients to not accept servers claiming to only support
channel-binding that is worse than what they supported previously is
probably better than this specification (and requires to changes to the
server).

Marvin


On Wed, 2022-10-12 at 16:13 +, Jonas Schäfer wrote:
> The XMPP Extensions Editor has received a proposal for a new XEP.
> 
> Title: SASL SCRAM Downgrade Protection
> Abstract:
> This specification provides a way to secure the SASL and SASL2
> handshakes against method and channel-binding downgrades.
> 
> URL: https://xmpp.org/extensions/inbox/xep-downgrade-prevention.html
> 
> The Council will decide in the next two weeks whether to accept this
> proposal as an official XEP.
> ___
> Standards mailing list
> Info: https://mail.jabber.org/mailman/listinfo/standards
> Unsubscribe: standards-unsubscr...@xmpp.org
> ___

___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Re: [Standards] Proposed XMPP Extension: SASL SCRAM Downgrade Protection

2022-10-17 Thread Peter Saint-Andre

On 10/17/22 5:27 PM, Thilo Molitor wrote:

Thanks for your feedback Dave!

Am Montag, 17. Oktober 2022, 15:36:56 CEST schrieb Dave Cridland:

Any attacker able to manipulate the data coming from the server such that
the client sees a restricted set of TLS channel bindings can also
manipulate the data coming from the server such that the client sees a
restricted set of SASL mechanisms, removing SCRAM entirely.

That's the reason why PLAIN is strongly discouraged.
Of course you'll need mechanisms providing mutual authentication like SCRAM or
the upcoming OPAQUE mechanism.
Yes, this downgrade protection does not work for all scenarios. It's not
perfect, but it's a step in the right direction and really simple to
implement. It's even fully backwards compatible.

Most public servers today support only SCRAM and PLAIN anyways. So encouraging
them to disable PLAIN and adding this downgrade protection would be enough to
secure all these servers against downgrade attacks.
  

Moreover, if the client wants to use a stronger mechanism - let's say one
of the OPAQUE mechanisms in development - then it loses this protection.

Yes, sure, the same protection has to be defined for OPAQUE, too.
That shouldn't be a problem: if I read the early draft of OPAQUE correctly, it
provides support for optional attributes like SCRAM does (it even tries to use
the same characters for mandatory attributes like SCRAM).


In any case, if the client has a local policy not to use PLAIN (or other 
mechanisms that it considers to be too weak), then it simply wouldn't 
use those in case of a downgrade attack. Similar policies are in place 
already for things like old versions of TLS, see here:


https://datatracker.ietf.org/doc/html/draft-ietf-uta-rfc7525bis-11#section-3.2


Either way, I'd like more/different eyes on this - I'd highly recommend
taking this work to the IETF Kitten working group and seeing what they say.

Sure, I even stated in the XEP that I plan to eventually make this an I-D.
That said, I wanted to gain some implementation and operational experience
before going the next step forward.
Having this as an experimental XEP implemented in, for example, prosody or
ejabberd and Monal/Conversations would allow us to gain exactly this
experience.

This XEP was never meant to advance to stable, but to remain experimental and
be superseded by a proper RFC some day.


IMHO it is fine to advance a XEP to Draft and then obsolete it when the 
proper RFC is published. We have done this before, e.g. XEP-0029.


Peter

___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Re: [Standards] Proposed XMPP Extension: SASL SCRAM Downgrade Protection

2022-10-17 Thread Thilo Molitor
Thanks for your feedback Dave!

Am Montag, 17. Oktober 2022, 15:36:56 CEST schrieb Dave Cridland:
> Any attacker able to manipulate the data coming from the server such that
> the client sees a restricted set of TLS channel bindings can also
> manipulate the data coming from the server such that the client sees a
> restricted set of SASL mechanisms, removing SCRAM entirely.
That's the reason why PLAIN is strongly discouraged.
Of course you'll need mechanisms providing mutual authentication like SCRAM or 
the upcoming OPAQUE mechanism.
Yes, this downgrade protection does not work for all scenarios. It's not 
perfect, but it's a step in the right direction and really simple to 
implement. It's even fully backwards compatible.

Most public servers today support only SCRAM and PLAIN anyways. So encouraging 
them to disable PLAIN and adding this downgrade protection would be enough to 
secure all these servers against downgrade attacks.
 
> Moreover, if the client wants to use a stronger mechanism - let's say one
> of the OPAQUE mechanisms in development - then it loses this protection.
Yes, sure, the same protection has to be defined for OPAQUE, too.
That shouldn't be a problem: if I read the early draft of OPAQUE correctly, it 
provides support for optional attributes like SCRAM does (it even tries to use 
the same characters for mandatory attributes like SCRAM).

> Either way, I'd like more/different eyes on this - I'd highly recommend
> taking this work to the IETF Kitten working group and seeing what they say.
Sure, I even stated in the XEP that I plan to eventually make this an I-D.
That said, I wanted to gain some implementation and operational experience 
before going the next step forward.
Having this as an experimental XEP implemented in, for example, prosody or 
ejabberd and Monal/Conversations would allow us to gain exactly this 
experience.

This XEP was never meant to advance to stable, but to remain experimental and 
be superseded by a proper RFC some day.

-tmolitor



___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Re: [Standards] Proposed XMPP Extension: SASL SCRAM Downgrade Protection

2022-10-17 Thread Dave Cridland
On Wed, 12 Oct 2022 at 17:17, Jonas Schäfer  wrote:

> Title: SASL SCRAM Downgrade Protection
> URL: https://xmpp.org/extensions/inbox/xep-downgrade-prevention.html


Any attacker able to manipulate the data coming from the server such that
the client sees a restricted set of TLS channel bindings can also
manipulate the data coming from the server such that the client sees a
restricted set of SASL mechanisms, removing SCRAM entirely.

Moreover, if the client wants to use a stronger mechanism - let's say one
of the OPAQUE mechanisms in development - then it loses this protection.

Either way, I'd like more/different eyes on this - I'd highly recommend
taking this work to the IETF Kitten working group and seeing what they say.

Dave.
___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Re: [Standards] Proposed XMPP Extension: SASL SCRAM Downgrade Protection

2022-10-16 Thread Jonas Schäfer
I thought we had automatic pulls of the built images... apparently we don't, 
pulled manually, fixed, thanks for the hint.

On Samstag, 15. Oktober 2022 16:34:20 CEST Dave Cridland wrote:
> 404?
> 
> On Wed, 12 Oct 2022 at 17:17, Jonas Schäfer  wrote:
> > The XMPP Extensions Editor has received a proposal for a new XEP.
> > 
> > Title: SASL SCRAM Downgrade Protection
> > Abstract:
> > This specification provides a way to secure the SASL and SASL2
> > handshakes against method and channel-binding downgrades.
> > 
> > URL: https://xmpp.org/extensions/inbox/xep-downgrade-prevention.html
> > 
> > The Council will decide in the next two weeks whether to accept this
> > proposal as an official XEP.
> > ___
> > Standards mailing list
> > Info: https://mail.jabber.org/mailman/listinfo/standards
> > Unsubscribe: standards-unsubscr...@xmpp.org
> > ___




___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___


Re: [Standards] Proposed XMPP Extension: SASL SCRAM Downgrade Protection

2022-10-15 Thread Dave Cridland
404?

On Wed, 12 Oct 2022 at 17:17, Jonas Schäfer  wrote:

> The XMPP Extensions Editor has received a proposal for a new XEP.
>
> Title: SASL SCRAM Downgrade Protection
> Abstract:
> This specification provides a way to secure the SASL and SASL2
> handshakes against method and channel-binding downgrades.
>
> URL: https://xmpp.org/extensions/inbox/xep-downgrade-prevention.html
>
> The Council will decide in the next two weeks whether to accept this
> proposal as an official XEP.
> ___
> Standards mailing list
> Info: https://mail.jabber.org/mailman/listinfo/standards
> Unsubscribe: standards-unsubscr...@xmpp.org
> ___
>
___
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
___