<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Web 2.0 Security</title>
        <link>http://devcentral.f5.com/weblogs/macvittie/category/66.aspx</link>
        <description>The (in)security of AJAX</description>
        <language>en-US</language>
        <copyright>Lori MacVittie</copyright>
        <managingEditor>l.macvittie@f5.com</managingEditor>
        <generator>Subtext Version 1.9.5.176</generator>
        <item>
            <title>Is OpenID too open?</title>
            <link>http://devcentral.f5.com/weblogs/macvittie/archive/2008/10/20/is-openid-too-open.aspx</link>
            <description>&lt;table cellspacing="0" cellpadding="2" width="100%" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="padding-right: 10px; padding-left: 10px; padding-bottom: 10px; color: #990000; padding-top: 10px" valign="top" width="250"&gt;         &lt;p&gt;&lt;em&gt;One password to fool them all&lt;/em&gt;&lt;/p&gt;          &lt;p&gt;&lt;em&gt;One password to find them&lt;/em&gt;&lt;/p&gt;          &lt;p&gt;&lt;em&gt;One password to steal them all and in the ether become them&lt;/em&gt; &lt;/p&gt;          &lt;p&gt;[with many apologies to &lt;a href="http://en.wikipedia.org/wiki/J._R._R._Tolkien"&gt;J.R.R. Tolkien&lt;/a&gt;] &lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;For years we've had it beat into our heads that using the same username and password for everything on the web leaves us open to compromise and identity theft. The on-demand nature of conversations and social networking has apparently left us all bereft of our wits as we embrace the very concept we've been warned about for years. But is it really as dangerous as we've been led to believe?          &lt;br /&gt;          &lt;br /&gt;The concept of a single identity that can be shared across disparate sites is hardly new. &lt;a href="http://www.projectliberty.org/"&gt;Liberty Alliance&lt;/a&gt; proposed &lt;a href="http://www.oasis-open.org/committees/security/"&gt;SAML&lt;/a&gt; as the underlying technology to provide a single sign on (SSO) functionality for the web years ago and it competed with &lt;a href="http://www.microsoft.com"&gt;Microsoft's&lt;/a&gt; &lt;a href="http://www.passport.net/"&gt;Passport&lt;/a&gt; for mindshare.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;But neither took off; both were "ahead of the times". Social networking hadn't taken over the web yet, and people didn't really see a need to take the risk. &lt;/p&gt;  &lt;p&gt;That was then, this is now. &lt;/p&gt;  &lt;p&gt;OpenID is succeeding where the Liberty Alliance with SAML and Microsoft's Passport (now "Live ID") failed. It's easy to use, easy to integrate with your own site, and seems to be everywhere. Just set up a single identity at &lt;a href="http://www.openid.org"&gt;OpenID&lt;/a&gt; or a participating site like &lt;a href="http://www.technorati.com"&gt;Technorati&lt;/a&gt; and you can use that same identity over and over to sign into hundreds of social networking sites around the web. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/IsOpenIDtooopen_5726/TheScream_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 10px 0px 0px; border-right-width: 0px" height="240" alt="TheScream" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/IsOpenIDtooopen_5726/TheScream_thumb.jpg" width="163" align="left" border="0" /&gt;&lt;/a&gt; Despite knowing that it's dangerous (or so we're told), that it's a risk (and a big one at that, they say), hundreds of thousands of us (and that 'us' is mutually inclusive, mind you) use OpenID either directly or indirectly by tying our identities at myriad social networking sites to a single identity. We do this despite knowing that if that single identity is compromised that it can be used against us at every site through which we use that identity to interact with others. &lt;/p&gt;  &lt;p&gt;The uber-security minded folks may now commence screaming and holding their head in pain as they morph into something out of an &lt;a href="http://en.wikipedia.org/wiki/The_Scream"&gt;Edvard Munch painting&lt;/a&gt; at what I'm going to say next. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;HOW MANY WALLETS DO YOU CARRY? &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The risk appears to be minimal, despite the advertisements and scary articles to the contrary, and the benefits apparently outweigh that risk. Much in the same way we rail against additional security precautions at the airport, referring to them as unnecessary and doing nothing but offering a false sense of security, perhaps the "never use the same password" precaution, too, offers little more than a false sense of security. &lt;/p&gt;  &lt;p&gt;As &lt;a href="http://www.stillsecureafteralltheseyears.com/ashimmy/"&gt;Alan Shimel&lt;/a&gt; unfortunately &lt;a href="http://www.stillsecureafteralltheseyears.com/ashimmy/2008/08/im-back.html"&gt;discovered recently&lt;/a&gt;, separate identities doesn't really add a lot of security when the identity information is aggregated in a single place, which it all too often is. Compromise of your primary e-mail account is also likely to end up with your online identity compromised, whether you used OpenID or not. &lt;/p&gt;  &lt;p&gt;The risks for you and I (I assume you aren't &lt;a href="http://www.stillsecureafteralltheseyears.com/ashimmy/"&gt;Alan Shimel&lt;/a&gt;, &lt;a href="http://scobleizer.com"&gt;Robert Scoble&lt;/a&gt;, or Paris Hilton) having our identities targeted and stolen are likely on the same level as having our wallet stolen. If we leave it out on the table and walk away, yeah, it's probably going to get stolen. The digital equivalent would be, oh, posting the information somewhere public or using that single identity on a site that seems a bit less than trustworthy - or isn't implementing best practices in securing that data and preventing theft. &lt;/p&gt;  &lt;p&gt;If you don't carry more than one wallet to protect your multiple credit cards and your identity, then is it really a problem using only one "digital wallet" to store you identity online? Probably not, as long as the owners of the sites at which you can use your OpenID are taking steps to ensure the &lt;a href="http://www.f5.com/solutions/security"&gt;security of the site&lt;/a&gt; and the underlying data. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;MITIGATION OF THE RISK IS ON THE SITE, NOT THE USER &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The risk of theft really has very little to do with users today, as we don't typically share our identities and passwords publicly. The risk has to do with the sites we frequent and what kind of security they have in place to &lt;a href="http://www.f5.com/solutions/security"&gt;prevent exploitation of vulnerabilities and data theft&lt;/a&gt;. There are no real regulations in place regarding notification of data loss for sites not storing personally identifiable information, as there are for financial and healthcare related institutions, so we may never know. And it's unlikely that your bank is going to offer OpenID as a means of identifying yourself. I shudder to even consider that as an option. &lt;/p&gt;  &lt;p&gt;All things considered, using OpenID or at least the manual implementation of OpenID (same username/password over and over) doesn't seem to be really all that much of a risk unless you also use it for your online financial and healthcare information.&lt;/p&gt;  &lt;p&gt;And I know &lt;em&gt;none&lt;/em&gt; of us are doing that, are we? &lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img height="18" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img height="18" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" border="0" /&gt;&lt;/a&gt;&lt;a href="http://lmacvittie.tumblr.com" border="0"&gt;&lt;img title="Follow me on Tumblr" height="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_tumblr.gif" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://lmacvittie.posterous.com/"&gt;&lt;img title="Posterous" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_posterous.png" border="0" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" border="0" /&gt;&lt;/a&gt; &lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img height="18" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img height="18" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" border="0" /&gt;&lt;/a&gt;&lt;script src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355" type="text/javascript"&gt;&lt;/script&gt;&lt;script src="http://feeds.feedburner.com/~s/f5/XOwx" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;&lt;script src="http://feeds.feedburner.com/~d/static/site-tracker.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;&lt;script src="http://feeds.feedburner.com/~d/static/site-tracker.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt; &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:34116d89-4852-4921-8812-7d117adbb8b3" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/application%20security" rel="tag"&gt;application security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/OpenID" rel="tag"&gt;OpenID&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Liberty%20Alliance" rel="tag"&gt;Liberty Alliance&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SAML" rel="tag"&gt;SAML&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Live%20ID" rel="tag"&gt;Live ID&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Passport" rel="tag"&gt;Passport&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SSO" rel="tag"&gt;SSO&lt;/a&gt;,&lt;a href="http://technorati.com/tags/integration" rel="tag"&gt;integration&lt;/a&gt;,&lt;a href="http://technorati.com/tags/password" rel="tag"&gt;password&lt;/a&gt;,&lt;a href="http://technorati.com/tags/e-mail" rel="tag"&gt;e-mail&lt;/a&gt;,&lt;a href="http://technorati.com/tags/compromised" rel="tag"&gt;compromised&lt;/a&gt;,&lt;a href="http://technorati.com/tags/identity%20theft" rel="tag"&gt;identity theft&lt;/a&gt;,&lt;a href="http://technorati.com/tags/security" rel="tag"&gt;security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Alan%20Shimel" rel="tag"&gt;Alan Shimel&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Robert%20Scoble" rel="tag"&gt;Robert Scoble&lt;/a&gt;&lt;/div&gt;&lt;div class='blogtags'&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/3725.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lori MacVittie</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/macvittie/archive/2008/10/20/is-openid-too-open.aspx</guid>
            <pubDate>Mon, 20 Oct 2008 11:02:43 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/3725.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/macvittie/archive/2008/10/20/is-openid-too-open.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/3725.aspx</wfw:commentRss>
            <trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/3725.aspx</trackback:ping>
        </item>
        <item>
            <title>Is Twitter the newest data security threat?</title>
            <link>http://devcentral.f5.com/weblogs/macvittie/archive/2008/10/16/is-twitter-the-newest-data-security-threat.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/MessingwithWeb2.0APIs_6051/twitter_logo_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="88" alt="twitter_logo" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/MessingwithWeb2.0APIs_6051/twitter_logo_thumb.jpg" width="240" align="left" border="0" /&gt;&lt;/a&gt; One of the most dangerous threats to data security is also one of the least talked about: employees. Are &lt;a href="http://twitter.com"&gt;Twitter&lt;/a&gt; and other microblogging sites yet another avenue through which sensitive data can leak out of the corporate database and into the hands of ... anyone? Perhaps more worrisome, what information are you giving away simply by being a part of the community? &lt;/p&gt;  &lt;p&gt;Of course Twitter is a potential threat. Like personal e-mail accounts and instant messaging, Twitter and sites of its ilk are primarily messaging mechanisms, which translates into personal channels for exporting sensitive data outside the enterprise. If you aren't familiar with Twitter, its messaging mechanisms allow several "modes" of communication: a blast to the general twitterverse, a public reply to a specific twitter user, and a direct (private) message to another twitter user. The direct messages aren't displayed in your public timeline, only the intended recipient can see them, so they're perfect for sneaking out tidbits like customer information or competitive information like upcoming product features/launches. &lt;/p&gt;  &lt;p&gt;Despite the good intentions of compliance initiatives like &lt;a href="http://www.hhs.gov/ocr/hipaa/"&gt;HIPAA&lt;/a&gt; and &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/05/14/3260.aspx"&gt;PCI DSS&lt;/a&gt;, implementation of security measures designed to comply with these standards tend to focus mainly on the easiest and most obvious ways in which sensitive personal information can be lost, stolen, or shared: web applications. &lt;/p&gt;  &lt;p&gt;But Twitter &lt;em&gt;is &lt;/em&gt;a web application, you say, so shouldn't it be covered? &lt;/p&gt;  &lt;p&gt;Perhaps, but it likely isn't. Current regulations tend to concentrate on preventing data from being taken out of the enterprise database, not cut-and-pasted into a tweet or e-mail or instant message. While monitoring and even filtering of web applications is commonplace today, it's almost universally focused on &lt;a href="http://www.f5.com/solutions/security"&gt;filtering of inbound web content&lt;/a&gt;, not &lt;em&gt;outbound &lt;/em&gt;except at the URI or domain level. Content filtering solutions can &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/05/29/3309.aspx"&gt;stop inbound web content&lt;/a&gt; containing naughty words and those naked pictures of Bea Arthur the transfer of which no one can explain. But they don't generally focus on filtering &lt;em&gt;outbound&lt;/em&gt; requests and POST data, despite the inherent risk in allowing unfettered communication with the outside world. &lt;/p&gt;  &lt;p&gt;There have been solutions offered to prevent this exact scenario from happening via e-mail, but monitoring around &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/MessingwithWeb2.0APIs_6051/at-key_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 5px 0px 0px 10px; border-left: 0px; border-bottom: 0px" height="140" alt="at-key" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/MessingwithWeb2.0APIs_6051/at-key_thumb.jpg" width="140" align="right" border="0" /&gt;&lt;/a&gt;web and even instant messaging continues to primarily focus on inbound content rather than outbound content. This  makes &lt;a href="http://en.wikipedia.org/wiki/Micro-blogging"&gt;microblogging&lt;/a&gt; sites like Twitter a potential security risk when attempting to secure all the possible avenues through which sensitive corporate data may be leaked. &lt;/p&gt;  &lt;p&gt;What's necessary to block these holes is a two-pronged attack posture: &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Reiterate to employees the ramifications of exporting sensitive data, including recognition of having read and agreed to organizational policies regarding how the organization will deal with proven breaches involving data security. Hint: A slap on the hand may not be harsh enough, though getting medieval on them may be too much. Maybe. &lt;/li&gt;    &lt;li&gt;Consider the implementation of a &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/10/02/the-concise-guide-to-proxies.aspx"&gt;forward proxy&lt;/a&gt; security solution capable of at the very least monitoring outbound web content (over HTTP) and optimally blocking anything that appears to be a &lt;a href="http://devcentral.f5.com/wiki/default.aspx/iRules/CreditCardScrubber.html"&gt;credit card or social security number&lt;/a&gt; or anything else that might be considered sensitive personal information. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Proactive information security (sometimes also known as 'due diligence' in legal speak) requires recognizing both possible holes and acting to block them. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;CAN YOU SHARE TOO MUCH INFORMATION? &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;And even if you aren't concerned about Twitter as a possible data security threat, you might consider the number of brands that are using Twitter to communicate with customers. That means the folks following a particular brand (company) could be viewed as a very public customer list. In the past, vendors - especially startups, for whom Twitter is particularly attractive - have aggressively guarded their customer lists so that competitors can't swoop in and convince them to "change sides". Twitter offers a public view of customers - and potential customers - that could be easily used in sales strategies to obtain new customers. &lt;/p&gt;  &lt;p&gt;Conversely, some companies have always been reluctant to admit whose solutions they use for security and software because they are juicy targets for bad guys. Letting the bad guys know which solutions might be securing or serving up their corporate data gives them an edge, and if employees are following a "brand" it might be a hat tip to those intent on harm or theft as to how to target their attacks. &lt;/p&gt;  &lt;p&gt;Whether it's direct leaks of information coming from employees or inadvertently allowing too much information about customers or your own infrastructure to leak out publicly through deductive reasoning based on who you're following, the use of Twitter should be viewed as both a possible business benefit and a potential security threat. &lt;/p&gt;  &lt;p&gt;Twitter and sites of its ilk are definitely a possible hole in your security strategy (isn't everything in the eyes of information security folks?) and should be evaluated and if necessary addressed sooner rather than later. &lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="409" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="color: white; background-color: #990000" valign="top" width="407"&gt;&lt;strong&gt;Related Links&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td style="border-right: #990000 1px solid; border-top: #990000 1px solid; border-left: #990000 1px solid; border-bottom: #990000 1px solid" valign="top" width="407"&gt;         &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/08/11/3528.aspx"&gt;The Unpossible Task of Eliminating Risk&lt;/a&gt;&lt;/p&gt;          &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/05/29/3310.aspx"&gt;What IT Security can learn from a restroom sign&lt;/a&gt;&lt;/p&gt;          &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/05/22/3287.aspx"&gt;PCI DSS Requirements 6.6: A best practice for the rest of us&lt;/a&gt;&lt;/p&gt;          &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/10/03/new-tcp-vulnerability-about-trust-not-technology.aspx"&gt;New TCP vulnerability about trust, not technology&lt;/a&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img height="18" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img height="18" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" border="0" /&gt;&lt;/a&gt;&lt;a href="http://lmacvittie.tumblr.com" border="0"&gt;&lt;img title="Follow me on Tumblr" height="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_tumblr.gif" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://lmacvittie.posterous.com/"&gt;&lt;img title="Posterous" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_posterous.png" border="0" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" border="0" /&gt;&lt;/a&gt; &lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img height="18" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img height="18" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" border="0" /&gt;&lt;/a&gt;&lt;script src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355" type="text/javascript"&gt;&lt;/script&gt;&lt;script src="http://feeds.feedburner.com/~s/f5/XOwx" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;&lt;script src="http://feeds.feedburner.com/~d/static/site-tracker.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt; &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f8448122-f052-4883-81c7-f3a658870f8f" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/application%20security" rel="tag"&gt;application security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/web%20security" rel="tag"&gt;web security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/security" rel="tag"&gt;security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Twitter" rel="tag"&gt;Twitter&lt;/a&gt;,&lt;a href="http://technorati.com/tags/microblogging" rel="tag"&gt;microblogging&lt;/a&gt;,&lt;a href="http://technorati.com/tags/risk%20mitigation" rel="tag"&gt;risk mitigation&lt;/a&gt;,&lt;a href="http://technorati.com/tags/compliance" rel="tag"&gt;compliance&lt;/a&gt;,&lt;a href="http://technorati.com/tags/monitoring" rel="tag"&gt;monitoring&lt;/a&gt;,&lt;a href="http://technorati.com/tags/filtering" rel="tag"&gt;filtering&lt;/a&gt;,&lt;a href="http://technorati.com/tags/http" rel="tag"&gt;http&lt;/a&gt;,&lt;a href="http://technorati.com/tags/web" rel="tag"&gt;web&lt;/a&gt;,&lt;a href="http://technorati.com/tags/internet" rel="tag"&gt;internet&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HIPAA" rel="tag"&gt;HIPAA&lt;/a&gt;,&lt;a href="http://technorati.com/tags/PCI%20DSS" rel="tag"&gt;PCI DSS&lt;/a&gt;&lt;/div&gt;&lt;div class='blogtags'&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/3716.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lori MacVittie</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/macvittie/archive/2008/10/16/is-twitter-the-newest-data-security-threat.aspx</guid>
            <pubDate>Thu, 16 Oct 2008 11:00:02 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/3716.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/macvittie/archive/2008/10/16/is-twitter-the-newest-data-security-threat.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/3716.aspx</wfw:commentRss>
            <trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/3716.aspx</trackback:ping>
        </item>
        <item>
            <title>Which security strategy takes more time: configuration or coding?</title>
            <link>http://devcentral.f5.com/weblogs/macvittie/archive/2008/09/29/which-security-strategy-takes-more-time-configuration-or-coding.aspx</link>
            <description>&lt;p&gt;One of the arguments against the deployment of &lt;a href="http://www.f5.com/products/big-ip/product-modules/application-security-manager.html" target="_blank"&gt;web application firewalls&lt;/a&gt; (WAF) is that it takes time to configure these devices to fit each individual environment. This is allegedly one of the reasons that secure coding is preferred over security devices. But it takes time to code solutions and deploy them, too. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/ConfigurationvsCodingTheWAFDebateBeginsA_5A13/failed-security.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 0px 10px 0px 0px; border-left: 0px; border-bottom: 0px" height="240" alt="failed-security" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/ConfigurationvsCodingTheWAFDebateBeginsA_5A13/failed-security_thumb.jpg" width="208" align="left" border="0" /&gt;&lt;/a&gt; In fact, depending on the lifecycle management at any given organization, it can take &lt;em&gt;more &lt;/em&gt;time to code a solution and get it moved through a phased environment into production. One of the benefits of an &lt;a href="http://www.f5.com/products/big-ip" target="_blank"&gt;application delivery platform&lt;/a&gt; and web application security deployed at the perimeter of the network is that solutions are often deployed in &lt;em&gt;days &lt;/em&gt;rather than &lt;em&gt;weeks. &lt;/em&gt;Consider the &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/09/16/3619.aspx" target="_blank"&gt;case of BusinessWeek's infected site&lt;/a&gt;; a week after discovering the infection and vulnerability, the site was still not protected. Perhaps because the solution was still being put together and coded. A WAF could have protected that site within hours - if not sooner - of the vulnerability being discovered. &lt;/p&gt;  &lt;p&gt;In some cases that time isn't all that important - perhaps the vulnerability being addressed is obscure, or highly peculiar to a custom application - and is highly unlikely to be exploited between the time it's discovered and the time a fix is put into production. But with language and platform specific vulnerabilities, the likelihood of that hole being discovered and exploited is much higher simply because attacks bots are often automated and sent to sniff out such holes like bloodhounds on an English fox hunt. &lt;/p&gt;  &lt;p&gt;The configuration of an intelligent WAF in these situations is relatively quick compared to a code-based solution, and rarely must that configuration go through the same process, which results in reducing the likelihood your application will fall victim to the latest exploit. &lt;/p&gt;  &lt;p&gt;But what about the normal configuration process, you say. &lt;em&gt;That's &lt;/em&gt;where the time investment really adds up. &lt;/p&gt;  &lt;p&gt;True. You can't simply deploy a &lt;a href="http://www.f5.com/products/big-ip/product-modules/application-security-manager.html" target="_blank"&gt;WAF&lt;/a&gt; and click a button and say "start protecting my apps". Just as it takes time to code a solution so, too, it takes time to configure a web application firewall to secure your environment and applications, because they're all different. But it doesn't take nearly as much time as identifying &lt;em&gt;where &lt;/em&gt;in the code to put a solution and &lt;em&gt;what &lt;/em&gt;that solution should be, let alone doing the research to find the multitude of attacks you'll need to prevent. &lt;/p&gt;  &lt;p&gt;The configuration of a &lt;a href="http://www.f5.com/products/big-ip/product-modules/application-security-manager.html" target="_blank"&gt;WAF&lt;/a&gt; is partially automated; it can learn the hierarchy and architecture of your application and then begin applying security policies for them. The configuration really comes in with handling exceptions, and clicking some check-box options to determine how much security you want to apply. Yes, it takes some time, but not nearly as much time as asking developers to (1) learn every attack against which they'll have to code a solution, (2) code the solutions, (3) test the solution, and (4) deploy the solution. &lt;/p&gt;  &lt;p&gt;A good WAF solution will also provide &lt;a href="http://www.f5.com/solutions/security/" target="_blank"&gt;basic defenses&lt;/a&gt; against layer 2-7 attacks that are nearly impossible for a developer to code into their solution. An application does not generally keep tabs on each of the processes spawned to deal with a connection. A &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/08/3429.aspx" target="_blank"&gt;layer 7 DoS (Denial of Service) attack&lt;/a&gt;, for example, is unlikely to ever be recognized by an application because it requires a view of all requests across all connections, something an application is never coded to examine. Many of these protections require little to no specific configuration other than a check-box in a GUI. &lt;/p&gt;  &lt;p&gt;There may be valid arguments out there against deploying a WAF, but the time it takes to configure them is not one of them. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img height="18" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img height="18" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" border="0" /&gt;&lt;/a&gt;&lt;a href="http://lmacvittie.tumblr.com" border="0"&gt;&lt;img title="Follow me on Tumblr" height="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_tumblr.gif" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://lmacvittie.posterous.com/"&gt;&lt;img title="Posterous" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_posterous.png" border="0" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" border="0" /&gt;&lt;/a&gt; &lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img height="18" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img height="18" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" border="0" /&gt;&lt;/a&gt;&lt;script src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355" type="text/javascript"&gt;&lt;/script&gt;&lt;script src="http://feeds.feedburner.com/~s/f5/XOwx" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;&lt;script src="http://feeds.feedburner.com/~d/static/site-tracker.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt; &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:897a8e4a-0bb5-4e82-9d35-423052a8d408" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/web%20application%20firewall" rel="tag"&gt;web application firewall&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WAF" rel="tag"&gt;WAF&lt;/a&gt;,&lt;a href="http://technorati.com/tags/application%20delivery" rel="tag"&gt;application delivery&lt;/a&gt;,&lt;a href="http://technorati.com/tags/application%20security" rel="tag"&gt;application security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/configuration" rel="tag"&gt;configuration&lt;/a&gt;,&lt;a href="http://technorati.com/tags/application%20lifecycle" rel="tag"&gt;application lifecycle&lt;/a&gt;,&lt;a href="http://technorati.com/tags/internet" rel="tag"&gt;internet&lt;/a&gt;,&lt;a href="http://technorati.com/tags/web" rel="tag"&gt;web&lt;/a&gt;,&lt;a href="http://technorati.com/tags/security" rel="tag"&gt;security&lt;/a&gt;&lt;/div&gt;&lt;div class='blogtags'&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/3658.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lori MacVittie</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/macvittie/archive/2008/09/29/which-security-strategy-takes-more-time-configuration-or-coding.aspx</guid>
            <pubDate>Mon, 29 Sep 2008 11:38:22 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/3658.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/macvittie/archive/2008/09/29/which-security-strategy-takes-more-time-configuration-or-coding.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/3658.aspx</wfw:commentRss>
            <trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/3658.aspx</trackback:ping>
        </item>
        <item>
            <title>BusinessWeek takes viral advertising a little too seriously</title>
            <link>http://devcentral.f5.com/weblogs/macvittie/archive/2008/09/16/3619.aspx</link>
            <description>&lt;p&gt;Yesterday it &lt;a href="http://www.net-security.org/malware_news.php?id=990" target="_blank"&gt;was reported&lt;/a&gt; that BusinessWeek had been infected with malware via an &lt;a href="http://www.f5.com/glossary/sql-injection.html" target="_blank"&gt;SQL injection&lt;/a&gt; attack. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://xkcd.com/327/" target="_blank"&gt;&lt;img src="http://imgs.xkcd.com/comics/exploits_of_a_mom.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="744" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="427"&gt;         &lt;p&gt;[begin Mom lecture]&lt;/p&gt;          &lt;p&gt;Remember when we talked about PCI DSS being a &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/05/22/3287.aspx" target="_blank"&gt;good idea for everyone&lt;/a&gt;, even though it's just a requirement for the payment card industry? If I've told you once, I've told you a million times: safer is better, &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/08/11/3528.aspx" target="_blank"&gt;more protection never hurts&lt;/a&gt;. &lt;/p&gt;          &lt;p&gt;[end Mom lecture]&lt;/p&gt;          &lt;p&gt;The coolest thing about the web is that, unlike being a mom with one teenager left in the house, I don't have to actually repeat myself. I can just link to it &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/05/22/3287.aspx" target="_blank"&gt;again&lt;/a&gt;...and &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/05/22/3287.aspx" target="_blank"&gt;again&lt;/a&gt;...and &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/05/22/3287.aspx" target="_blank"&gt;again&lt;/a&gt;. &lt;/p&gt;          &lt;p&gt;Interestingly, the aforementioned report indicates that "&lt;em&gt;Sophos informed BusinessWeek of the infection last week, although at the time of writing the hackers' scripts are still present and active on their site."&lt;/em&gt;&lt;/p&gt;          &lt;p&gt;Why would that be? Perhaps because it takes time to find and fix the code responsible, and then actually deploy it out into production. This is one of the scenarios in which a &lt;a href="http://www.f5.com/solutions/security/web-application/" target="_blank"&gt;web application firewall&lt;/a&gt; or an &lt;a href="http://www.f5.com/products/big-ip/" target="_blank"&gt;application delivery&lt;/a&gt; &lt;a href="http://devcentral.f5.com/iRules" target="_blank"&gt;platform&lt;/a&gt; could be of assistance, as either could be quickly and easily configured to strip the offending scripts from all responses, giving developers the time they need to address the problem in the application. &lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="318"&gt;         &lt;p&gt;&lt;strong&gt;     Where's F5? &lt;/strong&gt;&lt;/p&gt;          &lt;ul&gt;           &lt;li&gt;&lt;a href="http://www.vmworld.com"&gt;VMWorld&lt;/a&gt;               &lt;br /&gt;Sept 15-18 in Las Vegas &lt;/li&gt;            &lt;li&gt;&lt;a href="http://storagedecisions.techtarget.com/newyork"&gt;Storage Decisions&lt;/a&gt;               &lt;br /&gt;Sept 23-24 in New York &lt;/li&gt;            &lt;li&gt;&lt;a href="http://www.networld.com/events"&gt;Networld IT Roadmap&lt;/a&gt;               &lt;br /&gt;Sept 23 in Dallas &lt;/li&gt;            &lt;li&gt;&lt;a href="http://www.oracle.com/openworld/2008/"&gt;Oracle Open World&lt;/a&gt;               &lt;br /&gt;Sept 21-25 in San Francisco &lt;/li&gt;            &lt;li&gt;&lt;a href="http://www.snwusa.com/"&gt;Storage Networking World&lt;/a&gt;               &lt;br /&gt;Oct 13-16 in Dallas &lt;/li&gt;            &lt;li&gt;&lt;a href="http://www.storage-expo.com/"&gt;Storage Expo 2008 UK&lt;/a&gt;               &lt;br /&gt;Oct 15-16 in London &lt;/li&gt;            &lt;li&gt;&lt;a href="http://www.snweurope.com/"&gt;Storage Networking World&lt;/a&gt;               &lt;br /&gt;Oct 27-29 in Frankfurt &lt;/li&gt;         &lt;/ul&gt;          &lt;br /&gt;     &lt;a href="http://www.new.facebook.com/pages/Seattle-WA/F5-Networks/19466599085"&gt;&lt;img title="F5 on Facebook" height="32" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_icon_facebook.png" width="32" border="0" /&gt;&lt;/a&gt; &lt;a href="http://twitter.com/f5networks"&gt;&lt;img title="Follow F5 on Twitter" height="32" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="32" border="0" /&gt;&lt;/a&gt;           &lt;br /&gt;          &lt;br /&gt;          &lt;p&gt;&lt;strong&gt;Related reading:&lt;/strong&gt; &lt;/p&gt;          &lt;p&gt;&lt;a href="http://www.f5.com/pdf/white-papers/sql-injection-detection-wp.pdf" target="_blank"&gt;White Paper: SQL Injection Evasion Detection&lt;/a&gt; &lt;/p&gt;          &lt;p&gt;&lt;a href="http://www.f5.com/news-press-events/news/archive/20030311b.html" target="_blank"&gt;Article: Preventing SQL Injections&lt;/a&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img height="18" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img height="18" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" border="0" /&gt;&lt;/a&gt;&lt;a href="http://lmacvittie.tumblr.com" border="0"&gt;&lt;img title="Follow me on Tumblr" height="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_tumblr.gif" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://lmacvittie.posterous.com/"&gt;&lt;img title="Posterous" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_posterous.png" border="0" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" border="0" /&gt;&lt;/a&gt; &lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img height="18" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img height="18" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" border="0" /&gt;&lt;/a&gt;&lt;script src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355" type="text/javascript"&gt;&lt;/script&gt;&lt;script src="http://feeds.feedburner.com/~s/f5/XOwx" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;&lt;script src="http://feeds.feedburner.com/~d/static/site-tracker.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;&lt;script src="http://feeds.feedburner.com/~d/static/site-tracker.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt; &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e3d27281-5ec2-4e8e-bcd0-474598f33d92" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WAF" rel="tag"&gt;WAF&lt;/a&gt;,&lt;a href="http://technorati.com/tags/web%20application%20security" rel="tag"&gt;web application security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/security" rel="tag"&gt;security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/application%20delivery" rel="tag"&gt;application delivery&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/malware" rel="tag"&gt;malware&lt;/a&gt;,&lt;a href="http://technorati.com/tags/BusinessWeek" rel="tag"&gt;BusinessWeek&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SQL%20injection" rel="tag"&gt;SQL injection&lt;/a&gt;,&lt;a href="http://technorati.com/tags/web" rel="tag"&gt;web&lt;/a&gt;,&lt;a href="http://technorati.com/tags/internet" rel="tag"&gt;internet&lt;/a&gt;,&lt;a href="http://technorati.com/tags/http" rel="tag"&gt;http&lt;/a&gt;,&lt;a href="http://technorati.com/tags/web%20application%20firewall" rel="tag"&gt;web application firewall&lt;/a&gt;,&lt;a href="http://technorati.com/tags/scripts" rel="tag"&gt;scripts&lt;/a&gt;&lt;/div&gt;&lt;div class='blogtags'&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/3619.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lori MacVittie</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/macvittie/archive/2008/09/16/3619.aspx</guid>
            <pubDate>Tue, 16 Sep 2008 12:40:55 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/3619.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/macvittie/archive/2008/09/16/3619.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/3619.aspx</wfw:commentRss>
            <trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/3619.aspx</trackback:ping>
        </item>
        <item>
            <title>Why it's so hard to secure JavaScript</title>
            <link>http://devcentral.f5.com/weblogs/macvittie/archive/2008/09/12/3609.aspx</link>
            <description>&lt;table cellspacing="0" cellpadding="2" width="731" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="502"&gt;         &lt;p&gt;The &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/09/11/3605.aspx"&gt;discussion yesterday on JavaScript and security&lt;/a&gt; got me thinking about why it is that there are no good options other than script management add-ons like &lt;a href="http://noscript.net/"&gt;NoScript&lt;/a&gt; for securing JavaScript. &lt;/p&gt;          &lt;p&gt;In a compiled language there may be multiple ways to write a loop, but the underlying object code generated is the same. A loop is a loop, regardless of how it's represented in the language. Security products that insert shims into the stack, run as a proxy on the server, or reside in the network can look for anomalies in that object code. This is the basis for many types of network security - IDS, IPS, AVS, intelligent firewalls. They look for anomalies in signatures and if they find one they consider it a threat.&lt;/p&gt;          &lt;p&gt;While the execution of a loop in an interpreted language is also the same regardless of how it's represented, it &lt;em&gt;looks &lt;/em&gt;different to security devices because it's often text-based as is the case with JavaScript and XML. There are only two good options for externally applying security to languages that are interpreted on the client: pattern matching/regex and parsing. &lt;/p&gt;          &lt;p&gt;Pattern matching and regular expressions provide minimal value for securing client-side interpreted languages, at best, because of the incredibly high number of possible combinations of putting together code. &lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="228"&gt;         &lt;p&gt;&lt;strong&gt;      Where's F5?&lt;/strong&gt; &lt;/p&gt;          &lt;ul&gt;           &lt;li&gt;&lt;a href="http://www.vmworld.com"&gt;VMWorld&lt;/a&gt;               &lt;br /&gt;Sept 15-18 in Las Vegas &lt;/li&gt;            &lt;li&gt;&lt;a href="http://storagedecisions.techtarget.com/newyork"&gt;Storage Decisions&lt;/a&gt;               &lt;br /&gt;Sept 23-24 in New York &lt;/li&gt;            &lt;li&gt;&lt;a href="http://www.networld.com/events"&gt;Networld IT Roadmap&lt;/a&gt;               &lt;br /&gt;Sept 23 in Dallas &lt;/li&gt;            &lt;li&gt;&lt;a href="http://www.oracle.com/openworld/2008/"&gt;Oracle Open World&lt;/a&gt;               &lt;br /&gt;Sept 21-25 in San Francisco &lt;/li&gt;            &lt;li&gt;&lt;a href="http://www.snwusa.com/"&gt;Storage Networking World&lt;/a&gt;               &lt;br /&gt;Oct 13-16 in Dallas &lt;/li&gt;            &lt;li&gt;&lt;a href="http://www.storage-expo.com/"&gt;Storage Expo 2008 UK&lt;/a&gt;               &lt;br /&gt;Oct 15-16 in London &lt;/li&gt;            &lt;li&gt;&lt;a href="http://www.snweurope.com/"&gt;Storage Networking World&lt;/a&gt;               &lt;br /&gt;Oct 27-29 in Frankfurt &lt;/li&gt;         &lt;/ul&gt;                     &lt;a href="http://www.new.facebook.com/pages/Seattle-WA/F5-Networks/19466599085"&gt;&lt;img title="F5 on Facebook" height="32" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_icon_facebook.png" width="32" border="0" /&gt;&lt;/a&gt; &lt;a href="http://twitter.com/f5networks"&gt;&lt;img title="Follow F5 on Twitter" height="32" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="32" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;As we learned from preventing &lt;a href="http://www.f5.com/pdf/white-papers/sql-injection-detection-wp.pdf"&gt;SQL injection&lt;/a&gt; and &lt;a href="http://www.f5.com/pdf/white-papers/xss-evasion-wp.pdf"&gt;XSS&lt;/a&gt;, attackers are easily able to avoid detection by these systems by simply adding white space, removing white space, using encoding tricks, and just generally finding a new permutation of their code. &lt;/p&gt;  &lt;p&gt;Parsing is, of course, the best answer. As &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/09/11/3605.aspx#404115"&gt;7rans noted yesterday&lt;/a&gt; regarding the &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/09/11/3605.aspx"&gt;Billion More Laughs JavaScript hack&lt;/a&gt;, if you control the stack, you control the execution of the code. Similarly, if you parse the data you can get it into a format more akin to that of a compiled language and then you can secure it. That's the reasoning behind XML threat defense, or &lt;a href="http://www.f5.com/products/big-ip/product-modules/application-security-manager.html"&gt;XML firewalls&lt;/a&gt;. In fact, all SOA and XML security devices necessarily parse the XML they are protecting - because that's the only way to know whether or not some typical XML attacks, like the Billion Laughs attack, are present. &lt;/p&gt;  &lt;p&gt;But this implementation comes at a price: &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2007/02/12/2735.aspx"&gt;performance&lt;/a&gt;. Parsing XML is compute intensive, and it necessarily adds latency. Every device you add into the delivery path that must parse the XML to route it, secure it, or transform it &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/Theimpactofsecurityofinterpretedlanguage_32A5/failed-security.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 10px 10px 0px 0px; border-left: 0px; border-bottom: 0px" height="240" alt="failed-security" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/Theimpactofsecurityofinterpretedlanguage_32A5/failed-security_thumb.jpg" width="208" align="left" border="0" /&gt;&lt;/a&gt;adds latency and increases response time, which decreases overall application performance. This is one of the primary reasons most XML-focused solutions prefer to use a &lt;em&gt;streaming parser&lt;/em&gt;. Streaming parser performance is much better than a full DOM parser, and still provides the opportunity to validate the XML and find malicious code. It isn't a panacea, however, as there are still some situations where streaming can't be used - primarily when transformation is involved. &lt;/p&gt;  &lt;p&gt;We know this already, and also know that JavaScript and client-side interpreted languages in general are far more prolific than XML. Parsing JavaScript externally to determine whether it contains malicious code would certainly make it more secure, but it would also likely severely impact application performance - and not in a good way. We also know that streaming JavaScript isn't a solution because unlike an XML document, JavaScript is not confined. JavaScript is delimited, certainly, but it isn't confined to just being in the HEAD of an HTML document. It can be &lt;em&gt;anywhere &lt;/em&gt;in the document, and often is. &lt;/p&gt;  &lt;p&gt;Worse, JavaScript can self-modify at run-time - and often does. That means that the security threat may not be in the syntax or the code when it's delivered to the client, but it might appear once the script is executed. Not only would an intermediate security device need to parse the JavaScript, it would need to execute it in order to properly secure it. &lt;/p&gt;  &lt;p&gt;While almost all web &lt;a href="http://www.f5.com/solutions/security/"&gt;application security&lt;/a&gt; solutions - &lt;a href="http://www.f5.com/products/big-ip/product-modules/application-security-manager.html"&gt;ours included&lt;/a&gt; - are capable of finding specific attacks like XSS and SQL injection that are hidden within JavaScript, none are able to detect and prevent JavaScript code-based exploits unless they can be identified by a specific signature or pattern. And as we've just established, that's no guarantee the exploits won't morph and change as soon as they can be prevented. &lt;/p&gt;  &lt;p&gt;That's why browser add-ons like NoScript are so popular. Because JavaScript security today is binary: allow or deny. Period. There's no real in between. There is no JavaScript proxy that parses and rejects malicious script, no solution that proactively scans JavaScript for code-based exploits, no external answer to the problem. That means we have to rely on the browser developers to not only write a good browser with all the bells and whistles we like, but for security, as well. &lt;/p&gt;  &lt;p&gt;I am not aware of any security solution that currently parses out JavaScript before it's delivered to the client. If there are any out there, I'd love to hear about them. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img height="18" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img height="18" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" border="0" /&gt;&lt;/a&gt;&lt;a href="http://lmacvittie.tumblr.com" border="0"&gt;&lt;img title="Follow me on Tumblr" height="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_tumblr.gif" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://lmacvittie.posterous.com/"&gt;&lt;img title="Posterous" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_posterous.png" border="0" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" border="0" /&gt;&lt;/a&gt; &lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img height="18" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img height="18" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" border="0" /&gt;&lt;/a&gt;&lt;script src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355" type="text/javascript"&gt;&lt;/script&gt;&lt;script src="http://feeds.feedburner.com/~s/f5/XOwx" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;&lt;script src="http://feeds.feedburner.com/~d/static/site-tracker.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;&lt;script src="http://feeds.feedburner.com/~d/static/site-tracker.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;&lt;script src="http://feeds.feedburner.com/~d/static/site-tracker.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt; &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7afe8b4f-40e3-4393-a0fa-f72248035f3b" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/web%20application%20security" rel="tag"&gt;web application security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/security" rel="tag"&gt;security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/XML%20firewall" rel="tag"&gt;XML firewall&lt;/a&gt;,&lt;a href="http://technorati.com/tags/JavaScript" rel="tag"&gt;JavaScript&lt;/a&gt;,&lt;a href="http://technorati.com/tags/parserss" rel="tag"&gt;parserss&lt;/a&gt;,&lt;a href="http://technorati.com/tags/interpreted%20languages" rel="tag"&gt;interpreted languages&lt;/a&gt;,&lt;a href="http://technorati.com/tags/XML" rel="tag"&gt;XML&lt;/a&gt;,&lt;a href="http://technorati.com/tags/XSS" rel="tag"&gt;XSS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SQL%20injection" rel="tag"&gt;SQL injection&lt;/a&gt;&lt;/div&gt;&lt;div class='blogtags'&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/3609.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lori MacVittie</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/macvittie/archive/2008/09/12/3609.aspx</guid>
            <pubDate>Fri, 12 Sep 2008 11:49:44 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/3609.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/macvittie/archive/2008/09/12/3609.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/3609.aspx</wfw:commentRss>
            <trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/3609.aspx</trackback:ping>
        </item>
        <item>
            <title>A Billion More Laughs: The JavaScript hack that acts like an XML attack</title>
            <link>http://devcentral.f5.com/weblogs/macvittie/archive/2008/09/11/3605.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/dmacvittie"&gt;Don&lt;/a&gt; is off in &lt;a href="http://www.lowellma.gov/"&gt;Lowell&lt;/a&gt; working on a project with our &lt;a href="http://www.acopia.com/"&gt;ARX&lt;/a&gt; folks so I was working late last night (finishing my daily read of the Internet) and ended up reading &lt;a href="http://www.hanselman.com/blog/"&gt;Scott Hanselman's&lt;/a&gt; &lt;a href="http://www.hanselman.com/blog/MicrosoftIE8AndGoogleChromeProcessesAreTheNewThreads.aspx"&gt;discussion&lt;/a&gt; of threads versus processes in &lt;a href="http://www.google.com/chrome"&gt;Chrome&lt;/a&gt; and &lt;a href="http://www.microsoft.com/windows/internet-explorer/beta/default.aspx"&gt;IE8&lt;/a&gt;. It was a great read, if you like that kind of thing (I do), and it does a great job of digging into some of the RAMifications (pun intended) of the new programmatic models for both browsers. &lt;/p&gt;  &lt;p&gt;But this isn't about processes or threads, it's about an interesting comment that caught my eye: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This will make IE8 Beta 2 unresponsive &lt;/p&gt;    &lt;pre&gt;&amp;lt;div id="test"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;..&lt;br /&gt;t = document.getElementById("test");&lt;br /&gt;while(true)&lt;br /&gt;{&lt;br /&gt;  t.innerHTML += "a";&lt;br /&gt;}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;What really grabbed my attention is that this little snippet of code is so eerily similar to the &lt;a href="http://www.ibm.com/developerworks/xml/library/x-tipcfsx.html#listing1"&gt;XML "Billion Laughs" exploit&lt;/a&gt;, in which an entity is expanded recursively for, well, forever and essentially causes a &lt;a href="http://www.f5.com/glossary/denial-of-service.html"&gt;DoS&lt;/a&gt; attack on whatever system (browser, server) was attempting to parse the document. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/ABillionLaughsAJavaScripthackthatactslik_F8A4/noscript_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 10px 0px 0px; border-right-width: 0px" height="128" alt="noscript" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/ABillionLaughsAJavaScripthackthatactslik_F8A4/noscript_thumb.png" width="128" align="left" border="0" /&gt;&lt;/a&gt; What makes scripts like this scary is that many forums and blogs that are less vehement about disallowing &lt;a href="http://www.w3.org/TR/REC-html40"&gt;HTML&lt;/a&gt; and script can be easily exploited by a code snippet like this, which could cause the browser of all users viewing the infected post to essentially "lock up". This is one of the reasons why IE8 and Chrome moved to a more segregated tabbed model, with each tab basically its own process rather than a thread - to prevent corruption in one from affecting others. But given the comment this doesn't seem to be the case with IE8 (there's no indication Chrome was tested with this code, so whether it handles the situation or not is still to be discovered). &lt;/p&gt;

&lt;p&gt;This is likely because it's not a corruption, it's valid &lt;a href="http://www.javascript.com/"&gt;JavaScript&lt;/a&gt;. It just happens to be consuming large quantities of memory very quickly and not giving the other processes in other tabs in IE8 a chance to execute. &lt;/p&gt;

&lt;p&gt;The reason the JavaScript version was so intriguing was that it's nearly impossible to stop. The &lt;a href="http://www.f5.com/glossary/xml.html"&gt;XML&lt;/a&gt; version can be easily detected and prevented by an &lt;a href="http://www.f5.com/solutions/security/web-application/"&gt;XML firewall&lt;/a&gt; and most modern XML parsers can be configured to stop parsing and thus prevent the document from wreaking havoc on a system. But this JavaScript version is much more difficult to detect and thus prevent because it's &lt;em&gt;code&lt;/em&gt; and thus not confined to a specific format with specific syntactical attributes. I can think of about 20 different versions of this script - all valid and all of them different enough to make pattern matching or regular expressions useless for detection. And I'm no evil genius, so you can bet there are many more. &lt;/p&gt;

&lt;p&gt;The best option for addressing this problem? Disable scripts. &lt;/p&gt;

&lt;p&gt;The conundrum is that disabling scripts can cause many, many sites to become unusable because they are taking advantage of &lt;a href="http://www.f5.com/glossary/ajax.html"&gt;AJAX&lt;/a&gt; functionality, which requires...yup, scripts. You can certainly enable scripts only on specific sites you trust (which is likely what most security folks would suggest should be default behavior anyway) but that's a PITA and the very users we're trying to protect aren't likely to take the time to do this - or even understand why it's necessary. &lt;/p&gt;

&lt;p&gt;With the increasing dependence upon scripting to provide functionality for RIAs (Rich Interactive Applications) we're going to have to figure out how to address this problem, and address it soon. Eliminating scripting is not an option, and a default deny policy (essentially whitelisting) is unrealistic. &lt;/p&gt;

&lt;p&gt;Perhaps it's time for &lt;a href="http://www.mozilla.org/projects/security/components/signed-scripts.html"&gt;signed scripts&lt;/a&gt; to make a comeback. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img height="18" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img height="18" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" border="0" /&gt;&lt;/a&gt;&lt;a href="http://lmacvittie.tumblr.com" border="0"&gt;&lt;img title="Follow me on Tumblr" height="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_tumblr.gif" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://lmacvittie.posterous.com/"&gt;&lt;img title="Posterous" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_posterous.png" border="0" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" border="0" /&gt;&lt;/a&gt; &lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img height="18" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img height="18" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" border="0" /&gt;&lt;/a&gt;&lt;script src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355" type="text/javascript"&gt;&lt;/script&gt;&lt;script src="http://feeds.feedburner.com/~s/f5/XOwx" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;&lt;script src="http://feeds.feedburner.com/~d/static/site-tracker.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt; &lt;/p&gt;

&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:86a38d01-d2af-4541-8c82-cfc84ef21228" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ARX" rel="tag"&gt;ARX&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ASM" rel="tag"&gt;ASM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/XML%20firewall" rel="tag"&gt;XML firewall&lt;/a&gt;,&lt;a href="http://technorati.com/tags/AJAX" rel="tag"&gt;AJAX&lt;/a&gt;,&lt;a href="http://technorati.com/tags/JavaScript" rel="tag"&gt;JavaScript&lt;/a&gt;,&lt;a href="http://technorati.com/tags/billion%20laughs" rel="tag"&gt;billion laughs&lt;/a&gt;,&lt;a href="http://technorati.com/tags/exploits" rel="tag"&gt;exploits&lt;/a&gt;,&lt;a href="http://technorati.com/tags/digital%20signatures" rel="tag"&gt;digital signatures&lt;/a&gt;,&lt;a href="http://technorati.com/tags/RIA" rel="tag"&gt;RIA&lt;/a&gt;,&lt;a href="http://technorati.com/tags/IE8" rel="tag"&gt;IE8&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Chrome" rel="tag"&gt;Chrome&lt;/a&gt;,&lt;a href="http://technorati.com/tags/threads" rel="tag"&gt;threads&lt;/a&gt;,&lt;a href="http://technorati.com/tags/processes" rel="tag"&gt;processes&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Scott%20Hanselman" rel="tag"&gt;Scott Hanselman&lt;/a&gt;,&lt;a href="http://technorati.com/tags/security" rel="tag"&gt;security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Web%202.0" rel="tag"&gt;Web 2.0&lt;/a&gt;,&lt;a href="http://technorati.com/tags/web" rel="tag"&gt;web&lt;/a&gt;,&lt;a href="http://technorati.com/tags/http" rel="tag"&gt;http&lt;/a&gt;,&lt;a href="http://technorati.com/tags/internet" rel="tag"&gt;internet&lt;/a&gt;&lt;/div&gt;&lt;div class='blogtags'&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/3605.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lori MacVittie</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/macvittie/archive/2008/09/11/3605.aspx</guid>
            <pubDate>Thu, 11 Sep 2008 11:01:27 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/3605.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/macvittie/archive/2008/09/11/3605.aspx#feedback</comments>
            <slash:comments>8</slash:comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/3605.aspx</wfw:commentRss>
            <trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/3605.aspx</trackback:ping>
        </item>
        <item>
            <title>You're Doing It Wrong</title>
            <link>http://devcentral.f5.com/weblogs/macvittie/archive/2008/08/26/3562.aspx</link>
            <description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/dmacvittie"&gt;Don&lt;/a&gt; and I were discussing &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/08/21/3552.aspx"&gt;security as a service&lt;/a&gt; and, as usual, he spouted off some wisdom in the form of an analogy that was too good to &lt;em&gt;not &lt;/em&gt;to share. &lt;/p&gt;  &lt;p&gt;When you're walking down the street with your entourage and an angry, I mean &lt;em&gt;really&lt;/em&gt; angry, man steps out in front of you with a lead pipe where should your bodyguard be? &lt;/p&gt;  &lt;p&gt;&lt;/p&gt; &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/Shouldyourbodyguardstopathreatabeforeorb_88BB/doing-it-wrong-ball_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 0px 10px 0px 0px; border-left: 0px; border-bottom: 0px" height="208" alt="doing-it-wrong-ball" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/Shouldyourbodyguardstopathreatabeforeorb_88BB/doing-it-wrong-ball_thumb.jpg" width="240" align="left" border="0" /&gt;&lt;/a&gt; Yeah, that was my thought, too. He should be &lt;em&gt;&lt;strong&gt;in front of me&lt;/strong&gt;&lt;/em&gt; to stop the threat before I have to react. Even though the threat may not hit me if the bodyguard is beside me because he manages to reach out and grab the lead pipe before it lands a blow, I've probably expended unnecessary resources avoiding or flinching or cringing or screaming like a school girl at the action. Resources I didn't need to waste. I might even be (gasp) sweating from the exertion. And what a terrible faux pas for someone who can afford an entourage and a bodyguard to sweat in public.   &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Basically, if I get hit by that lead pipe or I expend effort avoiding being hit or even momentarily look like something out of an &lt;a href="http://en.wikipedia.org/wiki/Edvard_Munch"&gt;Edvard Munch&lt;/a&gt; painting, my bodyguard is fired because he wasn't doing his job. He's doing it wrong.&lt;/p&gt;  &lt;p&gt;That's the difference between &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/08/21/3552.aspx"&gt;security as a service&lt;/a&gt; when provided by a web application firewall and security as a service when implemented as an internal, software service solution. The WAF is &lt;em&gt;inline, &lt;/em&gt;in front of the application, preventing that lead pipe from damaging the application. The application never has to expend unnecessary resources or sweat in public (wasted CPU/memory utilization/connections) when the security is deployed &lt;em&gt;in front of &lt;/em&gt;the application. &lt;/p&gt;  &lt;p&gt;If you're thinking, "Hey, what's that really gonna do? Waste a couple milliseconds? Pshaw! No one will notice!" then you need to go now and read &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/08/25/3560.aspx"&gt;this post on latency&lt;/a&gt;. Really - go now. I'll wait. &lt;/p&gt;  &lt;p&gt;Threat defense is necessarily defensive. And the best defense is a good offense; one that is proactive rather than purely reactive. That means acting &lt;em&gt;before &lt;/em&gt;the threat truly becomes a threat. Allowing a threat to reach the application before it's been identified and filtered out is certainly better than doing nothing, but stopping it before it gets near the application is even better. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img height="18" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img height="18" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" border="0" /&gt;&lt;/a&gt;&lt;a href="http://lmacvittie.tumblr.com" border="0"&gt;&lt;img title="Follow me on Tumblr" height="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_tumblr.gif" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://lmacvittie.posterous.com/"&gt;&lt;img title="Posterous" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_posterous.png" border="0" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" border="0" /&gt;&lt;/a&gt; &lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img height="18" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img height="18" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" border="0" /&gt;&lt;/a&gt;&lt;script src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355" type="text/javascript"&gt;&lt;/script&gt;&lt;script src="http://feeds.feedburner.com/~s/f5/XOwx" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;&lt;script src="http://feeds.feedburner.com/~d/static/site-tracker.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;&lt;script src="http://feeds.feedburner.com/~d/static/site-tracker.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;&lt;script src="http://feeds.feedburner.com/~d/static/site-tracker.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;&lt;script src="http://feeds.feedburner.com/~d/static/site-tracker.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;&lt;script src="http://feeds.feedburner.com/~d/static/site-tracker.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt; &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:74c82744-160c-4d28-9cf8-0021a93bf401" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/macVittie" rel="tag"&gt;macVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/f5" rel="tag"&gt;f5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/security" rel="tag"&gt;security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/application%20security" rel="tag"&gt;application security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/waf" rel="tag"&gt;waf&lt;/a&gt;,&lt;a href="http://technorati.com/tags/inline" rel="tag"&gt;inline&lt;/a&gt;,&lt;a href="http://technorati.com/tags/services" rel="tag"&gt;services&lt;/a&gt;&lt;/div&gt;&lt;div class='blogtags'&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/3562.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lori MacVittie</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/macvittie/archive/2008/08/26/3562.aspx</guid>
            <pubDate>Tue, 26 Aug 2008 12:01:04 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/3562.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/macvittie/archive/2008/08/26/3562.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/3562.aspx</wfw:commentRss>
            <trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/3562.aspx</trackback:ping>
        </item>
        <item>
            <title>What's the difference between a web application and a blog?</title>
            <link>http://devcentral.f5.com/weblogs/macvittie/archive/2008/08/13/3531.aspx</link>
            <description>&lt;p&gt;Nothing. At least not from an attacker's perspective. A blog is an individual content management system, requiring storage (either database or flat file) and the ability to write to that storage. Comments allow discussion but also require access to files and or databases. It's an app, and that means it comes with all the baggage today's web applications necessarily come with: vulnerabilities. &lt;/p&gt;  &lt;p&gt;Those vulnerabilities are likely to become more visible as more organizations adopt blogging and other Web 2.0 applications in the next two years. Analyst firm &lt;a href="http://www.gartner.com"&gt;Gartner&lt;/a&gt; recently highlighted 27 technologies in its &lt;a href="http://gartner.com/it/page.jsp?id=739613"&gt;2008 Hype Cycle for Emerging Technologies&lt;/a&gt;, and Web 2.0 is among the list of those that will be soon climbing out of the "Trough of Disillusionment" and entering mainstream adoption. &lt;/p&gt; &lt;fieldset style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px; padding-top: 5px"&gt;&lt;legend&gt;From the press release for Gartner's Hype Cycle&lt;/legend&gt;    &lt;p&gt;"Although Web 2.0 is now entering the Trough of Disillusionment, it will emerge within two years to have transformational impact, as companies steadily gain more experience and success with both the technologies and the cultural implications," said Jackie Fenn, vice president and Gartner Fellow.&lt;/p&gt; &lt;/fieldset&gt;   &lt;p&gt;Blogs are, by definition, a part of Web 2.0, as are many other tools that organizations are starting to adopt. Given that the SEC recently announced it would &lt;a href="http://www.techcrunch.com/2008/07/31/sec-to-recognize-corporate-blogs-as-public-disclosure-can-we-now-kill-the-press-release/"&gt;recognize corporate blogs as public disclosure&lt;/a&gt;, it's clear that blogs are coming into their own. &lt;/p&gt;  &lt;p&gt;But no one writes their own blog software any more than they write their own content management systems. At least no one sane does. But that means relying upon, and trusting, third-party software like &lt;a href="http://wordpress.com/"&gt;WordPress&lt;/a&gt; or TypePad. That means you're trusting that the software is free of vulnerabilities and has been developed with secure coding techniques. &lt;/p&gt;  &lt;p&gt;It's one thing to insist &lt;em&gt;your &lt;/em&gt;developers use secure coding techniques but it's a way different scenario when you're dealing with third-party, Internet facing applications like blogs.  And &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/06/19/3371.aspx"&gt;you may recall&lt;/a&gt; that according to Verizon Business' &lt;a href="http://www.verizonbusiness.com/resources/security/databreachreport.pdf"&gt;2008 Data Breach Investigations Report&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/Whatsthedifferencebetweenawebappandablog_10011/verizon-attack-pathways_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="186" alt="verizon-attack-pathways" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/Whatsthedifferencebetweenawebappandablog_10011/verizon-attack-pathways_thumb.jpg" width="484" align="left" border="0" /&gt;&lt;/a&gt;34% of breaches occurred through a web application. &lt;/p&gt;  &lt;p&gt;If you're going to be using third party web applications that you cannot guarantee are secure (and you can't) then you ought to be taking advantage of a web application firewall. Yes, &lt;a href="http://www.informationweek.com/authors/showAuthor.jhtml?authorID=1011"&gt;Fratto&lt;/a&gt;, I went there. But this time it's much harder to argue with the logic. You didn't write the software, &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/08/11/3528.aspx"&gt;you can't be certain it's secure&lt;/a&gt;, but you need to make sure it's as secure as it can be. A &lt;a href="http://www.f5.com/products/big-ip/product-modules/application-security-manager.html"&gt;web application firewall&lt;/a&gt; can protect third-party applications just as easily as it can custom developed applications, and in many cases it's &lt;a href="http://www.f5.com/solutions/resources/application-guides/"&gt;actually a lot easier&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;And even if they are secure today, what about tomorrow? Sure, if a new vulnerability is discovered (and they always are, at an alarming rate) it'll eventually get patched, but in the mean time what are you going to do to secure it? Or will you take it down and lose the following you've built and the trust that goes with it? &lt;/p&gt;  &lt;p&gt;Blogs, especially corporate blogs, are the Internet face to an organization. They are likely (one hopes) to be more visible and viewed than the corporate FAQ or product solution pages. But that visibility brings greater risks, especially in the face of a breach. A WAF can minimize the potential of a breach for your blog regardless of whether you or a third-party developed the software that powers it. &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img height="18" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img height="18" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" border="0" /&gt;&lt;/a&gt;&lt;a href="http://lmacvittie.tumblr.com" border="0"&gt;&lt;img title="Follow me on Tumblr" height="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_tumblr.gif" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://lmacvittie.posterous.com/"&gt;&lt;img title="Posterous" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_posterous.png" border="0" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" border="0" /&gt;&lt;/a&gt; &lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img height="18" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', &amp;#xD;&amp;#xD;&amp;#xA;'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img height="18" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:033eddb2-08bf-4268-ae62-a4edd60a36c7" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/security" rel="tag"&gt;security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/web%202.0" rel="tag"&gt;web 2.0&lt;/a&gt;,&lt;a href="http://technorati.com/tags/web%20application%20security" rel="tag"&gt;web application security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/application%20delivery" rel="tag"&gt;application delivery&lt;/a&gt;,&lt;a href="http://technorati.com/tags/internet" rel="tag"&gt;internet&lt;/a&gt;,&lt;a href="http://technorati.com/tags/web" rel="tag"&gt;web&lt;/a&gt;,&lt;a href="http://technorati.com/tags/http" rel="tag"&gt;http&lt;/a&gt;,&lt;a href="http://technorati.com/tags/application%20security" rel="tag"&gt;application security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/blogs" rel="tag"&gt;blogs&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Gartner" rel="tag"&gt;Gartner&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SEC" rel="tag"&gt;SEC&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Fratto" rel="tag"&gt;Fratto&lt;/a&gt;&lt;/div&gt;&lt;div class='blogtags'&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/3531.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lori MacVittie</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/macvittie/archive/2008/08/13/3531.aspx</guid>
            <pubDate>Wed, 13 Aug 2008 10:35:44 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/3531.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/macvittie/archive/2008/08/13/3531.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/3531.aspx</wfw:commentRss>
            <trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/3531.aspx</trackback:ping>
        </item>
        <item>
            <title>Three Web Application Vulnerabilities You Need to Know</title>
            <link>http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/18/3469.aspx</link>
            <description>&lt;p&gt;Via &lt;a href="http://news.ycombinator.com" target="_blank"&gt;Hacker News&lt;/a&gt; and &lt;a href="http://www.catonmat.net/" target="_blank"&gt;Peteris Kumins' blog&lt;/a&gt; on programming, hacking, software reuse and stuff comes the latest &lt;a href="http://www.google.com" target="_blank"&gt;Google&lt;/a&gt; &lt;a href="hhttp://www.youtube.com/user/googletechtalks" target="_blank"&gt;tech talk&lt;/a&gt;, this one on web application vulnerabilities and "&lt;a href="http://www.catonmat.net/blog/how-cybercriminals-steal-money/" target="_blank"&gt;how cybercriminals steal money&lt;/a&gt;". &lt;/p&gt;  &lt;p&gt;While Peteris and Google are targeting web developers with this informative video talk, it's a great resource as well for security folks as well as network administrators tasked with understanding how to thwart web application attacks. &lt;/p&gt;  &lt;p&gt;Even if you've deployed a &lt;a href="http://www.f5.com/products/big-ip/product-modules/application-security-manager.html" target="_blank"&gt;web application firewall&lt;/a&gt; to protect you from these kinds of vulnerabilities, it's still a great idea to watch this one and get a better understanding of the attacks. &lt;/p&gt;  &lt;p&gt;The three vulnerabilities covered are: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.f5.com/glossary/sql-injection.html" target="_blank"&gt;SQL Injection&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Cross-Site Request Forgery (XSRF) &lt;/li&gt;    &lt;li&gt;Cross-Site Script Inclusion (XSSI) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The video and direct link are included here as well, but check out Peteris' blog for an overview of interesting points in the tech talk. &lt;/p&gt;  &lt;p&gt;&lt;embed src="http://www.youtube.com/v/jC6Q1uCnbMo&amp;amp;hl=en&amp;amp;fs=1" width="425" height="344" type="application/x-shockwave-flash" allowfullscreen="true" /&gt;&lt;/p&gt;  &lt;p&gt;Direct URL: &lt;a href="http://www.youtube.com/watch?v=jc6Q1uCnbMo"&gt;http://www.youtube.com/watch?v=jc6Q1uCnbMo&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img height="18" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img height="18" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" border="0" /&gt;&lt;/a&gt;&lt;a href="http://lmacvittie.tumblr.com" border="0"&gt;&lt;img title="Follow me on Tumblr" height="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_tumblr.gif" width="18" border="0" /&gt;&lt;/a&gt; &lt;a href="http://lmacvittie.posterous.com/"&gt;&lt;img title="Posterous" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_posterous.png" border="0" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/pub/dir/Lori/MacVittie"&gt;&lt;img src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" border="0" /&gt;&lt;/a&gt; &lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img height="18" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img height="18" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0736d368-c1a1-4174-909f-7b5e5f13d702" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/security" rel="tag"&gt;security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Google" rel="tag"&gt;Google&lt;/a&gt;,&lt;a href="http://technorati.com/tags/web%20application%20firewall" rel="tag"&gt;web application firewall&lt;/a&gt;,&lt;a href="http://technorati.com/tags/vulnerabilities" rel="tag"&gt;vulnerabilities&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SQL%20injection" rel="tag"&gt;SQL injection&lt;/a&gt;,&lt;a href="http://technorati.com/tags/XSRF" rel="tag"&gt;XSRF&lt;/a&gt;,&lt;a href="http://technorati.com/tags/XSSI" rel="tag"&gt;XSSI&lt;/a&gt;,&lt;a href="http://technorati.com/tags/developers" rel="tag"&gt;developers&lt;/a&gt;&lt;/div&gt; &lt;script src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355" type="text/javascript"&gt;&lt;/script&gt;&lt;div class='blogtags'&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/3469.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lori MacVittie</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/18/3469.aspx</guid>
            <pubDate>Fri, 18 Jul 2008 19:52:32 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/3469.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/18/3469.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/3469.aspx</wfw:commentRss>
            <trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/3469.aspx</trackback:ping>
        </item>
        <item>
            <title>Improving Security Through Dynamic Resource Obfuscation</title>
            <link>http://devcentral.f5.com/weblogs/macvittie/archive/2008/06/16/3361.aspx</link>
            <description>&lt;p&gt;One of the most basic attacks against data-driven sites generated dynamically through scripting languages like PHP and ASP is to use the weaknesses of the language against the developer. &lt;/p&gt;  &lt;p&gt;Attacks against sites that make use of scripting languages often attempt to exploit system level calls that can lead to all sorts of nastiness with very little work on the part of the attacker. &lt;/p&gt;  &lt;p&gt;One of the ways to guard against this is to write secure code, of course, but we all know that we can only code against known attacks. The unknown is something we just can't always anticipate and that sometimes leaves us open to newly discovered hacks. &lt;/p&gt;  &lt;p&gt;Resource obfuscation is an underused, overlooked capability on servers and &lt;a href="http://www.f5.com/products/big-ip" target="_blank"&gt;application delivery platforms&lt;/a&gt; that can seriously improve the security of your web applications and decrease the chances of an accidental or automate breach of security. Resource obfuscation can be an added protection against attacks. By hiding or obfuscating the actual file/script being invoked you can prevent a lot of automated exploitation of vulnerabilities in the most popular scripting languages used to build dynamic web sites today. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Resource Obfuscation&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Resource obfuscation, called "service virtualization" in the XML world, is really nothing more than &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/03/06/3099.aspx" target="_blank"&gt;rewriting the URI&lt;/a&gt;. In many cases you can simply "map" an external URI to an internal URI. For example, "/externalURI.php" will always map to "/internalURI.php". &lt;/p&gt;  &lt;p&gt;I&lt;img style="margin: 5px 0px 0px 5px" height="240" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_ideabulb.jpg" width="214" align="right" /&gt;f your solution is flexible enough, you could set up a map that can translate exceedingly obfuscated URIs such as "xyz123abc.php" into "internalURI.php". If you are really concerned about security and you have a truly dynamic &lt;a href="http://www.f5.com/products/big-ip" target="_blank"&gt;application delivery platform&lt;/a&gt; with a feature like &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=75" target="_blank"&gt;iRules&lt;/a&gt; you could even dynamically generate the external URIs, creating a per-session map, and replacing all the URIs in the payload with the session-constrained URIs. This is some serious work, but it would certainly keep the bad guys always guessing because the external URIs would never be the same because they would be uniquely generated on a per request basis. &lt;/p&gt;  &lt;p&gt;In general, resource obfuscation is a simple, flexible addition to your security toolkit that is easy to implement and adds an additional layer of security around your web applications. &lt;/p&gt;  &lt;p&gt;To make your web application even more secure try these additional simple security measures: &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Make sure the internal URI isn't easily deduced from query parameters or the functionality of the script. For example, if you're calling a PHP script to delete a record, don't make the internal URI "deleteRecord.php", and don't include the name of the file in hidden parameters. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; Use a WAF (Web Application Firewall) or your chosen solution for rewriting URIs to &lt;strong&gt;block &lt;/strong&gt;external access to internal URIs if possible. This prevents exploitation of scripting level vulnerabilities in the event that an attack deduces the names of your internal scripts and applications. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt; Give your scripts and applications extensions (if applicable) that do not easily (and loudly) proclaim the language and platform on which your site is running. Consider changing PHP and ASP to .abc or .xyz, either on the server itself or using your chosen URI rewrite solution. It won't stop serious attackers, but it might confuse the heck out of automated bots and script kiddies, which can reduce the likelihood of someone discovering some overlooked vulnerability. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Imbibing: Coffee&lt;/em&gt;&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:baba4f4d-f234-458f-ba40-84f76210d31d" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/security" rel="tag"&gt;security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/resource%20obfuscation" rel="tag"&gt;resource obfuscation&lt;/a&gt;,&lt;a href="http://technorati.com/tags/rewrite%20URI" rel="tag"&gt;rewrite URI&lt;/a&gt;,&lt;a href="http://technorati.com/tags/service%20virtualization" rel="tag"&gt;service virtualization&lt;/a&gt;&lt;/div&gt;&lt;div class='blogtags'&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/3361.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lori MacVittie</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/macvittie/archive/2008/06/16/3361.aspx</guid>
            <pubDate>Mon, 16 Jun 2008 14:46:40 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/3361.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/macvittie/archive/2008/06/16/3361.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/3361.aspx</wfw:commentRss>
            <trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/3361.aspx</trackback:ping>
        </item>
    </channel>
</rss>