Topics


Blogs


Forums


Samples


Media


Labs


Resources

 




DevCentral > Weblogs > Lori MacVittie - Two Different Socks
 When Is More Important Than Where in Web Application Security
posted on Friday, November 06, 2009 3:43 AM

While you spend your time arguing over where application security belongs, miscreants are taking advantage of vulnerabilities. By the time you address the problem, they’ve moved on to the next one.

Dmitry Evteev @ Positive Technologies Research has discovered (yet) another method of exploitation that allows for the injection of malicious SQL into sites and databases.

blockquoteA method that I discovered today in MySQL documentation struck me with its simplicity and the fact that I haven’t noticed it before. Let me describe this method of bypassing WAF.

MySQL servers allow one to use comments of the following type:

/*!sql-code*/ and /*!12345sql-code*/

As can be noticed, SQL code will be executed from the comment in both cases! The latter construction means that "sql-code" should be executed only if the DBMS version is later than the given value.

As I have been repeatedly asserted [
1,2], some WAFs skip comments during signature search. Among such WAFs, there is the latest stable assembly of Mod_Security (v. 2.5.9).

As is immediately pointed out by several folks in the comments, while this exploit may indeed get past a WAF (and through application defenses, too) for an agile web application firewall (WAF) this is not really a problem. Even for not-so-agile WAFs this should  not be too much of a problem provided the detection of the /*! pattern is flexible enough to adapt in the event that /* ! and /*  !, etc… are also valid exploitable patterns.

In the case of a WAF enabled not just with standard schema (input field) parameter tightening capabilities, i.e. the ability of a WAF to restrict the valid input for any given form field/element/object in a web application, but also enabled with network-side scripting exploits like this can be addressed immediately, before it can be exploited.


VICTIMS DON’T CARE ABOUT WHERE, THEY CARE ABOUT BEING PROTECTED

Now, every time one of these “avoiding the WAF” exploits is discovered or discussed it kindles the flames of the WAF vs APP security war. Why there’s a war in the first place is beyond me as the two techniques are certainly complementary and should be working together toward a common goal: the defense of web applications against exploitation.

But someone is sure to bring it up, so I’m going to ask a very valid, I think, question:

How long would it take for your developers to address this vulnerability in every application?

Remember that the time includes not only development, but testing and deployment into production where those vulnerable applications are exposed. Never mind, you don’t need to answer that. A look at the Spring 2009 Website Security Statistics Report from WhiteHat Security clearly shows that it’s too long:  image

blockquote Q1 2009 Key Findings
  • 82% of websites have had a HIGH, CRITICAL, or URGENT issue
  • 63% of websites currently have a HIGH, CRITICAL, or URGENT issue
  • 60% vulnerability resolution rate among sample with 7,157 (out of 17,888 historical vulnerabilities) unresolved issues remaining as of 3/31/09
  • Vulnerability time-to-fix metrics are not changing substantively, typically requiring weeks to months to achieve resolution.
  • Average # of HIGH, CRITICAL, or URGENT severity vulnerabilities per website during the vulnerability assessment lifetime: 17
  • Average number of serious unresolved vulnerabilities per website: 7
  • Average number of inputs (attack surface) per website: 227
  • Average ratio of vulnerability count / number of inputs: 2.58%

In the 38 days it takes developers to address a new vulnerability across all web applications those same applications are vulnerable; exposed to the possibility they will be exploited, which puts not only the organization but users, customers, and partners at risk for exploitation, identity theft, and data exposure. Web application firewalls are enabled with flexible, agile methods of filtering, screening, and inspecting requests and data to ensure this very type of exploit cannot reach an application. No, the specific solution is not necessarily coded into the WAF any more than it’s coded into the application as the discovery by Dmitry clearly shows. But the web application firewall can be quickly, within hours if not less, adapted to stop an exploit in its tracks while it’s going to take much longer than that to do the same in every application for which this vulnerability might be applicable. That, too, is clearly indicated by the responses to Dmitry’s post in which several folks point out how easy it is to modify mod_security to recognize and prevent the evasion.

Are there architectural and performance advantagesand disadvantages – to employing a WAF? Of course there are. It’s give and take, like any technological solution. There are pros and cons, risks and benefits that need to be weighed. But when you’re weighing the decision based on where web application security should exist you have to factor in when it will exist and how that impacts the overall risk of the choice not to employ a WAF and trust only in developer-generated security.

No one is saying “don’t fix this in the application.” What we’re saying is stop the exploit now, before it’s used against you, while miscreants are taking advantage of the window of opportunity they know exists when a new exploit is discovered. When a vulnerability is addressed is probably much more important than where, and I’m willing to bet that users, customers, and partners don’t care one whit about how you prevent them from being exploited, they only care that you do.

Follow me on Twitter    View Lori's profile on SlideShare  friendfeed icon_facebook

AddThis Feed Button Bookmark and Share

Related blogs & articles:



 
      

Feedback


11/6/2009 8:30 AM
Gravatar This post was mentioned on Twitter by termtype: When Is More Important Than Where in Web Application Security: http://bit.ly/xSwfJ via @addthis
uberVU - social comments

11/6/2009 10:02 AM
Gravatar I am going to have to agree with you again. Experience from dealing with our potential and current customers dictates that during the length of time they use to 'fix' the applications, intrusion techniques are being applied.

While some solutions, whether they be hardware, software or SaaS based, are designed to learn from behavior in real time, they are still a band aid. We can tell them where their holes are, even patch them, but businesses have to realize that resources and time need to be given so that developers can scan and test their applications. This scanning and testing has to be done throughout the life cycle of the application.

Although this may seem to put a strain on revenue for some, if you want happy customers, high security for your data and piece of mind at night, create secure applications.

Of course, if they did that, we may be out of work.
Jim Barnes

11/6/2009 4:18 PM
Gravatar DevCentral Top5 11/06/2009
Colin Walker

11/19/2009 3:42 AM
Gravatar WARNING: Security Device Enclosed
Lori MacVittie

11/26/2009 9:16 PM
Gravatar That's great, I never thought about Web Application Security like that before.
traslochi milano

1/7/2010 3:58 AM
Gravatar Why Is Reusable Code So Hard to Secure?
Lori MacVittie

1/10/2010 5:09 AM
Gravatar Reusable code is hard to secure because every knows what the code is. And it is very easy to find the vulnerabilities once you get the code.
TechFreak
 Leave Feedback
Title  
Name  
Email
Url
Comments   
Please add 2 and 8 and type the answer here: