On Jul 22, 2008, at 2:12 AM, Ovidiu Craciun wrote:
Excerpt from: http://www.xmpp.org/internet-drafts/draft-saintandre-
rfc3920bis-06.html
"Section: 8.3. Generation of Resource Identifiers
A resource identifier can be security-critical. For example, if a
malicious entity can guess a client's resource identifier then it
may be able to determine if the client (and therefore the
controlling principal) is online or offline, thus resulting in a
presence leak as described under Section 15.13 (Presence Leaks).
Traditionally, XMPP resource identifiers have been generated by
clients in ways that are not secure (e.g., hardcoding the resource
identifier to the name of the client or to a common location such
as "home" or "work"). However, for the sake of proper security, a
resource identifier SHOULD be random (see [RANDOM] (Eastlake, D.,
Schiller, J., and S. Crocker, “Randomness Requirements for
Security,” June 2005.)). It is RECOMMENDED that the resource
identifier incorporate a Universally Unique Identifier (UUID), for
which the format specified in [UUID] (Leach, P., Mealling, M., and
R. Salz, “A Universally Unique IDentifier (UUID) URN Namespace,”
July 2005.) is RECOMMENDED. "
From the IMPP RFC I get that:
X can read Y's presence info only
(A) if Y's presence info is public domain, or
(B) if Y previously allowed X to read it's presence.
In this case, when a malicious entity, that can guess X's resource
identifier, is be able to read X's presence only if (A) or (B) is
true, in which case it is not a security threat, it is by default.
What I am saying is that the presence leaks are not related with
the easiness of guessing X's resource IDs but if the server is
handling correctly the presence information for a given JID.
I believe the above paragraph is not referring to presence leaks as a
full <presence> stanza but just as a way for me to know if you are
online or not. It might not be your full <presence> but it is still a
leak.
If I can guess your resource, I might trick your client into replying
to an IQ or direct presence stanza. Any of those replies would mean
that you are online at the moment, and therefore constitute a
presence leak.
Also, the requirement to have a resource identifier be random "for
the sake of proper security" it is also a forced and unnecessary
requirement. The server should guarantee the security by
implementing correctly a secure protocol not by following
recommendations.
If you bind your sessions without a resource, the server will give
you a random resource. For the server to enforce a proper security
perimeter, it would have to filter (drop) IQ's directed to your JID
from JIDs outside your roster. This would most likely prevent some
normal (as in currently available and useful) workflows.
Sometimes I chat with people that are not on my roster, including
file transfer. That would be impossible with a "server-side"
firewall. Of course, you can today implement such firewall with
privacy lists, if your server supports them.
Best regards,
--
Pedro Melo
Blog: http://www.simplicidade.org/notes/
XMPP ID: [EMAIL PROTECTED]
Use XMPP!