Ethical Hacking

Learn to find vulnerabilities before the bad guys do! Gain real world hands on hacking experience in our state of the art hacking lab. Course designed and taught by expert instructors with years of penetration testing experience. 12 student maximum in every class. Certification attempt included in every package.
Computer Forensics Training at InfoSec Institute

Gain the in-demand skills of a certified computer examiner, learn to recover trace data left behind by fraud, theft, and cybercrime perpetrators. Discover the source of computer crime and abuse at your organization so that it never happens again. All of our class sizes are guaranteed to be 12 students or less to facilitate one-on-one interaction with one of our expert instructors.




Network Security Web-App-Sec
[Top] [All Lists]

Re: preventing sign up forms from being used for user enumeration

Subject: Re: preventing sign up forms from being used for user enumeration
Date: Mon, 13 Aug 2007 20:10:36 +0200
Robin Wood dijo:
Hi
I'm developing a application which requires users to sign up with both
a username and an email address. I only want an email address to sign
up once and don't want duplication of usernames.

If I just put up a warning stating that an email address is already
registered if it is, the form is open to being used for user
enumeration. Apart from using things like captchas to try to defeat
automated attacks, is there any way to stop this?

Introduce a generic error. Don't give two different messages: the 'username already exist' and 'the email address is in use'. But just give one 'the username or email address already exist, please change it'. Might sound stupid, but it's (slightly) more work for the attacker to see which one is actually in use.


Make it increasingly difficult to do user enumeration by introducing:

- a delay for each test, increase the delay for each test coming from the same location

- a maximum number of attempts from a given source. If there are N attempts at signing up from the same source, trigger an internal alarm and add the source to a blacklist and don't allow new sign ups until a given delay goes through.


The tricky part here is 'location'. Location could could be the source IP address, or the client's Forwarded-For HTTP header, or a specific client identified by a Cookie or by a rewritten url with a server session.


As you are developing a system users need to sign in (and use of client-tracking mechanisms is expected) you can try to defeat automated attacks by forcing users to use the tracking mechanism of your choice (cookies or URL rewritting with a session id). Tell clients that do not allow this kind of tracking (e.g. don't store cookies or don't allow redirects to rewritten locations with a session) that they need to enable that if they want to work with you. Explain to the user why tracking is needed id.

Of course, a malicious user could just generate M different sessions and use them in parallel to brute force you, but each session just gives him N*M consecutive attempts (with an increased delay between each attempt). Just make sure your session generation code's delay is *larger* than the minimum delay introduced for each attempt or, otherwise, a malicious user will just generate many sessions for enumeration and discard them after one use, as this would be faster than trying to reuse each session.

The alarm above and careful monitoring the # of sessions generated by the web server app and comparing this with a baseline (i.e. the average number of sessions your server handles) could be useful to detect these kind of attacks whenever they happen.

Hope that helps,


Javier

-------------------------------------------------------------------------
Sponsored by: Watchfire

The Twelve Most Common Application-level Hack Attacks
Hackers continue to add billions to the cost of doing business online despite security executives' efforts to prevent malicious attacks. This whitepaper identifies the most common methods of attacks that we have seen, and outlines a guideline for developing secure web applications. Download today!


https://www.watchfire.com/securearea/whitepapers.aspx?id=701500000008rSe
--------------------------------------------------------------------------

<Prev in Thread] Current Thread [Next in Thread>
  • Re: preventing sign up forms from being used for user enumeration, Javier Fernández-Sanguino <=