[Rets-dev] Username/Password and security policies
Paul Stusiak
pstusiak at falcontechnologies.com
Wed Mar 14 17:09:24 CDT 2007
Colby Ackerfield wrote:
> Paul, thank you for the very thorough explanation.
>
> I still have concerns assuming a delegation of responsibility model
> and the way I suspect it is most often being implemented.
>
I'm not sure I follow your line of reasoning or your observations below.
> In the effort to balance security and convenience, I suspect it is
> common practice to assign users a single user name and password that
> can be used as login information for the MLS and for data access via a
> RETS server (assuming these are distinct use cases). RETS client
> authentication adds additional security to who can request what data
> from the RETS server but my main concern is protecting access to the
> MLS login. If this login information is being transmitted to, and
> possibly stored by, a large assortment of RETS enabled clients, each
> one of those systems is a potential weak link.
>
Yes. What do you mean when you say "MLS login"? What do you see when you
do this? Perhaps the MLS login is the weak link. You could use the RETS
login to provide some degree of security.
> Contractual agreements can help clarify how sensitive information
> should be handled but the more access there is to the information the
> greater the risks. The risk is magnified in the case of the same login
> for RETS and the MLS. The connecting client application may only have
> access to a very limited data set via RETS, but if those same
> credentials were used to log into the MLS, whoever did so would have
> access like the user.
>
I don't follow you here. Does the MLS login have no security facilities
in place?
> My security concerns are based on these observations:
>
> - Shared MLS and RETS login information is common (based on my
> experience with what clients are expecting to use for RETS credentials)
>
I agree that MLS and RETS login information are identical in many cases.
As Stuart points out, you can still use a separate login if there is a
need. I just don't see what your need is though.
> - Client systems acting as proxies request clear text versions of the
> login information
>
I disagree that clients acting as proxies request clear text - is this
an observation based on your system?
One sensible way to handle the proxy is to use MD5 with the client
application OR to insist that the log-in be performed on a secure
channel, like HTTPS. There is nothing to prevent a client application
from presenting some form of a log-in dialog pop-up which is supported
under most browsers (with some caveats) or within their desktop
application. There is nothing to prevent those clients from 'directly'
proxying the log in transaction. That is, the log in occurs by
performing each of the steps outlined in RFC2617. The browser
application throught the client application starts by requesting a login
to the server without valid credentials. The server responds with the
challenge, providing the nonce that the client application passes back
to the browser which uses it to form the appropriate RFC 2617 response,
hashing the password with the nonce (and other elements). This is passed
through by the client application. On the success, the client knows that
this user has valid credentials with the MLS and can then retrieve both
the appropriate user information from the RETS server and adding in the
local client application specific user information to begin the user
session. Using the session id cookie, they (client and server) can track
what and who is making the requests and do the right thing.
> - If any of these clients have a security breach, the MLS accounts
> they access are in jeopardy as well
>
This is a scenario that would occur whether you were using RETS or not.
Any connecting entity to your system should follow the appropriate
security policies that you have in place. RETS only tries to indicate
how you might do it in a common way.
> I suspect these observations are false for many implementations, those
> are the ones I'd like to hear more about.
>
As to implementations, I know of Basic-over-HTTPS as well as direct
proxy and shared credential models of authentication. There are also
implementations of OTP type solutions that I'm sure Stuart or Paul
Hethmon or other parties would be happy to talk to you about. I'm sure
there are some examples of Plain-Text Basic to Client Vendor then Client
Vendor using MD5 to RETS Server examples. I'm just not familiar with them.
In almost every case that I am familiar with, the vendor has implemented
a roles based security model. Users have a role. That role may be
modified by the software that they are using. Both the metadata and
returned data may be modified (reduced) based on the user's role and the
software they are using. A user may be an agent. The MLS may only permit
a single application to update the system. The agent may use software
that is not approved for update, in that combination, the system rejects
any attempts to update a record, since the system has determined that
the user is in a read-only role state. The user may be an agent looking
at listings other than their own. Certain fields will be suppressed
based on MLS policy. A user may be an agent administrative assistant and
have a limitation on the fields that they can see and/or update. In all
cases, the combination of who they are, what they are trying to do and
how (which software) they are trying to do it determines what they can
see and do. Malicious entities will need both the user credentials and
the application credentials to breach the system.
Your concern about a breach of security on a client vendor is a valid
concern. The mortgage industry struggles with this a lot. If the client
is using MD5 from browser through to MLS server, then there is a very
small possibility of being compromised. The password is not visible in
transit, but may still be compromised by replay attacks - weak MD5
implementation or through spyware keystroke loggers. If the client is
holding a copy of the password, then you have a very large possibility
of being compromised. A breach of the client is absolutely a breach of
your system. If the client is doing Basic over HTTPS then MD5, you have
a smaller, but possible risk of compromise.
> I don't disagree that RETS has the required pieces to be implemented
> securely. It is when the authentication information for other systems
> is shared with RETS and third parties that these issues arise.
>
> Colby
>
[snip - why use one word when an thousand will do?]
As before, I think that this can be handled through your implementation
and through contractual agreements. As Ronald Reagan said, "trust but
verify". Trust that the client has implemented their portion correctly,
but alway verify, both initially and as an on-going process.
Is it your concern that a Client Vendor can intercept the user
information then pose as the user? Is there information available using
a simple browser available that you are worried about?
Is it your concern that a Client Vendor, given the proxy model, can
gather identities? This should not be a problem - the credentials
presented are only valid for a short period of time.
What is the threat that you are trying to prevent?
What are you trying to secure?
Paul
Falcon Technologies Corp.
More information about the Rets-dev
mailing list