<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:thr="http://purl.org/syndication/thread/1.0">
    <title>IBM Application Security Insider</title>
    
    
    <link rel="alternate" type="text/html" href="http://blog.watchfire.com/wfblog/" />
    <id>tag:typepad.com,2003:weblog-1300270</id>
    <updated>2012-01-19T11:27:01+02:00</updated>
    
    <generator uri="http://www.typepad.com/">TypePad</generator>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/WatchfireApplicationSecurityInsider" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="watchfireapplicationsecurityinsider" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://hubbub.api.typepad.com/" /><entry>
        <title>Microsoft Anti-XSS Library Bypass (MS12-007)</title>
        <link rel="alternate" type="text/html" href="http://blog.watchfire.com/wfblog/2012/01/microsoft-anti-xss-library-bypass.html" />
        <link rel="replies" type="text/html" href="http://blog.watchfire.com/wfblog/2012/01/microsoft-anti-xss-library-bypass.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d835130c5153ef0168e5c92ecf970c</id>
        <published>2012-01-19T11:27:01+02:00</published>
        <updated>2012-01-22T10:43:49+02:00</updated>
        <summary>Introduction Microsoft Anti-XSS Library is used to protect applications from Cross-Site Scripting attacks, by providing methods for input sanitization. Vulnerability Microsoft Anti-XSS Library 3.0 and 4.0 are vulnerable to an attack in which an attacker is able to create a...</summary>
        <author>
            <name>Adi Cohen</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.watchfire.com/wfblog/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;Introduction&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a name="OLE_LINK4"&gt;&lt;/a&gt;Microsoft Anti-XSS Library is used to protect applications from Cross-Site Scripting attacks, by providing methods for input sanitization.&lt;/p&gt;&#xD;
&lt;p&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;Vulnerability&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Microsoft Anti-XSS Library 3.0 and 4.0 are vulnerable to an attack in which an attacker is able to create a specially formed CSS, that after passing through the &lt;em&gt;&lt;strong&gt;GetSafeHTML&lt;/strong&gt;&lt;/em&gt; or &lt;em&gt;&lt;strong&gt;GetSafeHTMLFragment&lt;/strong&gt;&lt;/em&gt; methods, contains an expression that triggers a JavaScript call in Internet Explorer.&lt;/p&gt;&#xD;
&lt;p&gt;The following ASP.NET code demonstrates the vulnerability:&lt;/p&gt;&#xD;
&lt;p&gt;1. string data = Microsoft.Security.Application.Sanitizer.&lt;strong&gt;&lt;em&gt;GetSafeHtml&lt;/em&gt;&lt;/strong&gt;("&amp;lt;html&amp;gt;a&amp;lt;style&amp;gt;&amp;lt;!--div{font-family:Foo,Bar\\,'a\\a';font-family:';color:expression(alert(1));y'}--&amp;gt;&amp;lt;/style&amp;gt;&amp;lt;div&amp;gt;b&amp;lt;/div&amp;gt;&amp;lt;/html&amp;gt;");&lt;/p&gt;&#xD;
&lt;p&gt;2. string data = Microsoft.Security.Application.Sanitizer.&lt;strong&gt;&lt;em&gt;GetSafeHtmlFragment&lt;/em&gt;&lt;/strong&gt;("&amp;lt;div style=\"font-family:Foo,Bar\\,'a\\a';font-family:';color:expression(alert(1));y'\"&amp;gt;aaa&amp;lt;/div&amp;gt;");&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;&lt;br&gt;&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;Explanation&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;The string value can be broken down as follows:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;div{&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;&lt;span style="color: #0000ff;"&gt;font-family&lt;/span&gt;&lt;/em&gt;&lt;em&gt;:Foo,Bar\,'a\a';&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;&lt;span style="color: #0000ff;"&gt;font-family&lt;/span&gt;&lt;/em&gt;&lt;em&gt;:';color:expression(alert(1));y'&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;}&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;A bug in the Anti-XSS library causes the closing apostrophe in the first CSS rule to be dropped. Because of the string not being properly terminated, Internet Explorer now renders this CSS in a different way, which triggers a javascript call:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;div{&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;&lt;span style="color: #0000ff;"&gt;font-family&lt;/span&gt;&lt;/em&gt;&lt;em&gt;:Foo,Bar\,'a\a;font-family:';&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;&lt;span style="color: #0000ff;"&gt;color&lt;/span&gt;&lt;/em&gt;&lt;em&gt;:expression(alert(1));&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #0000ff;"&gt;&lt;em&gt;y&lt;/em&gt;&lt;em&gt;'&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;}&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;Impact&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Every application that relies on either &lt;strong&gt;&lt;em&gt;GetSafeHTML&lt;/em&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;em&gt;GetSafeHtmlFragment&lt;/em&gt;&lt;/strong&gt; to sanitize user supplied data is vulnerable to XSS.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;Remediation&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Microsoft has issued a the &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=28589" target="_self" title="Anti-XSS library 4.2"&gt;Anti-XSS library 4.2&lt;/a&gt; to address this issue.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;References&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.securityfocus.com/bid/51291"&gt;http://www.securityfocus.com/bid/51291&lt;/a&gt; &lt;br&gt;&lt;a href="http://technet.microsoft.com/en-us/security/bulletin/ms12-007"&gt;http://technet.microsoft.com/en-us/security/bulletin/ms12-007&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=-MD7utY2vvw:3SdxNheqOf8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=-MD7utY2vvw:3SdxNheqOf8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=-MD7utY2vvw:3SdxNheqOf8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?i=-MD7utY2vvw:3SdxNheqOf8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WatchfireApplicationSecurityInsider/~4/-MD7utY2vvw" height="1" width="1"/&gt;</content>



    </entry>
    <entry>
        <title>Testing RESTful Services with AppScan Standard</title>
        <link rel="alternate" type="text/html" href="http://blog.watchfire.com/wfblog/2012/01/testing-restful-services-with-appscan-standard.html" />
        <link rel="replies" type="text/html" href="http://blog.watchfire.com/wfblog/2012/01/testing-restful-services-with-appscan-standard.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d835130c5153ef0168e5907c21970c</id>
        <published>2012-01-15T13:36:09+02:00</published>
        <updated>2012-01-15T13:36:09+02:00</updated>
        <summary>As much as I love SOAP web services (not!), it seems like RESTful web services really caught on and became a de-facto standard these days – you see them everywhere, in the cloud, in AJAX or Web 2.0 applications, mobile...</summary>
        <author>
            <name>Ory Segal</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Info Bits" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Web Application Scanners" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.watchfire.com/wfblog/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;As much as I love SOAP web services (not!), it seems like RESTful web services really caught on and became a de-facto standard these days – you see them everywhere, in the cloud, in AJAX or Web 2.0 applications, mobile applications and so forth.&lt;/p&gt;&#xD;
&lt;p&gt;Unlike SOAP services, RESTful services are lightweight. They are extremely easy to understand and also to develop. Nevertheless, there seem to be a million different definitions as to what they really are, but I think the simplest way to understand them is by using the following four definitions, which I’ve found in this &lt;a href="http://www.ibm.com/developerworks/webservices/library/ws-restful/" target="_blank"&gt;DeveloperWorks article&lt;/a&gt;:&lt;/p&gt;&#xD;
&lt;ol&gt;&#xD;
&lt;li&gt;RESTful services use HTTP methods explicitly&lt;/li&gt;&#xD;
&lt;li&gt;RESTful services are stateless&lt;/li&gt;&#xD;
&lt;li&gt;RESTful services expose directory structure-like URIs&lt;/li&gt;&#xD;
&lt;li&gt;RESTful services transfer XML, JSON or both&lt;/li&gt;&#xD;
&lt;/ol&gt;&#xD;
&lt;p&gt;Simple right?&lt;/p&gt;&#xD;
&lt;p&gt;As much as RESTful services are simple for humans to understand, they are actually a nightmare for automated web application scanners. Why? Because classic HTTP requests usually include parameters either in the Query or Body part of the request. On the other hand, RESTful services usually pass them as what looks like directories (see rule #3 above). For example – the following HTTP request will return the details for a user named Bob:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 'courier new', courier; font-size: 10pt;"&gt;GET /data/users/Bob/ HTTP/1.1&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 'courier new', courier; font-size: 10pt;"&gt;Host: &lt;a href="http://www.some.site/"&gt;www.some.site&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 'courier new', courier; font-size: 10pt;"&gt;&lt;a href="http://www.some.site/"&gt;&lt;/a&gt;Connection: close&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt; &lt;/p&gt;&#xD;
&lt;p&gt;If this was a standard HTTP request, I would tell you that there’s a good chance you’re looking at a web server that contains 3 directories under its virtual root /data/, /users/, and /Bob/, but that’s not the case. This request, tells the RESTful service to retrieve (GET) the account information for user Bob, which is a part of the /users/ list in our data repository.&lt;/p&gt;&#xD;
&lt;p&gt;When an automated scanner crawls the web application, there’s a good chance that out-of-the-box, it won’t figure out that we’re looking at a RESTful service here, and it will consider these parts of the URL as directories. This means a few things:&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Directory-level tests will be sent to the wrong places – potential false positives&lt;/li&gt;&#xD;
&lt;li&gt;Parameter-level tests will not be sent to the right places – potential false negatives&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;IBM's AppScan Standard enables you to train it to cope with RESTful services, using one of two options – Manual or Automatic configuration. Let’s start with the manual option.&lt;/p&gt;&#xD;
&lt;h3&gt;Custom Parameters&lt;/h3&gt;&#xD;
&lt;p&gt;By default, AppScan automatically recognizes parameters in standard HTTP &amp;amp; HTML formats, but if parameters are in other formats (for example within the Path or within another parameter), you need to define them manually, so that AppScan would be able to recognize, follow and manipulate them during scanning. This is done from the Custom Parameters definition, which you can find under &lt;strong&gt;Scan Configuration -&amp;gt; Parameters and Cookies -&amp;gt; Advanced: Customer Parameters&lt;/strong&gt;.&lt;/p&gt;&#xD;
&lt;p&gt;In order to create a new type of custom parameter definition, you have to click the “+” button, which opens the following screen:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://blog.watchfire.com/.a/6a00d835130c5153ef0167608f94fe970b-popup" onclick="window.open( this.href, '_blank', 'width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0' ); return false" style="display: inline;"&gt;&lt;img alt="Custom_Parameter_Screen" border="0" class="asset  asset-image at-xid-6a00d835130c5153ef0167608f94fe970b image-full" src="http://blog.watchfire.com/.a/6a00d835130c5153ef0167608f94fe970b-800wi" title="Custom_Parameter_Screen"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;&#xD;
&lt;p&gt; Let’s see a step by step process of adding a definition that will properly parse and test our “users” parameter in the example above.&lt;/p&gt;&#xD;
&lt;ol&gt;&#xD;
&lt;li&gt;We’ll start by giving this custom parameter definition the Reference Name &lt;strong&gt;RESTful_Path_Parameter&lt;/strong&gt;&lt;/li&gt;&#xD;
&lt;li&gt;In the Pattern field, we’ll enter the regular expression &lt;span style="font-family: 'courier new', courier;"&gt;&lt;strong&gt;/data/&lt;span style="color: #0000ff;"&gt;([\d\w\s%]+)&lt;/span&gt;/&lt;span style="color: #ff0000;"&gt;([\d\w\s%]+)&lt;/span&gt;/ &lt;/strong&gt;&lt;/span&gt;- This pattern includes two match groups, i.e. /data/&lt;span style="color: #0000ff;"&gt;&lt;strong&gt;group1&lt;/strong&gt;&lt;/span&gt;/&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;group2&lt;/strong&gt;&lt;/span&gt;/, group1 denotes the parameter’s name, and group2 the parameter’s value&lt;/li&gt;&#xD;
&lt;li&gt;Since the name of the parameter is the first match group, we will define the &lt;strong&gt;Name group index&lt;/strong&gt; as “1”, and since the value of the parameter is the second match group, we will define the &lt;strong&gt;Value group index&lt;/strong&gt; as “2”. This tells AppScan to extract the name of the parameter from group1, and the value of the parameter from group2. If you are dealing with a Path that only includes a parameter value (i.e. nameless parameters), you can set the Name group index to an empty value, and only mark a single value group&lt;/li&gt;&#xD;
&lt;li&gt;Our RESTful service uses Path based parameters, so we’ll set the &lt;strong&gt;Location&lt;/strong&gt; to “Path”. In general, you can set it to either “Body”, “Path”, or “Query”.&lt;/li&gt;&#xD;
&lt;li&gt;In our scenario, we’ll leave the &lt;strong&gt;Condition&lt;/strong&gt; &lt;strong&gt;Pattern&lt;/strong&gt; empty. This pattern helps us to limit the behavior of the custom parameter definition, by setting another pattern match on the Location. For example, we could’ve defined the &lt;strong&gt;Condition&lt;/strong&gt; pattern to be: &lt;span style="font-family: 'courier new', courier;"&gt;&lt;strong&gt;^/data/&lt;/strong&gt;&lt;/span&gt;, and then our pattern parameter definition would only be relevant for Paths that actually begin with /data/.&lt;/li&gt;&#xD;
&lt;li&gt;In addition, in our scenario, we will leave the &lt;strong&gt;Response Pattern&lt;/strong&gt; empty. Just as an FYI - this pattern helps us to teach AppScan how to track the values of our custom parameter in scenarios where the application treats it as a session ID. In such cases, the application might not only embed new values in Paths (e.g. in web links), but also in other places in subsequent responses, such as XML elements, for example: &lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;newSessionID&amp;gt;12345678&amp;lt;/newSessionID&amp;gt;&lt;/span&gt; - In this case, we would have defined the following Response Pattern:&lt;strong&gt; &lt;br&gt; &lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 'courier new', courier;"&gt;&amp;lt;newSessionID&amp;gt;([0-9]+)&amp;lt;/newSessionID&amp;gt;&lt;/span&gt; - &lt;/strong&gt;this tells AppScan that even though in the HTTP request, the parameter is called &lt;strong&gt;users&lt;/strong&gt;, it should extract new values from an XML element in subsequent responses, that is called &lt;strong&gt;newSessionID&lt;/strong&gt;. Tricky, complex but nevertheless useful!&lt;/li&gt;&#xD;
&lt;/ol&gt;&#xD;
&lt;p&gt;That’s it. Once we have our custom parameter definition in place, we can let AppScan crawl and test the application normally. After the Explore phase, you can have a peek in the &lt;strong&gt;Data&lt;/strong&gt; view, and look at the &lt;strong&gt;Script Parameters&lt;/strong&gt; table:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://blog.watchfire.com/.a/6a00d835130c5153ef0167608f94bd970b-popup" onclick="window.open( this.href, '_blank', 'width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0' ); return false" style="display: inline;"&gt;&lt;img alt="Parameters_View" border="0" class="asset  asset-image at-xid-6a00d835130c5153ef0167608f94bd970b image-full" src="http://blog.watchfire.com/.a/6a00d835130c5153ef0167608f94bd970b-800wi" title="Parameters_View"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;As you can see above, each new RESTful parameter that is extracted and analyzed by AppScan is given a special name in the following format:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 'courier new', courier;"&gt;__patternParameter__[REFERENCE_NAME]_[NAME_GROUP]__INDEX&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;In our case, AppScan detected the &lt;strong&gt;users&lt;/strong&gt; parameter with 2 values – &lt;strong&gt;Bob&lt;/strong&gt; and &lt;strong&gt;Jane&lt;/strong&gt;, and the &lt;strong&gt;books&lt;/strong&gt; parameter with two values &lt;strong&gt;Bobs Biography&lt;/strong&gt; and &lt;strong&gt;Janes Biography.&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;The INDEX part of the custom parameter is helpful if the regular expression that we created, caught on the same Path more than once. For example, consider the following Path:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 'courier new', courier;"&gt;&lt;strong&gt;/data/&lt;span style="color: #0000ff;"&gt;users/Bob&lt;/span&gt;&lt;/strong&gt;&lt;span style="color: #0000ff;"&gt;&lt;strong&gt;/&lt;span style="color: #111111;"&gt;data&lt;/span&gt;/&lt;span style="color: #ff0000;"&gt;phone/areacode&lt;/span&gt;/&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 'courier new', courier;"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/span&gt;our pattern would actually match twice on this Path - the first match (index = 0) would set the parameter name to be &lt;span style="color: #0000ff;"&gt;&lt;strong&gt;users&lt;/strong&gt;&lt;/span&gt; and its value to be &lt;span style="color: #0000ff;"&gt;&lt;strong&gt;Bob&lt;/strong&gt;&lt;/span&gt;, and the second match (index = 1) would set the parameter name to be &lt;span style="color: #ff0000;"&gt;&lt;strong&gt;phone&lt;/strong&gt;&lt;/span&gt; and the its value to be &lt;span style="color: #ff0000;"&gt;&lt;strong&gt;areacode&lt;/strong&gt;&lt;/span&gt;.&lt;strong&gt; &lt;/strong&gt;In such case, the name of the custom parameter would appear as:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 'courier new', courier;"&gt;&lt;strong&gt;__patternParameter__RESTful_Path_Parameter__phone__1&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;h3&gt;Explore Optimization Module&lt;/h3&gt;&#xD;
&lt;p&gt;Mastering AppScan’s custom parameters definition could be a daunting task, but this feature is extremely powerful and will allow you to create complex definitions that could parse non-standard HTTP messages of any type and form. If you are in a hurry, lazy, or simply hate regular expressions, there’s an automated way to detect custom parameters by using AppScan’s &lt;strong&gt;Explore Optimization Module&lt;/strong&gt;, which is available through the &lt;strong&gt;Tools-&amp;gt;Extensions-&amp;gt;Explore Optimization Module&lt;/strong&gt; (Configure or Run):&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://blog.watchfire.com/.a/6a00d835130c5153ef0162ff9adc28970d-popup" onclick="window.open( this.href, '_blank', 'width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0' ); return false" style="display: inline;"&gt;&lt;img alt="Explore_Optimization_Module_Menu" border="0" class="asset  asset-image at-xid-6a00d835130c5153ef0162ff9adc28970d image-full" src="http://blog.watchfire.com/.a/6a00d835130c5153ef0162ff9adc28970d-800wi" title="Explore_Optimization_Module_Menu"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;&#xD;
&lt;p&gt;This extension runs a smart algorithm that will statistically detect URL rewriting rules, such as those that are heavily used by RESTful web applications to generate its directory structure-like URLs. For example, given enough URLs of the format &lt;span style="font-family: 'courier new', courier;"&gt;&lt;strong&gt;/data/users/&lt;span style="color: #0000ff;"&gt;VALUE&lt;/span&gt;/... &lt;/strong&gt;&lt;/span&gt;this module will automatically generate a custom parameter definition for you.&lt;/p&gt;&#xD;
&lt;p&gt;How much is “enough URLs”? This depends on the configuration of the module and specifically on its &lt;strong&gt;Switch Complexity Limit&lt;/strong&gt;, which by default is set to 50, meaning that you must have 50 different values for the /users parameter.&lt;/p&gt;&#xD;
&lt;p&gt;If you want this module to automatically kick in during scans, you can enable it by going to: &lt;strong&gt;Tools-&amp;gt;Extensions-&amp;gt;Explore Optimization Module: Configure&lt;/strong&gt;, and checking the box next to &lt;strong&gt;Always run automatically during scans&lt;/strong&gt;.&lt;strong&gt; &lt;/strong&gt;The module will start working once AppScan has crawled 1,000 URLs. You can increase or decrease this default threshold through the &lt;strong&gt;Minimum links to start module&lt;/strong&gt; configuration. If you suspect that your application is using RESTful services, and the module was disabled when you first scanned it, you can always simply run it by going to:  &lt;strong&gt;Tools-&amp;gt;Extensions-&amp;gt;Explore Optimization Module: Run&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;After the module ran, AppScan’s scan log will include special messages related to this module, for example:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://blog.watchfire.com/.a/6a00d835130c5153ef0162ff9aeea1970d-popup" onclick="window.open( this.href, '_blank', 'width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0' ); return false" style="display: inline;"&gt;&lt;img alt="Scan_Log" border="0" class="asset  asset-image at-xid-6a00d835130c5153ef0162ff9aeea1970d image-full" src="http://blog.watchfire.com/.a/6a00d835130c5153ef0162ff9aeea1970d-800wi" title="Scan_Log"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;&#xD;
&lt;p&gt;There you go. All I had to do was to let AppScan crawl the application for a few minutes, then Run the module, and it automatically created a custom parameter definition with the regular expression &lt;span style="font-family: 'courier new', courier;"&gt;&lt;strong&gt;users/([^/]+)&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;In general, the more URLs you have, the better this module will behave.&lt;/p&gt;&#xD;
&lt;p&gt;It is also iterative - if you continue scanning the application after it created the first round of definitions, and once it hit the threshold again, or once you clicked on Run, it will refine these rules and create new ones where needed. Simple and elegant, albeit less accurate and powerful than the manual option mentioned earlier. That's it.&lt;/p&gt;&#xD;
&lt;p&gt;This post was a bit long, you probably need a REST now.&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=LjZUXx_cFGI:SiM83O9bpqA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=LjZUXx_cFGI:SiM83O9bpqA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=LjZUXx_cFGI:SiM83O9bpqA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?i=LjZUXx_cFGI:SiM83O9bpqA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WatchfireApplicationSecurityInsider/~4/LjZUXx_cFGI" height="1" width="1"/&gt;</content>



    </entry>
    <entry>
        <title>Through the Looking-Glass</title>
        <link rel="alternate" type="text/html" href="http://blog.watchfire.com/wfblog/2011/11/through-the-looking-glass.html" />
        <link rel="replies" type="text/html" href="http://blog.watchfire.com/wfblog/2011/11/through-the-looking-glass.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d835130c5153ef0162fc7624ac970d</id>
        <published>2011-11-16T12:32:29+02:00</published>
        <updated>2011-11-16T14:05:54+02:00</updated>
        <summary>In recent years, I've heard many industry luminaries lament the untimely death of black box web application security assessment tools. Most of them did so, on the basis that white box tools (static analysis code scanners) will eventually rule the...</summary>
        <author>
            <name>Ory Segal</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Info Bits" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Research" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Web Application Scanners" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.watchfire.com/wfblog/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt; In recent years, I've heard many industry luminaries lament the untimely death of black box web application security assessment tools. Most of them did so, on the basis that white box tools (static analysis code scanners) will eventually rule the world and bring order to our galaxy.&lt;/p&gt;&#xD;
&lt;p&gt;The top three rants against black box testing tools were usually –&lt;/p&gt;&#xD;
&lt;ol&gt;&#xD;
&lt;li&gt;Application coverage (or lack thereof)&lt;/li&gt;&#xD;
&lt;li&gt;Scan results inaccuracies (false positives, negatives, and non-exploitable issues) &lt;/li&gt;&#xD;
&lt;li&gt;Lack of code-level information for issues reported (mainly, vulnerable line of code)&lt;/li&gt;&#xD;
&lt;/ol&gt;&#xD;
&lt;p&gt;Regardless of these problems, many still consider black box testing tools to be more accurate, practical and mature tools. Issues reported by black box scanners are usually real and exploitable, and they are less prone to generate noisy results than white box testing tools (taint analysis covers all code paths, which can be a double-edged sword)&lt;/p&gt;&#xD;
&lt;p&gt;Our team has been working extremely hard to remediate these shortcomings, and find creative ways to make automated black box testing more efficient, accurate and to make our customers more successful in securing their web applications.  Our latest innovation was dubbed &lt;strong&gt;Glass box testing&lt;/strong&gt;. Actually, it's not such a new idea - this is something that we have been toying around with for many years (we eventually filed the patent back in Feb. 2008)&lt;/p&gt;&#xD;
&lt;p&gt;Finally, it is here.&lt;/p&gt;&#xD;
&lt;p&gt;One of the main drawbacks of black box testing is the fact that the tester (or tool) is completely oblivious to the inner workings of the tested application it is facing. It is unaware of the programming language, the operating system, database server and so forth. The entire process of issue validation in black box testing relies solely on how the application reacts to certain HTTP requests. For example - you send a SQL injection test and then expect to see a SQL syntax error sent back in a subsequent response. Sadly, many of the most critical issues may never reflect back in some scenarios.&lt;/p&gt;&#xD;
&lt;p&gt;Glass box testing, avoids the classic black box pitfalls, by deploying a server-side agent, which gleans critical application information in runtime, and sends it back to the black box scanner. The type of information relies on the type of agent being used, and the location at which it operates, within the application or near it.&lt;/p&gt;&#xD;
&lt;p&gt;For example, imagine a glass box agent, which performs code instrumentation to the tested web application, it sits in critical points and monitors certain events. When a black box scanner sends a SQL injection test, that will reach a sensitive method (sink), our glass box agent will be able to notify the scanner that a vulnerability exists &lt;strong&gt;[Problem #2 solved]&lt;/strong&gt;. Moreover, it will be able to report back on the vulnerable file name, line number, enclosing class and method, as well as the library class and method that was vulnerable –e.g. Java's executeQuery &lt;strong&gt;[Problem #3 solved]&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt; In order to solve application coverage issues, various different kinds of glass box agents can be used, the simplest would be an agent that monitors the web application's file system, and submits back information about its structure and files. A run time code instrumentation agent similar to the one mentioned earlier, could also detect certain unreferenced parameters - those that are mentioned in code, but never referred to by HTML - like 'debug' parameters &lt;strong&gt;[problem #1 solved]&lt;/strong&gt;. There are many other things a glass box agent could do to improve and complement black box testing, this is merely the tip of the iceberg.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://blog.watchfire.com/.a/6a00d835130c5153ef015436f3eb2b970c-popup" onclick="window.open( this.href, '_blank', 'width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0' ); return false" style="display: inline;"&gt;&lt;img alt="GB" border="0" class="asset  asset-image at-xid-6a00d835130c5153ef015436f3eb2b970c image-full" src="http://blog.watchfire.com/.a/6a00d835130c5153ef015436f3eb2b970c-800wi" title="GB"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Up until now, I discussed the merits of glass box testing in general. Now I would like to briefly discuss the unique capabilities we've built into AppScan Standard 8.5 that was released yesterday.&lt;/p&gt;&#xD;
&lt;p&gt;AppScan’s first glass box agent, performs runtime analysis through code instrumentation of web applications. It hooks into the application, and observes critical application points, reporting vital information back to AppScan Standard. This information includes:&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Monitoring of sensitive methods (sinks) for a range of application layers attacks, bringing unparalleled ultra high accuracy to existing issue detection, as well as the capability to detect issues that black box scanners simply can't spot&lt;/li&gt;&#xD;
&lt;li&gt;Detecting unreferenced application parameters, and increasing application crawling coverage dramatically&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;Other than the cool detection capabilities that were implemented, we had to make sure our users are successful in deploying and using glass box. We can't simply build a half-baked prototype, right? So we baked into it some nifty and important features such as:&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;strong&gt;Simple agent installation&lt;/strong&gt;, through an automatic installer for Windows, Linux and Unix&lt;/li&gt;&#xD;
&lt;li&gt;&lt;strong&gt;Manual agent installation &amp;amp; step-by-step guide&lt;/strong&gt; for complex systems and environments&lt;/li&gt;&#xD;
&lt;li&gt;&lt;strong&gt;Agent authentication&lt;/strong&gt; &amp;amp; support for SSL communications with AppScan&lt;/li&gt;&#xD;
&lt;li&gt;&lt;strong&gt;Agent command &amp;amp; control&lt;/strong&gt;, which allows AppScan to remotely push new (digitally signed) logic &amp;amp; rules into deployed agents&lt;/li&gt;&#xD;
&lt;li&gt;&lt;strong&gt;Reduced agent footprint. &lt;/strong&gt;When the agent is not being actively used, it stops monitoring the application to avoid even the minimal effect on performance&lt;/li&gt;&#xD;
&lt;li&gt;&lt;strong&gt;Real time agent status monitoring&lt;/strong&gt;. From as early as the scan configuration phase, and through the entire scan, AppScan users know exactly what is going on with the agent. Is it up, down, monitoring or configured improperly&lt;/li&gt;&#xD;
&lt;li&gt;&lt;strong&gt;Agent logging&lt;/strong&gt;. Glass box logs can be remotely configured and accessed from AppScan's user interface&lt;/li&gt;&#xD;
&lt;li&gt;&lt;strong&gt;Agent management&lt;/strong&gt;. A cross-scan persistent management of known agents, so you won't have to configure the same things over and over again.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt; As you can see, we take glass box testing very seriously. This is not just a new feature in the product.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;We believe glass box is the future of dynamic analysis&lt;/strong&gt;.&lt;/p&gt;&#xD;
&lt;p&gt;We continuously benchmark our glass box testing capabilities on many different web applications, trying to assess the exact increase in scan accuracy and coverage. In reality, it really depends on the specific application that is being tested. But when we ran AppScan Standard 8.5 with and without glass box, on a sample set of the standard known vulnerable web applications, we found that it brings an increase of at least &lt;strong&gt;180%&lt;/strong&gt; in real true findings, and removes false positives completely.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://blog.watchfire.com/.a/6a00d835130c5153ef015393209e46970b-popup" onclick="window.open( this.href, '_blank', 'width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0' ); return false" style="display: inline;"&gt;&lt;img alt="GB_Stats" border="0" class="asset  asset-image at-xid-6a00d835130c5153ef015393209e46970b image-full" src="http://blog.watchfire.com/.a/6a00d835130c5153ef015393209e46970b-800wi" title="GB_Stats"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Glass box testing provides the best of both white and black box worlds. It enjoys the merits of dynamic analysis - the fact that it is testing a real live web application, and provides real exploitable issues without any noisy ‘theoretical’ results. And at the same time, it enjoys code-level information, similar to static analysis - the ability to look at the application's code and inner workings, and tie each issue to the specific location where the defect lies.&lt;/p&gt;&#xD;
&lt;p&gt;In fact, this reminds me that glass box testing is actually not our first attempt to marry white box and black box – our previous product release, included the highly successful groundbreaking JavaScript Security Analyzer, which uses a hybrid dynamic and static analysis engine, to analyze JavaScript code for client-side vulnerabilities. Back when it was released last year, we &lt;a href="http://blog.watchfire.com/wfblog/2011/01/close-encounters-of-the-third-kind.html" target="_blank"&gt;reported &lt;/a&gt;that JSA found JavaScript issues in 14.5% of the Fortune 500 web sites – in AppScan Standard 8.5, we actually went back and improved our analysis algorithms, and we now know that JSA finds security issues in &lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;40%&lt;/span&gt;&lt;/strong&gt; of the fortune 500 web sites (as reported in the latest 2011 IBM X-Force trend analysis &lt;a href="https://www14.software.ibm.com/webapp/iwm/web/signup.do?source=swg-spsm-tiv-sec-wp&amp;amp;S_PKG=IBM-X-Force-2011-Mid-year" target="_blank"&gt;report&lt;/a&gt;). That is an incredibly awesome yet disturbing piece of data.&lt;/p&gt;&#xD;
&lt;p&gt;In order to give our customers the best possible way to secure their applications, we are continuously blurring the lines between the different types of analysis approaches. I personally think that the entire black box vs. white box debate is way past us. Security testers shouldn’t really care what analysis they are using, as long as it produces accurate and actionable results.&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;em&gt;Glass box testing is available as a feature of AppScan Standard Edition 8.5, and does not require any integration with other IBM products. Simply download and install AppScan Standard 8.5&lt;/em&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;em&gt;Glass box testing is a patent pending technology – US patent application 20090205047&lt;/em&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;em&gt;AppScan Standard customers can download the latest release, which includes glass box testing from &lt;a href="http://www-01.ibm.com/support/docview.wss?uid=swg24031320" target="_blank"&gt;this link&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=LxMK_h4QAh4:q57SmJcF8CY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=LxMK_h4QAh4:q57SmJcF8CY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=LxMK_h4QAh4:q57SmJcF8CY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?i=LxMK_h4QAh4:q57SmJcF8CY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WatchfireApplicationSecurityInsider/~4/LxMK_h4QAh4" height="1" width="1"/&gt;</content>



    </entry>
    <entry>
        <title>JSON-based XSS exploitation</title>
        <link rel="alternate" type="text/html" href="http://blog.watchfire.com/wfblog/2011/10/json-based-xss-exploitation.html" />
        <link rel="replies" type="text/html" href="http://blog.watchfire.com/wfblog/2011/10/json-based-xss-exploitation.html" thr:count="1" thr:updated="2011-11-23T08:32:29+02:00" />
        <id>tag:typepad.com,2003:post-6a00d835130c5153ef0153928c5a5f970b</id>
        <published>2011-10-24T17:22:54+03:00</published>
        <updated>2011-10-24T17:22:54+03:00</updated>
        <summary>JSON rendering in Internet Explorer In the world of Web2.0 and mash web applications, security researchers come across more and more XSS vulnerabilities that are reflected in non HTML responses. For example, JSON responses are becoming more and more common,...</summary>
        <author>
            <name>Adi Cohen</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.watchfire.com/wfblog/">&lt;h3 align="left"&gt;JSON rendering in Internet Explorer&lt;/h3&gt;  &lt;p align="left"&gt;In the world of Web2.0 and mash web applications, security researchers come across more and more XSS vulnerabilities that are reflected in non HTML responses.    &lt;br&gt;For example, JSON responses are becoming more and more common, but exploiting XSS vectors in those pages is considered theoretical because browsers pop up the file download dialog instead of rendering the response when the returned content-type is application/json or application/javascript.&lt;/p&gt;  &lt;p align="left"&gt;&lt;/p&gt;  &lt;p align="left"&gt;There are a few known methods to indirectly exploit these issues:&lt;/p&gt;  &lt;p align="left"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="left"&gt;&lt;strong&gt;1. Attacking the JSON parsing mechanism:&lt;/strong&gt;     &lt;br&gt;Some applications use JS evaluation functions in order to create an object from the returned JSON content. If the attacker is able to inject, for example, a quote sign, he can break out of the JS string surrounding the value and exploit the XSS through the eval function. For example:     &lt;br&gt;"name":"Foo &lt;font color="#ff0000"&gt;"+alert(/XSS/.source)+"&lt;/font&gt;Bar"&lt;/p&gt;  &lt;p align="left"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="left"&gt;&lt;strong&gt;2. Waiting for document.write:&lt;/strong&gt;     &lt;br&gt;Some applications will write parts of the data returned in the JSON response to the DOM. An attacker can inject HTML content into the JSON response that will be rendered once the application writes it to the page.     &lt;br&gt;For example:     &lt;br&gt;"name":"Foo &lt;font color="#ff0000"&gt;&amp;lt;img src=x onerror=alert(/XSS/.source)&amp;gt;&lt;/font&gt;Bar"&lt;/p&gt;  &lt;p align="left"&gt;&lt;/p&gt;  &lt;p align="left"&gt;Although the previous methods will work, they have a few limitations:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;div align="left"&gt;Not all applications have the logical flow needed in order to exploit these attacks.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Some applications use client side filtering that will prevent them from running.&lt;/div&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p align="left"&gt;After thorough research on alternative ways to exploit these types of vulnerabilities, we have discovered a way to render JSON responses in IE by direct browsing.&lt;/p&gt;  &lt;p align="left"&gt;&lt;/p&gt;  &lt;p align="left"&gt;The way IE decides what content-type will be used for a specific response is as follows: (As discovered by Black-Box research)    &lt;br&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;div align="left"&gt;The suggested (server supplied) content-type is searched for in the windows registry for the corresponding CLSID, in order to find the correct handler for that response.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;If the suggested content-type is found, IE will consider that to be the final content-type.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;If the suggested content-type however is not found, IE will attempt to figure out the content-type based on the file extension and other vectors.&lt;/div&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p align="left"&gt;JSON responses generally use the content-type application/json, the problem is that the default mime type list of Internet Explorer does not include that mime-type, in fact it does not include any JSON mime type whatsoever. &lt;/p&gt;  &lt;p align="left"&gt;&lt;/p&gt;  &lt;p align="left"&gt;Example scenario while browsing to a link which returns JSON content:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;div align="left"&gt;User browses to &lt;a href="http://attacker.com/json.php"&gt;http://attacker.com/json.php&lt;/a&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Internet Explorer searches the windows registry (HKCR\MIME\Database\Content Type\) for the returned content-type (application/json). –&lt;strong&gt; Not found.&lt;/strong&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Internet Explorer searches the windows registry (HKCU\Software\Classes\) for the file extension (.php) – &lt;strong&gt;Not found.&lt;/strong&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Internet Explorer prompts the file download dialog.&lt;/div&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p align="left"&gt;From this scenario we can conclude that in cases where the server returns content-types that are unknown to Internet Explorer, the file extension (in addition to other factors not covered here) dictates the final content-type that will be used.&lt;/p&gt;  &lt;p align="left"&gt;&lt;/p&gt;  &lt;p align="left"&gt;In order to force IE to render JSON responses, the file extension in the URL must be set to something that IE consider as text/html (.htm or .html).&lt;/p&gt;  &lt;p align="left"&gt;&lt;/p&gt;  &lt;p align="left"&gt;The way most web servers parse the path from a request is this:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;div align="left"&gt;The user requests the page &lt;a href="http://site.com/html/pages/page.php?id=1"&gt;http://site.com/html/pages/page.php?id=1&lt;/a&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;The server starts to search for the requested resource at the pre-defined path of the web server (for example /var/www/)&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;The server searches for the path requested by the user one entity at a time (starting from left).&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;The server finds that /html/pages/page.php is an executable file and stops the search (executable means that the server has some handler that correlates to that file type; in this case the PHP engine).&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;The rest of the path (id=1) is then passed as a parameter (GET) to PHP.&lt;/div&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p align="left"&gt;Most server side languages (.Net, PHP, Python, Perl…) accept another type of parameter to be passed from the URL: &lt;strong&gt;Path-Info&lt;/strong&gt;.     &lt;br&gt;Unlike the GET parameter, in which the delimiter value is the question mark sign (?), path-info uses the slash sign (/) as its delimiter.     &lt;br&gt;For example the previous path for page.php can be expanded into having a path-info:     &lt;br&gt;&lt;font color="#ff0000"&gt;http&lt;/font&gt;://&lt;font color="#0000ff"&gt;site.com&lt;/font&gt;/&lt;font color="#f79646"&gt;html/pages/page.php&lt;/font&gt;/&lt;font color="#9b00d3"&gt;user=2&lt;/font&gt;?id=1     &lt;br&gt;[&lt;font color="#ff0000"&gt;scheme&lt;/font&gt;]://[&lt;font color="#0000ff"&gt;domain&lt;/font&gt;][&lt;font color="#f79646"&gt;path&lt;/font&gt;]/[&lt;font color="#9b00d3"&gt;path-info&lt;/font&gt;]?[get-query]&lt;/p&gt;  &lt;p align="left"&gt;&lt;/p&gt;  &lt;p align="left"&gt;Once an attacker combines path-info with IE's way of considering content-type values, a wide method of exploiting JSON responses for XSS is achievable.&lt;/p&gt;  &lt;p align="left"&gt;&lt;/p&gt;  &lt;p align="left"&gt;Consider the following scenario:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;div align="left"&gt;The attacker found a reflected XSS in a web application.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;When browsing to "http://site.com/page.php?user=bla&amp;lt;img onerror=alert(1) src=x&amp;gt;bla" Internet Explorer pops up the file download dialog (explained in the beginning of this document).&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;The attacker now adds the value ".html" as a path-info to the URL&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;The attacker now browses to: http://site.com/page.php/&lt;strong&gt;.html&lt;/strong&gt;?user=blah&amp;lt;img onerror=alert(1) src=x&amp;gt;blah&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;The server returns the same page (containing XSS) with same content-type (application/json)&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Internet Explorer searches the windows registry for the application/json content-type and cannot find it.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;This is the point where Internet Explorer uses the file extension of the URL to determine the content-type of the response, only this time the extension IE sees is &lt;strong&gt;.html!&lt;/strong&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Internet Explorer finds the matching content-type for .html files to be text/html, renders the response &lt;u&gt;and fires up the XSS.&lt;/u&gt;&lt;/div&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p align="left"&gt;   &lt;br&gt;Impact:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;div align="left"&gt;Client side, tested successfully on:        &lt;br&gt;• Internet Explorer 6         &lt;br&gt;• Internet Explorer 7         &lt;br&gt;• Internet Explorer 8         &lt;br&gt;• Internet Explorer 9&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Server side, tested successfully on:        &lt;br&gt;• IIS 5.1 (ASPX , PHP)         &lt;br&gt;• IIS 6 (ASPX , PHP)         &lt;br&gt;• IIS 7.5 (ASPX , PHP)         &lt;br&gt;• Apache/2.2.14 (PHP)&lt;/div&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p align="left"&gt;Remediation:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;div align="left"&gt;Client side:        &lt;br&gt;• The following registry key will add the content-type application/json and a corresponding CLSID         &lt;br&gt;[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json]         &lt;br&gt;"CLSID"="{3050f4d8-98B5-11CF-BB82-00AA00BDCE0B}"&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Server side:&lt;/div&gt; • In order to remediate this issue in the server side, beyond the normally recommended sanitization of user supplied inputs, we recommend turning off support of Path-Info.       &lt;br&gt;&lt;/li&gt; &lt;/ol&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=WmOJK_wj8qo:4hJzoHANBpY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=WmOJK_wj8qo:4hJzoHANBpY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=WmOJK_wj8qo:4hJzoHANBpY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?i=WmOJK_wj8qo:4hJzoHANBpY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WatchfireApplicationSecurityInsider/~4/WmOJK_wj8qo" height="1" width="1"/&gt;</content>



    </entry>
    <entry>
        <title>DNS poisoning via Port Exhaustion</title>
        <link rel="alternate" type="text/html" href="http://blog.watchfire.com/wfblog/2011/10/dns-poisoning-via-port-exhaustion.html" />
        <link rel="replies" type="text/html" href="http://blog.watchfire.com/wfblog/2011/10/dns-poisoning-via-port-exhaustion.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d835130c5153ef01539261ff79970b</id>
        <published>2011-10-18T23:20:43+03:00</published>
        <updated>2011-10-19T00:01:40+03:00</updated>
        <summary>Today we are releasing a very interesting whitepaper which describes a DNS poisoning attack against stub resolvers. It discloses two vulnerabilities: A vulnerability in Java (CVE-2011-3552, CVE-2010-4448) which enables remote DNS poisoning using Java applets. This vulnerability can be triggered...</summary>
        <author>
            <name>Roee Hay</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Research" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.watchfire.com/wfblog/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;Today we are releasing a very interesting whitepaper which describes a DNS poisoning attack against stub resolvers.&lt;/p&gt;&#xD;
&lt;p&gt;It discloses two vulnerabilities:&lt;/p&gt;&#xD;
&lt;ol&gt;&#xD;
&lt;li&gt;A vulnerability in &lt;strong&gt;Java&lt;/strong&gt; (CVE-2011-3552, CVE-2010-4448) which enables &lt;em&gt;remote&lt;/em&gt; DNS poisoning using Java applets. This vulnerability can be triggered when opening a malicious webpage. A successful exploitation of this vulnerability may lead to disclosure and manipulation of cookies and web pages, disclosure of NTLM credentials and clipboard data of the logged-on user, and even firewall bypass.&lt;/li&gt;&#xD;
&lt;li&gt;A vulnerability in multiuser &lt;strong&gt;Windows&lt;/strong&gt; environments which enables &lt;em&gt;local&lt;/em&gt; DNS cache poisoning of arbitrary domains. This  vulnerability can be triggered by a normal user (i.e. one with non-administrative rights) in order to attack other users of the system. A successful exploitation of this vulnerability may lead to information disclosure, privilege escalation, universal XSS and more.&lt;/li&gt;&#xD;
&lt;/ol&gt;&#xD;
&lt;p&gt;The whitepaper can be found &lt;strong&gt;&lt;a href="http://bit.ly/q31wSq" target="_self" title="DNS poisoning via Port Exhaustion whitepaper"&gt;here&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&#xD;
&lt;p&gt;A few video demos of our Proof-of-Concept:&lt;/p&gt;&#xD;
&lt;ol&gt;&#xD;
&lt;li&gt;Attack: Remote DNS poisoning via Java Applets: Cookie theft.&lt;br&gt;Environment: Ubuntu 11.04, Firefox 7.0.1. &lt;br&gt;&lt;br&gt; &lt;iframe frameborder="0" height="315" src="http://www.youtube.com/embed/eSEvFmsw55A?rel=0&amp;amp;hd=1" width="420"&gt;&lt;/iframe&gt;&lt;/li&gt;&#xD;
&lt;li&gt;Attack: Remote DNS poisoning via Java Apples: NTLM credentials and Clipboard theft.&lt;br&gt;Environment: Windows 2008, Internet Explorer 9. &lt;br&gt;&lt;br&gt; &lt;iframe frameborder="0" height="315" src="http://www.youtube.com/embed/i-Fmk7-pFFA?rel=0&amp;amp;hd=1" width="420"&gt;&lt;/iframe&gt;&lt;/li&gt;&#xD;
&lt;li&gt;Attack: Remote DNS poisoning via Java Applets: Firewall bypass.&lt;br&gt;Environment: Windows 2008, Firefox 7.0.1.&lt;br&gt; &lt;br&gt;&lt;iframe frameborder="0" height="315" src="http://www.youtube.com/embed/7CFq_pofeBU?rel=0&amp;amp;hd=1" width="420"&gt;&lt;/iframe&gt;&lt;/li&gt;&#xD;
&lt;li&gt;Attack: Local DNS poisoning via port exhaustion.&lt;br&gt;Environment: Windows 2008.&lt;br&gt; &lt;br&gt;&lt;iframe frameborder="0" height="315" src="http://www.youtube.com/embed/m2GkLL9d68E?rel=0&amp;amp;hd=1" width="420"&gt;&lt;/iframe&gt; &lt;/li&gt;&#xD;
&lt;/ol&gt;&#xD;
&lt;p&gt;We would like to thank Oracle and Microsoft for their cooperation.&lt;/p&gt;&#xD;
&lt;p&gt;-Roee Hay and Yair Amit&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=RODdJx_n0ck:YJLHV28he7Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=RODdJx_n0ck:YJLHV28he7Y:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=RODdJx_n0ck:YJLHV28he7Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?i=RODdJx_n0ck:YJLHV28he7Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WatchfireApplicationSecurityInsider/~4/RODdJx_n0ck" height="1" width="1"/&gt;</content>



    </entry>
    <entry>
        <title>Google App Engine Code Execution Vulnerability (CVE-2011-1364)</title>
        <link rel="alternate" type="text/html" href="http://blog.watchfire.com/wfblog/2011/10/google-app-engine-cve-2011-1364.html" />
        <link rel="replies" type="text/html" href="http://blog.watchfire.com/wfblog/2011/10/google-app-engine-cve-2011-1364.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d835130c5153ef0154360dfa66970c</id>
        <published>2011-10-11T20:18:06+03:00</published>
        <updated>2011-10-12T20:05:22+03:00</updated>
        <summary>We have recently identified an interesting code execution vulnerability in the Google App Engine SDK for Python. By combining a CSRF vulnerability in the administration web UI, with some other vulnerabilities we found in the Google python libraries, a remote...</summary>
        <author>
            <name>Adi Sharabani</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Web Application Security" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.watchfire.com/wfblog/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;We have recently identified an interesting code execution vulnerability in the Google App Engine SDK for Python. By combining a CSRF vulnerability in the administration web UI, with some other vulnerabilities we found in the Google python libraries, a remote hacker could gain remote code execution privileges on victim's machine. This vulnerability affects all operation systems running Google App Engine SDK for python (i.e. Windows, Mac OS, etc.).&lt;/p&gt;&#xD;
&lt;p&gt;The full advisory can be found &lt;span class="asset  asset-generic at-xid-6a00d835130c5153ef014e8c344947970d"&gt;&lt;a href="http://blog.watchfire.com/files/googleappenginesdk-1.pdf"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;span class="asset  asset-generic at-xid-6a00d835130c5153ef0153923a4cf4970b"&gt;.&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;As always, Google has been very quick with fixing the issue. According  to the company, the fix was provided in version 1.5.4, which was  released on Sep 12th.&lt;/p&gt;&#xD;
&lt;p&gt; &lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=Mlkc_VxI21c:rFNNetEJOt0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=Mlkc_VxI21c:rFNNetEJOt0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=Mlkc_VxI21c:rFNNetEJOt0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?i=Mlkc_VxI21c:rFNNetEJOt0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WatchfireApplicationSecurityInsider/~4/Mlkc_VxI21c" height="1" width="1"/&gt;</content>



    </entry>
    <entry>
        <title>Dolphin Browser HD Cross-Application Scripting</title>
        <link rel="alternate" type="text/html" href="http://blog.watchfire.com/wfblog/2011/09/dolphin-browser-hd-cross-application-scripting.html" />
        <link rel="replies" type="text/html" href="http://blog.watchfire.com/wfblog/2011/09/dolphin-browser-hd-cross-application-scripting.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d835130c5153ef015435935430970c</id>
        <published>2011-09-20T19:50:01+03:00</published>
        <updated>2011-09-20T19:50:01+03:00</updated>
        <summary>We have identified that Dolphin Browser HD is also vulnerable to Cross-Application Scripting, by using the same attack vector as of the Android Browser vulnerability we disclosed last month. This vulnerability can be exploited by a non-privileged application in order...</summary>
        <author>
            <name>Roee Hay</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.watchfire.com/wfblog/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;We have identified that Dolphin Browser HD is also vulnerable to Cross-Application Scripting, by using the same attack vector as of the Android Browser vulnerability we disclosed last month. This vulnerability can be exploited by a non-privileged application in order to inject JavaScript code into the context of an arbitrary domain.&lt;/p&gt;&#xD;
&lt;p&gt;Dolphin Browser HD 6.1.0 has been released, which incorporates a fix for this bug. &lt;/p&gt;&#xD;
&lt;p&gt;The full advisory can be found  &lt;span class="asset  asset-generic at-xid-6a00d835130c5153ef0154359356d1970c"&gt;&lt;span style="font-size: 13pt;"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;a href="http://blog.watchfire.com/files/advisory-dolphin.pdf" target="_blank"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Demo of the PoC:&lt;/p&gt;&#xD;
&lt;p&gt; &lt;iframe frameborder="0" height="315" src="http://www.youtube.com/embed/1E0GzZPdpLM" width="420"&gt;&lt;/iframe&gt; &lt;/p&gt;&#xD;
&lt;p&gt;We would like to thank the Dolphin team for the efficient and quick way in which it handled this security issue.&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=kRYitvemvkc:cLWRLE69N4A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=kRYitvemvkc:cLWRLE69N4A:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=kRYitvemvkc:cLWRLE69N4A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?i=kRYitvemvkc:cLWRLE69N4A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WatchfireApplicationSecurityInsider/~4/kRYitvemvkc" height="1" width="1"/&gt;</content>



    </entry>
    <entry>
        <title>Opera Mobile Cache Poisoning XAS</title>
        <link rel="alternate" type="text/html" href="http://blog.watchfire.com/wfblog/2011/09/opera-mobile-cache-poisoning-xas.html" />
        <link rel="replies" type="text/html" href="http://blog.watchfire.com/wfblog/2011/09/opera-mobile-cache-poisoning-xas.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d835130c5153ef014e8bb2a2c0970d</id>
        <published>2011-09-20T15:59:35+03:00</published>
        <updated>2011-09-20T17:18:44+03:00</updated>
        <summary>Recently we detected a security vulnerability in Opera Mobile for Android which can be exploited by a non-privileged application in order to inject JavaScript code into the context of any domain; therefore, this vulnerability has the same implications as global...</summary>
        <author>
            <name>Roee Hay</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.watchfire.com/wfblog/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;Recently we detected a security vulnerability in Opera Mobile for Android which can be exploited by a non-privileged application in order to inject JavaScript code into the   &lt;br&gt;context of any domain; therefore, this vulnerability has the same implications as global XSS, albeit from an installed application rather than another website.&lt;/p&gt;&#xD;
&lt;p&gt;Opera Mobile 11.1 update 2 has been released, which incorporates a fix for this bug.&lt;/p&gt;&#xD;
&lt;p&gt;The complete advisory can be found &lt;span style="font-size: 13pt;"&gt;&lt;a href="http://blog.watchfire.com/files/advisory-opera-cp-xas.pdf" target="_blank"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Demo of the PoC:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;iframe frameborder="0" height="315" src="http://www.youtube.com/embed/8fWZh5jwFfE" width="420"&gt;&lt;/iframe&gt; &lt;/p&gt;&#xD;
&lt;p&gt;We would like to thank the Opera Team for the efficient and quick way in which it handled this security issue.&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=QVdhiljwjj8:udpv54JxMfw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=QVdhiljwjj8:udpv54JxMfw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=QVdhiljwjj8:udpv54JxMfw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?i=QVdhiljwjj8:udpv54JxMfw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WatchfireApplicationSecurityInsider/~4/QVdhiljwjj8" height="1" width="1"/&gt;</content>



    </entry>
    <entry>
        <title>The Ultimate Web App Security Scanner Comparison Published - AppScan Standard Leads the Pack</title>
        <link rel="alternate" type="text/html" href="http://blog.watchfire.com/wfblog/2011/08/the-ultimate-web-app-security-scanner-comparison-published-appscan-standard-leads-the-pack.html" />
        <link rel="replies" type="text/html" href="http://blog.watchfire.com/wfblog/2011/08/the-ultimate-web-app-security-scanner-comparison-published-appscan-standard-leads-the-pack.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d835130c5153ef01539064970b970b</id>
        <published>2011-08-03T13:42:42+03:00</published>
        <updated>2011-08-03T13:44:26+03:00</updated>
        <summary>Shay Chen, an Information Security consultant and blogger, recently published the latest results of his ultra-thorough web application security scanner comparison. The survey, covered 60(!) different open source and commercial scanners, and summarized some of the most critical features and...</summary>
        <author>
            <name>Ory Segal</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.watchfire.com/wfblog/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;a href="http://www.blogger.com/profile/16490521389991462247" target="_blank"&gt;Shay Chen&lt;/a&gt;, an Information Security consultant and blogger, recently published the &lt;a href="http://sectooladdict.blogspot.com/2011/08/commercial-web-application-scanner.html" target="_blank"&gt;latest results&lt;/a&gt; of his ultra-thorough web application security scanner comparison. The survey, covered 60(!) different open source and commercial scanners, and summarized some of the most critical features and capabilities of each scanner, such as:&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Audit features and capabilities   &#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Active vulnerability detection features&lt;/li&gt;&#xD;
&lt;li&gt;Complementary scanning features (passive analysis, known issues, etc.)&lt;/li&gt;&#xD;
&lt;li&gt;Usability, Coverage and Scan Initiation Features&lt;/li&gt;&#xD;
&lt;li&gt;Authentication, Scan Control and Connection Support Features&lt;/li&gt;&#xD;
&lt;li&gt;Advanced and Uncommon Features&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/li&gt;&#xD;
&lt;li&gt;Accuracy benchmark (performed against &lt;a href="http://code.google.com/p/wavsep/" target="_blank"&gt;WAVSEP&lt;/a&gt;)&lt;/li&gt;&#xD;
&lt;li&gt;Cross-site scripting success &amp;amp; false positives rate&lt;/li&gt;&#xD;
&lt;li&gt;SQL Injection success &amp;amp; false positive rate&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;Needless to say, AppScan Standard Edition led the pack in most aspects - especially around Audit Features and Scanning Capabilities, where no other scanner came even close:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://blog.watchfire.com/.a/6a00d835130c5153ef014e8a57cb5c970d-pi" style="display: inline;"&gt;&lt;img alt="FeatureCount-Unified" border="0" class="asset  asset-image at-xid-6a00d835130c5153ef014e8a57cb5c970d" src="http://blog.watchfire.com/.a/6a00d835130c5153ef014e8a57cb5c970d-800wi" title="FeatureCount-Unified"&gt;&lt;/img&gt;&lt;/a&gt; &lt;br&gt;This course no was not a surprise to us - AppScan Standard has been around since the year 1999, and is an extremely mature product - it is capable of scanning *any* type of application, and can be customized to work on every kind of environment it faces (non-standard URLs, RESTful applications, JSON, JavaScript frameworks and AJAX, Adobe Flash/Flex, SOAP web services, etc.).&lt;/p&gt;&#xD;
&lt;p&gt;On the accuracy front - when it comes to detecting &lt;a href="http://cwe.mitre.org/data/definitions/79.html" target="_blank"&gt;Cross-site Scripting (XSS)&lt;/a&gt;, AppScan performed flawlessly, and ranked #1:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://blog.watchfire.com/.a/6a00d835130c5153ef015434381db2970c-pi" style="display: inline;"&gt;&lt;img alt="RXSS-Unified" border="0" class="asset  asset-image at-xid-6a00d835130c5153ef015434381db2970c" src="http://blog.watchfire.com/.a/6a00d835130c5153ef015434381db2970c-800wi" title="RXSS-Unified"&gt;&lt;/img&gt;&lt;/a&gt; &lt;br&gt;&lt;strong&gt;100% detection rate for all of the reflected XSS test cases, and 0% false positives on the false positive test cases &lt;/strong&gt;(WAVSEP includes special test cases, attempting to trick the scanner to false positive, and AppScan did not fall for that...).&lt;/p&gt;&#xD;
&lt;p&gt;In the SQL Injection tests, AppScan performed extremely well (although did not rank #1), it managed to find &lt;strong&gt;127 issues out of 136&lt;/strong&gt; (&lt;strong&gt;93.38%&lt;/strong&gt; success rate)&lt;strong&gt;, &lt;/strong&gt;with 3 False Positives out of the 10 False Positive test cases.&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Needlees to say, this will be improved and fixed as soon as possible, so that we rank #1 in SQLi as well. &lt;/li&gt;&#xD;
&lt;li&gt;We did demo the next release of AppScan Standard to Shay Chen, which includes a promising new technology capable of dramatically increasing the detection rate for such issues - the results were astounding - &lt;strong&gt;100% success rate (136/136), and 0% false positives!&lt;/strong&gt; so - stay tuned!&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;To sum things up, Shay has done an excellent work compiling and comparing a huge amount of scanning tools. I strongly recommend that you review this work, and download each of the comparison sections - it contains all the information needed in order to choose which product better suits your needs. &lt;/p&gt;&#xD;
&lt;p&gt;Last but not least, I would like to mention that the XSS test cases, did not cover DOM-based XSS, one of my favorite topics recently. AppScan is still the only scanner capable of performing true hybrid analysis (harnessing dynamic scanning capabilities with real JavaScript taint analysis) to locate a long list of &lt;a href="http://www.slideshare.net/orysegal/clientside-javascript-vulnerabilities" target="_blank"&gt;client-side JavaScript issues&lt;/a&gt;.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&amp;gt;&amp;gt;&lt;/strong&gt; &lt;a href="http://sectooladdict.blogspot.com/2011/08/commercial-web-application-scanner.html" target="_blank"&gt;Direct link to the scanner comparison page&lt;/a&gt; &lt;strong&gt;&amp;lt;&amp;lt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt; &lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=Bxew6_jN0ko:NnYZdFPQWL0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=Bxew6_jN0ko:NnYZdFPQWL0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=Bxew6_jN0ko:NnYZdFPQWL0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?i=Bxew6_jN0ko:NnYZdFPQWL0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WatchfireApplicationSecurityInsider/~4/Bxew6_jN0ko" height="1" width="1"/&gt;</content>



    </entry>
    <entry>
        <title>Android Browser Cross-Application Scripting (CVE-2011-2357)</title>
        <link rel="alternate" type="text/html" href="http://blog.watchfire.com/wfblog/2011/08/android-browser-cross-application-scripting-cve-2011-2357.html" />
        <link rel="replies" type="text/html" href="http://blog.watchfire.com/wfblog/2011/08/android-browser-cross-application-scripting-cve-2011-2357.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d835130c5153ef014e8a435ae5970d</id>
        <published>2011-08-02T13:29:27+03:00</published>
        <updated>2011-08-02T13:30:21+03:00</updated>
        <summary>Recently we detected a security vulnerability in Android’s Browser which can be exploited by a non-privileged application in order to inject JavaScript code into the context of any domain; therefore, this vulnerability has the same implications as global XSS, albeit...</summary>
        <author>
            <name>Roee Hay</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Research" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.watchfire.com/wfblog/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;Recently we detected a security vulnerability in Android’s Browser which can be exploited by a non-privileged application in order to inject JavaScript code into the   &lt;br&gt;context of any domain; therefore, this vulnerability has the same implications as global XSS, albeit from an installed application rather than another website.&lt;/p&gt;&#xD;
&lt;p&gt;Android 2.3.5 and 3.2 have been released, which incorporate a fix for this bug.  Patches are available for Android 2.2.* and will be released at a later date. Organizations can contact security@android.com for patch information.&lt;/p&gt;&#xD;
&lt;p&gt;The complete advisory can be found &lt;span style="font-size: 12pt;"&gt;&lt;a href="http://blog.watchfire.com/files/advisory-android-browser.pdf" target="_self" title="here"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Demo of the PoC:&lt;/p&gt;&#xD;
&lt;p&gt;&#xD;
&lt;object height="344" width="425"&gt;&#xD;
&lt;param name="movie" value="http://www.youtube.com/v/BzUpbcrWufs?version=3"&gt;&lt;/param&gt;&#xD;
&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&#xD;
&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="344" src="http://www.youtube.com/v/BzUpbcrWufs?version=3" type="application/x-shockwave-flash" width="425"&gt;&lt;/embed&gt;&#xD;
&lt;/object&gt;&#xD;
 &lt;/p&gt;&#xD;
&lt;p&gt;We would like to thank the Android Security Team for the efficient and quick way in which they handled this security issue.&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=5gw6qZyoimo:w2kkS7jMV-Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=5gw6qZyoimo:w2kkS7jMV-Q:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?a=5gw6qZyoimo:w2kkS7jMV-Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WatchfireApplicationSecurityInsider?i=5gw6qZyoimo:w2kkS7jMV-Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WatchfireApplicationSecurityInsider/~4/5gw6qZyoimo" height="1" width="1"/&gt;</content>



    </entry>
 
</feed><!-- ph=1 -->

