[jdev] Alternate MUC Authentication Mechanisms
Dave Cridland
dave at cridland.net
Fri Oct 22 02:02:08 CST 2010
On Thu Oct 21 23:58:22 2010, Alex Milowski wrote:
> I don't see how having a non-cleartext authentication mechanism for
> MUC rooms changes any security issues that might already be present
> via a MUC room service.
Well, I think that's really my point, right there.
Given an attacker who is in a position to hijack C2S or S2S streams
and inject stanzas, mere replacement of a plaintext method with even
a challenge/response-based hash method doesn't appear to change the
security issues of MUC all that much at all.
All, in fact, it protects against (that a plaintext password doesn't)
is that a purely passive easvesdropper cannot acquire the password.
But if that's your sole threat, then Kurt's original salted hash is
fine, sans timestamp.
On the other hand, if you're concerned about tampering with the
stanzas between the client and the service to any degree, then of
course you note Kurt's hash replays. But, equally, so does all the
other traffic, allowing someone to hijack a stream and inject any
other traffic they choose the moment their victim has joined, leaving
all the traffic in the MUC - that presumably you're trying to
establish trust for - vulnerable to a wide range of attacks.
To put it another way, even if you proof the join request against
replay and spoofing, such that it becomes a (mythical) perfectly
secure operation, it'll still be rather like having a six-inch thick
steel front door but leaving all your windows open.
Therefore, in order to minimize round-trips and provide security, you
need to:
1) Sign all the stanzas with a certificate trusted by the MUC service.
2) Arrange some mechanism for provisioning that certificate. (Which
might be a prearranged common trust anchor, or some mechanism whereby
the client authenticates in a more complex manner with the MUC
service as a one-off to agree on, or sign, a certificate.)
It's this latter case where I propose using SASL, not in the MUC join.
I'm not saying, by the way, that I feel this model is at all
sensible. I think it's a fantastic overkill. But it's a sensible
option *if* you think the threat model includes a likely injection
attack, including replay.
This is why I've been trying to figure out exactly what your threat
model is - that is, what potential attacks you're attempting to
protect against - in order to figure out how far we need to go to
mitigate those attacks.
Dave.
--
Dave Cridland - mailto:dave at cridland.net - xmpp:dwd at dave.cridland.net
- acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/
- http://dave.cridland.net/
Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade
More information about the JDev
mailing list