[Owasp-leaders] Method for statically detecting Regex's subject to Regex DOS?

Jim Manico jim.manico at owasp.org
Mon Nov 9 17:32:49 UTC 2015


I do not work for Oracle, but Matt Konda is a member of one of the Java 
Community Security teams, maybe he can help?

I also replied to your note to Milton. I think this is a great idea, Dave.

- Jim

On 11/9/15 7:25 AM, Dave Wichers wrote:
> Michael,
>
> Thanks for this info. I’ve added your article to the OWASP ReDoS page. 
> I think OWASP should campaign to get this feature added to Java (Jim 
> ???  Milton ???).
>
> In the mean time, for Java, if you have to do this by hand, here’s a 
> stack overflow article on how to do it: 
> http://stackoverflow.com/questions/910740/cancelling-a-long-running-regex-match
>
> -Dave
>
> From: Michael Fallas <michael.hidalgo at owasp.org 
> <mailto:michael.hidalgo at owasp.org>>
> Date: Monday, November 9, 2015 at 11:13 AM
> To: Dave Wichers <dave.wichers at owasp.org <mailto:dave.wichers at owasp.org>>
> Cc: "owasp-leaders at lists.owasp.org 
> <mailto:owasp-leaders at lists.owasp.org>" <owasp-leaders at lists.owasp.org 
> <mailto:owasp-leaders at lists.owasp.org>>
> Subject: Re: [Owasp-leaders] Method for statically detecting Regex's 
> subject to Regex DOS?
>
> Hi Dave,
> Dinis and I wrote an article about this subject, we published it on 
> DZONE (https://dzone.com/articles/regular-expressions-denial).
>
> Fortunately, Microsoft .NET 4.5 provides a countermeasure to "avoid" 
> the problem. They introduced a matchTimeout argument on top of the 
>  IsMatch method :
>
> Regex.IsMatch(emailAddress, EmailRegexPattern,
> RegexOptions.IgnoreCase,
> TimeSpan.FromSeconds(5));
> That prevents the DoS. I'm not sure if other programming languages 
> (i.e Java) that implement the naive backtracking algorithm, provides a 
> similar countermeasure, I think it's going to be for the second part 
> of the article :)
> Microsoft has a Regex fuzzing tool 
> http://www.microsoft.com/en-us/download/details.aspx?id=20095, however 
> when I tested it a while back, it did not work for groups on top of 
> the RegEx.
> It will be great to have something like that, specifically since 
> several programming languages using the same backtracking algorithm.
> Thnaks.
>
> On Mon, Nov 9, 2015 at 9:01 AM, Dave Wichers <dave.wichers at owasp.org 
> <mailto:dave.wichers at owasp.org>> wrote:
>
>     OWASP has this article, which is great:
>     https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDo
>     S
>     And wikipedia has a good article too:
>     https://en.wikipedia.org/wiki/ReDoS
>
>     But, it unfortunately they only describe the problem and don¹t
>     describe
>     how to fix it.
>
>     There is another good article on the subject linked from wikipedia:
>     https://msdn.microsoft.com/en-au/magazine/ff646973.aspx
>
>     But it too just describes the problem (very well), and then describes
>     fuzzing as a technique that might be able to detect these problems.
>
>     What I¹m looking for (which I¹m not sure exists), is some way of
>     validating a regex to determine if its vulnerable or not, ideally
>     with a
>     static check (like use of a Regex). If we could figure out a way
>     (and it
>     doesn¹t have to be perfect), developers could use it to validate user
>     supplied data before constructing regex¹s out of them (which I¹ve
>     seen in
>     real apps, and why I¹m asking). And static analysis tools (like maybe
>     FindSecBugs or SonarQube) could also validate statically constructed
>     regexs and warn the developers that the regexs they are building into
>     their apps are (or might be) subject to ReDos.
>
>     I suspect this problem is Œtoo hard¹ for a simple regex. I see
>     there is a
>     tool written here:
>     http://www.cs.bham.ac.uk/~hxt/research/rxxr.shtml
>     <http://www.cs.bham.ac.uk/%7Ehxt/research/rxxr.shtml> that
>     people could use to detect ReDox is arbitrary regexs. I wonder if
>     we could
>     come up with a simple white list regex that prevents regexdos while
>     allowing most of the types of regexs people would want to build.
>
>     Any suggestions out there? (that we can then update our OWASP article
>     with)?
>
>     Thanks, Dave
>
>
>
>     _______________________________________________
>     OWASP-Leaders mailing list
>     OWASP-Leaders at lists.owasp.org <mailto:OWASP-Leaders at lists.owasp.org>
>     https://lists.owasp.org/mailman/listinfo/owasp-leaders
>
>
>
>
> -- 
>
> *Michael Hidalgo.
> OWASP Chapter Leader & Researcher*
>
> *Blog: http://michaelhidalgocr.blogspot.com 
> <http://michaelhidalgocr.blogspot.com/>*
>
>
>
>
> _______________________________________________
> OWASP-Leaders mailing list
> OWASP-Leaders at lists.owasp.org
> https://lists.owasp.org/mailman/listinfo/owasp-leaders

-- 
Jim Manico
Global Board Member
OWASP Foundation
https://www.owasp.org

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.owasp.org/pipermail/owasp-leaders/attachments/20151109/ddebb982/attachment-0001.html>


More information about the OWASP-Leaders mailing list