<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AppSec Street Fighter - SANS Institute</title>
	<atom:link href="http://blogs.sans.org/appsecstreetfighter/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.sans.org/appsecstreetfighter</link>
	<description>The Application Security Street Fighter Blog</description>
	<lastBuildDate>Thu, 29 Oct 2009 17:44:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The Day the World Will End</title>
		<link>http://blogs.sans.org/appsecstreetfighter/2009/10/29/the-day-the-world-will-end/</link>
		<comments>http://blogs.sans.org/appsecstreetfighter/2009/10/29/the-day-the-world-will-end/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 14:46:37 +0000</pubDate>
		<dc:creator>Johannes Ullrich</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.sans.org/appsecstreetfighter/?p=3186</guid>
		<description><![CDATA[With a new movie coming out about how the world will end with the (supposed) end of the Mayan calender, I figured it would be nice to get a list of software related &#8220;end of calender&#8221; issues:
Dec. 31st 1999, 23:59:59 GMT
The famous Y2k issue. We made it&#8230; (so far   )
Jan. 10th, 2010, 10:10:00 [...]]]></description>
			<content:encoded><![CDATA[<p>With a new movie coming out about how the world will end with the (supposed) end of the Mayan calender, I figured it would be nice to get a list of software related &#8220;end of calender&#8221; issues:</p>
<p><strong>Dec. 31st 1999, 23:59:59 GMT</strong><br />
The famous Y2k issue. We made it&#8230; (so far <img src='http://blogs.sans.org/appsecstreetfighter/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  )</p>
<p><strong>Jan. 10th, 2010, 10:10:00 GMT</strong><br />
&#8220;Binary Armageddon Day&#8221;. The binary representation, 1010011010 translates to &#8216;666&#8242;. Also, the date only includes 1s and 0s (other then the &#8216;2&#8242; in the year). (thx Gadi. Also see Gadi&#8217;s facebook group about this issue ). If you are on facebook, you can find the group here: http://www.facebook.com/pages/Binary-Armageddon-Day</p>
<p><strong>Dec. 21, 2012</strong><br />
end of Mayan calendar. Just listed here because everybody is talking about it. Should not affect software (other then the fact that the world will end that day).</p>
<p><strong>Feb. 7th 2036, 6:28:16 GMT</strong><br />
The last date that can be expressed using &#8220;ntp&#8221;. ntp is a protocol used to synchronize clocks on the internet. The ntp date starts on Jan 1st 1900 and is expressed in 64 bits. The first 32 bits are used to indicate the number of seconds since Jan 1st 1900, the remaining bits are used as fractional seconds.</p>
<p><strong>Jan. 19th 2038, 03:14:07 GMT</strong><br />
The end of the Unix epoch. Unix uses a 32 it signed number to express time. &#8216;0&#8242; is January 1st 1970. The last date that can be expressed using unix time is Jan 19th 2038. After that&#8230; who knows? This can already be a problem. Imagine you are a bank and handing out 30 year mortgages? </p>
<p><strong>Dec. 31st 9999, 23:59:59 GMT</strong><br />
The end of 4 digit years. Well, we got a while until that will happen.</p>
<p>Got any other dates of note? Let us know!</p>
<div><table > <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http%3A%2F%2Fblogs.sans.org%2Fappsecstreetfighter%2F2009%2F10%2F29%2Fthe-day-the-world-will-end%2F&amp;t=The+Day+the+World+Will+End&amp;s=compact' height='18' width='120' frameborder='0' scrolling='no'></iframe></td> <td><iframe src='http://www.reddit.com/button_content?newwindow=1&amp;url=http%3A%2F%2Fblogs.sans.org%2Fappsecstreetfighter%2F2009%2F10%2F29%2Fthe-day-the-world-will-end%2F&amp;title=The+Day+the+World+Will+End&amp;t=1 ' height='18' width='120' scrolling='no' frameborder='0' ></iframe></td> <td><script type="text/javascript"><!--yahooBuzzArticleHeadline=The+Day+the+World+Will+End;//--></script><script type="text/javascript" src="http://d.yimg.com/ds/badge2.js" badgetype=small-votes></script></td></table></div><!-- Generated by Digg Digg plugin, 
    Author : Yong Mook Kim
    Website : http://www.mkyong.com/blog/digg-digg-wordpress-plugin/
	-->]]></content:encoded>
			<wfw:commentRss>http://blogs.sans.org/appsecstreetfighter/2009/10/29/the-day-the-world-will-end/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Go Google Yourself</title>
		<link>http://blogs.sans.org/appsecstreetfighter/2009/10/19/go-google-yourself/</link>
		<comments>http://blogs.sans.org/appsecstreetfighter/2009/10/19/go-google-yourself/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 13:41:02 +0000</pubDate>
		<dc:creator>Johannes Ullrich</dc:creator>
				<category><![CDATA[defense]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[spidering]]></category>

		<guid isPermaLink="false">http://blogs.sans.org/appsecstreetfighter/?p=3171</guid>
		<description><![CDATA[Regular spidering should be part of a web applications maintenance regiment. Of course, there are plenty of free and commercial tools to do it for you. Vulnerability scanners will typically come with a powerful spider function. On the other hand, public search engines like Google already do most of the work for you. In particular [...]]]></description>
			<content:encoded><![CDATA[<p>Regular spidering should be part of a web applications maintenance regiment. Of course, there are plenty of free and commercial tools to do it for you. Vulnerability scanners will typically come with a powerful spider function. On the other hand, public search engines like Google already do most of the work for you. In particular Google does provide you with a nice insider view into your web application. All you need to do is register. In order to register, you first need to sign up at http://www.google.com/webmasters/tools/ . Next, you need to show that the site is actually yours. You may do so by adding a special file to the site, or by adding a meta header with a specific code. The process usually only takes a couple minutes.</p>
<p>But why should you bother?</p>
<p>First of all, Google webmaster tools will provide you with more insight into how Google indexes your page. The section I am looking at first is &#8220;crawl errors&#8221;. It will tell you if any pages were not found, or if pages timed out. You can also check how robots.txt limited the crawl.</p>
<p>The &#8220;HTML Suggestions&#8221; section will tell you about search related errors in your HTML code. For example, inefficient use of META tags.</p>
<p>A common question we get at the Internet Storm Center is how to remove a URL from Google&#8217;s index. Webmaster tools will again help with that. The feature is a little bit hidden, but if you select &#8220;Site Configuration&#8221; and &#8220;Crawler Access&#8221;, you will see the &#8220;Remove URL&#8221; feature. This is probably the fastest way to remove a URL from Google. </p>
<p>Finally, the &#8220;Labs&#8221; section: One feature Google is currently experimenting with is malware detection. If Google found malware on your site, it will tell you about it. Sure, this is not the ideal way to find out about malware on your site. But better late then never.</p>
<p>I think Google&#8217;s webmaster tool is a &#8220;must have&#8221; for everybody running a website. While not strictly a security tool, it does help with security (and of course search engine optimization). </p>
<div><table > <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http%3A%2F%2Fblogs.sans.org%2Fappsecstreetfighter%2F2009%2F10%2F19%2Fgo-google-yourself%2F&amp;t=Go+Google+Yourself&amp;s=compact' height='18' width='120' frameborder='0' scrolling='no'></iframe></td> <td><iframe src='http://www.reddit.com/button_content?newwindow=1&amp;url=http%3A%2F%2Fblogs.sans.org%2Fappsecstreetfighter%2F2009%2F10%2F19%2Fgo-google-yourself%2F&amp;title=Go+Google+Yourself&amp;t=1 ' height='18' width='120' scrolling='no' frameborder='0' ></iframe></td> <td><script type="text/javascript"><!--yahooBuzzArticleHeadline=Go+Google+Yourself;//--></script><script type="text/javascript" src="http://d.yimg.com/ds/badge2.js" badgetype=small-votes></script></td></table></div><!-- Generated by Digg Digg plugin, 
    Author : Yong Mook Kim
    Website : http://www.mkyong.com/blog/digg-digg-wordpress-plugin/
	-->]]></content:encoded>
			<wfw:commentRss>http://blogs.sans.org/appsecstreetfighter/2009/10/19/go-google-yourself/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adoption of X-FRAME-OPTIONS header</title>
		<link>http://blogs.sans.org/appsecstreetfighter/2009/10/15/adoption-of-x-frame-options-header/</link>
		<comments>http://blogs.sans.org/appsecstreetfighter/2009/10/15/adoption-of-x-frame-options-header/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 01:42:50 +0000</pubDate>
		<dc:creator>Jason Lam</dc:creator>
				<category><![CDATA[Clickjacking]]></category>
		<category><![CDATA[defense]]></category>

		<guid isPermaLink="false">http://blogs.sans.org/appsecstreetfighter/?p=3136</guid>
		<description><![CDATA[Late 2008, Jeremiah Grossman and Robert Hansen publicized the clickjacking problem and got the web app security experts all trying to come up with solutions. One of the more viable solution is the X-FRAME-OPTIONS header that allow a site to control whether its content can be within a frame. There are two settings to this [...]]]></description>
			<content:encoded><![CDATA[<p>Late 2008, Jeremiah Grossman and Robert Hansen publicized the <a href="http://en.wikipedia.org/wiki/Clickjacking">clickjacking</a> problem and got the web app security experts all trying to come up with solutions. One of the more viable solution is the X-FRAME-OPTIONS header that allow a site to control whether its content can be within a frame. There are two settings to this header, DENY blocks the content from being in a frame and SAMEORIGIN only allows the content to be framed by pages within the same origin. While it is not the end all and be all of clickjacking solution and won&#8217;t work in some sites that extensively use frames across multiple sites, it is considered as a more <a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/06/23/clickjacking-protection-using-x-frame-options-available-for-firefox.aspx">reasonable approach</a> for sites to protect their own content.</p>
<p>Johannes Ullrich and I got a little curious about the adoption of X-FRAME-OPTIONS header in the major sites. We went and got the list of top sites according to<a href="http://www.alexa.com/"> Alexa</a> and see if the top sites actually use X-FRAME-OPTIONS header. We expected the results to be low, but when we looked at the results from visiting all these sites, we were a slight bit surprised. Of the TOP 10,000 sites from the Alexa&#8217;s list, <strong>only 4 sites</strong> have the header specified. That number obviously is very low.</p>
<p>Not having the X-FRAME-OPTIONS header does not mean these site are not protected from clickjacking, maybe they are using some type of Javascript framebusting, we haven&#8217;t looked at how many have framebusting deployed yet. It is widely believe that the Javascript only defense is not as good as the attacker could disable Javascript in the frame by setting SECURITY=RESTRICTED on the IFrame to disable the Javascript defense.</p>
<p>As a side note, I am doing my personal part on promoting the X-FRAME-OPTION. In the next major update of my SANS DEV422 course (soon to be 522), there will be emphasis on various defenses against Clickjacking that a site owner can leverage.</p>
<div><table > <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http%3A%2F%2Fblogs.sans.org%2Fappsecstreetfighter%2F2009%2F10%2F15%2Fadoption-of-x-frame-options-header%2F&amp;t=Adoption+of+X-FRAME-OPTIONS+header&amp;s=compact' height='18' width='120' frameborder='0' scrolling='no'></iframe></td> <td><iframe src='http://www.reddit.com/button_content?newwindow=1&amp;url=http%3A%2F%2Fblogs.sans.org%2Fappsecstreetfighter%2F2009%2F10%2F15%2Fadoption-of-x-frame-options-header%2F&amp;title=Adoption+of+X-FRAME-OPTIONS+header&amp;t=1 ' height='18' width='120' scrolling='no' frameborder='0' ></iframe></td> <td><script type="text/javascript"><!--yahooBuzzArticleHeadline=Adoption+of+X-FRAME-OPTIONS+header;//--></script><script type="text/javascript" src="http://d.yimg.com/ds/badge2.js" badgetype=small-votes></script></td></table></div><!-- Generated by Digg Digg plugin, 
    Author : Yong Mook Kim
    Website : http://www.mkyong.com/blog/digg-digg-wordpress-plugin/
	-->]]></content:encoded>
			<wfw:commentRss>http://blogs.sans.org/appsecstreetfighter/2009/10/15/adoption-of-x-frame-options-header/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Response: Pentesting Coverage.</title>
		<link>http://blogs.sans.org/appsecstreetfighter/2009/10/03/response-pentesting-coverage/</link>
		<comments>http://blogs.sans.org/appsecstreetfighter/2009/10/03/response-pentesting-coverage/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 00:34:07 +0000</pubDate>
		<dc:creator>Johannes Ullrich</dc:creator>
				<category><![CDATA[Pentest]]></category>

		<guid isPermaLink="false">http://blogs.sans.org/appsecstreetfighter/?p=3111</guid>
		<description><![CDATA[The person I had the IM discussion with was Daniel Miessler. He responded in his own blog, and sent me the excerpt below as a response. Thanks for the offline and online comments to far. Certainly an interesting topic to discus!]]></description>
			<content:encoded><![CDATA[<blockquote><p>The person I had the IM discussion with was Daniel Miessler. He responded in his own blog, and sent me the excerpt below as a response. Thanks for the offline and online comments to far. Certainly an interesting topic to discus!</p></blockquote>
<p><span id="more-3111"></span></p>
<p>My view is much different than Johannes&#8217;s. I feel the test type he&#8217;s describing is a detailed <em>vulnerability assessment</em>&#8211;not a penetration test. I think the key difference is opacity. He says that he doesn&#8217;t believe in black box testing, and that&#8217;s fine; I too agree that white box testing is far more effective.</p>
<p>But I think very concept of white box vs. black box is, by default, a discussion about vulnerability assessment and not penetration testing because penetration testing <em>implies</em> black box. In other words, you can have a white box or black box vulnerability assessment, but you can only have a black box pentest.</p>
<p>This is because the analog to the pentest (in my opinion) is the elite military unit commissioned to test a military base&#8217;s security. See <a href="http://en.wikipedia.org/wiki/Tiger_team" title="Tiger team - Wikipedia, the free encyclopedia">Tiger Team</a>. Many readers may remember <a href="http://www.dickmarcinko.com/" title="DickMarcinko.com - Rogue Warrior">Richard Marcinko</a>, from SEAL Team 6 who used to break in and kidnap Admirals and hijack nuclear subs. <strong>This is a pentest in my view&#8211;you are given a single goal by the client: &#8220;get as far as you can&#8221;, or &#8220;see what you can get out of my database&#8221; or &#8220;try and modify my payroll records&#8221;</strong>.</p>
<p>The mission of the pentest team is to achieve the goal that has been given&#8211;not to find all (or even many) vulnerabilities in the target&#8217;s defenses. Any vulnerability assessment that takes place against the target will be solely for the purpose of finding a way in&#8211;nothing more. And if they get in on the first try, and accomplish the goal, then the report will indicate as much.</p>
<p>The report will state how they got in, what the customer should do to shore things up from that vector, and perhaps mention a few other things in passing. But it won&#8217;t be a comprehensive review of the customer&#8217;s security posture. That would be a separate engagement&#8211;a *vulnerability assessment* engagement.</p>
<h2>Main Points</h2>
<p>So here are my main propositions:</p>
<ul>
<li>A vulnerability assessment focuses on breadth: the goal is to identify as many issues as possible. This is why white box VAs are generally a superior option if the testing team is skilled enough to provide one.</li>
<li>A penetration test focuses on depth, not breadth: the focus is on achieving a pre-determined goal that could only be possible if security were to fail, and not to find vulnerabilities. Vulnerabilities are <em>used</em> in a pentest, but they aren&#8217;t the focus. The focus is achieving the pre-determined goal.</li>
<li>Vulnerability Assessments are (or should be) requisitioned by those who already know they have many issues and simply need help identifying and prioritizing them. The more issues identified the better, so naturally a white box approach should be embraced when possible.</li>
<li>Penetration Tests should only be commissioned as a final stage of a security program, by those who believe their security program is mature, functioning well, and wish to test it against an adversary. It is, by nature, black box because the goal is to simulate a real-world attacker.</li>
</ul>
<p>My complete post on the topic can be found <a href="http://danielmiessler.com/blog/infosec-vulnerability-assessment-vs-penetration-test">here</a>.</p>
<div><table > <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http%3A%2F%2Fblogs.sans.org%2Fappsecstreetfighter%2F2009%2F10%2F03%2Fresponse-pentesting-coverage%2F&amp;t=Response%3A+Pentesting+Coverage.&amp;s=compact' height='18' width='120' frameborder='0' scrolling='no'></iframe></td> <td><iframe src='http://www.reddit.com/button_content?newwindow=1&amp;url=http%3A%2F%2Fblogs.sans.org%2Fappsecstreetfighter%2F2009%2F10%2F03%2Fresponse-pentesting-coverage%2F&amp;title=Response%3A+Pentesting+Coverage.&amp;t=1 ' height='18' width='120' scrolling='no' frameborder='0' ></iframe></td> <td><script type="text/javascript"><!--yahooBuzzArticleHeadline=Response%3A+Pentesting+Coverage.;//--></script><script type="text/javascript" src="http://d.yimg.com/ds/badge2.js" badgetype=small-votes></script></td></table></div><!-- Generated by Digg Digg plugin, 
    Author : Yong Mook Kim
    Website : http://www.mkyong.com/blog/digg-digg-wordpress-plugin/
	-->]]></content:encoded>
			<wfw:commentRss>http://blogs.sans.org/appsecstreetfighter/2009/10/03/response-pentesting-coverage/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pentesting: Do you need &#8220;coverage&#8221; ?</title>
		<link>http://blogs.sans.org/appsecstreetfighter/2009/09/30/pentesting-do-you-need-coverage/</link>
		<comments>http://blogs.sans.org/appsecstreetfighter/2009/09/30/pentesting-do-you-need-coverage/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 23:45:14 +0000</pubDate>
		<dc:creator>Johannes Ullrich</dc:creator>
				<category><![CDATA[Pentest]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[penetration testing]]></category>

		<guid isPermaLink="false">http://blogs.sans.org/appsecstreetfighter/?p=3086</guid>
		<description><![CDATA[Is a pentest done after you got root? Or is this just the start of finding even more vulnerabilities? In my opinion, a pentest should aim at finding as many vulnerabilities as possible.]]></description>
			<content:encoded><![CDATA[<p>Last week, I had a discussion via instant messenger. The discussion essentially evolved around the need for coverage in a pentest. It has always been my conviction that a pentest should find as many problems as possible. In my opinion, the pentest is not over once I got root on the system. In many ways, this is where it starts.</p>
<p>I think it is a matter of pentesting philosophy. I see myself primarily as a coder. A pentest is for me part of my software testing regimen. Like my other tests, code coverage is of utmost importance. I don&#8217;t consider my application working until it has been fully and thoroughly tested. A pentest is just another, very special, test I subject my code to. As a result, I am not a big fan of &#8220;black box&#8221; testing, or &#8220;early dawn raids&#8221; as I call them. They may find a problem, but the tester will typically waste a lot of time finding and exploiting vulnerabilities, which may have been trivial to exploit with a bit of source code, or after talking to the developer. I rather have the pentester spend their precious time on going after yet another possible vulnerability.</p>
<p>I do understand that a pentest does not find all bugs, but the aim should be to do just that. I strongly believe that a pentester should be held to the same standards as a developer. Would you accept software that works once? Code that only has one bug fixed? Just because it is hard, doesn&#8217;t mean that we shouldn&#8217;t attempt it. In many ways, this is what I enjoy about being a developer: Hard problems.</p>
<p>Is it possible to come close to the goal? I think it is. All of this is based on a good framework and to apply this framework thoroughly. You do your recognicance, and don&#8217;t stop at the first web application you find, unless the scope of the project limits you. Next, you map out the web application, and try to find not just all URLs or &#8220;pages&#8221;, but all features. A feature you miss in the mapping phase will be a feature you miss in your test. Next, you discover vulnerabilities. And finally, you try to exploit them. Once you manage to exploit a vulnerability, you are likely to find more content and your process starts all over again.</p>
<p>Sounds boring and tedious? Yes it is! If you don&#8217;t know how to script. I say this a lot: If you don&#8217;t script, you will soon be replaced by a script. If you want to distinguish yourself as a pentester, you will have to understand your tools well enough to extend them and build upon them.</p>
<div><table > <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http%3A%2F%2Fblogs.sans.org%2Fappsecstreetfighter%2F2009%2F09%2F30%2Fpentesting-do-you-need-coverage%2F&amp;t=Pentesting%3A+Do+you+need+%22coverage%22+%3F&amp;s=compact' height='18' width='120' frameborder='0' scrolling='no'></iframe></td> <td><iframe src='http://www.reddit.com/button_content?newwindow=1&amp;url=http%3A%2F%2Fblogs.sans.org%2Fappsecstreetfighter%2F2009%2F09%2F30%2Fpentesting-do-you-need-coverage%2F&amp;title=Pentesting%3A+Do+you+need+%22coverage%22+%3F&amp;t=1 ' height='18' width='120' scrolling='no' frameborder='0' ></iframe></td> <td><script type="text/javascript"><!--yahooBuzzArticleHeadline=Pentesting%3A+Do+you+need+%22coverage%22+%3F;//--></script><script type="text/javascript" src="http://d.yimg.com/ds/badge2.js" badgetype=small-votes></script></td></table></div><!-- Generated by Digg Digg plugin, 
    Author : Yong Mook Kim
    Website : http://www.mkyong.com/blog/digg-digg-wordpress-plugin/
	-->]]></content:encoded>
			<wfw:commentRss>http://blogs.sans.org/appsecstreetfighter/2009/09/30/pentesting-do-you-need-coverage/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Results from Webhoneypot project</title>
		<link>http://blogs.sans.org/appsecstreetfighter/2009/09/18/results-from-webhoneypot-project/</link>
		<comments>http://blogs.sans.org/appsecstreetfighter/2009/09/18/results-from-webhoneypot-project/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 22:32:03 +0000</pubDate>
		<dc:creator>Jason Lam</dc:creator>
				<category><![CDATA[honeypot]]></category>

		<guid isPermaLink="false">http://blogs.sans.org/appsecstreetfighter/?p=3056</guid>
		<description><![CDATA[The SANS ISC Webhoneypot project was started over a year ago and the client had been in public beta since June. We have been collecting data from honeypots since January. The goal of the project is to collect quantitative data about the prevalence of large scale automated attacks.
We are now ready to share some collected [...]]]></description>
			<content:encoded><![CDATA[<p>The SANS ISC Webhoneypot project was started over a year ago and the client had been in public beta since June. We have been collecting data from honeypots since January. The goal of the project is to collect quantitative data about the prevalence of large scale automated attacks.</p>
<p>We are now ready to share some collected data with the community. Our intention is to share the data and findings with the community in the same manner as the original DShield project.</p>
<p>The high level stats of the Webhoneypot can be found at<br />
<a href="http://isc.sans.org/weblogs/">http://isc.sans.org/weblogs/</a></p>
<p>Various reports can be found at<br />
<a href="http://isc.sans.org/weblogs/reports.html">http://isc.sans.org/weblogs/reports.html</a></p>
<p>A limited search interface can be found at<br />
<a href="http://isc.sans.org/weblogs/filter.html">http://isc.sans.org/weblogs/filter.html</a></p>
<p>These report pages and especially the search interface is in beta currently. We intend to refine these as the project matures. We appreciate any feedback on these reports and search capabilities.</p>
<p>Feel free to analyze the data as you wish, if you spot anything interesting, please write to us. Thanks and happy log reading.</p>
<div><table > <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http%3A%2F%2Fblogs.sans.org%2Fappsecstreetfighter%2F2009%2F09%2F18%2Fresults-from-webhoneypot-project%2F&amp;t=Results+from+Webhoneypot+project&amp;s=compact' height='18' width='120' frameborder='0' scrolling='no'></iframe></td> <td><iframe src='http://www.reddit.com/button_content?newwindow=1&amp;url=http%3A%2F%2Fblogs.sans.org%2Fappsecstreetfighter%2F2009%2F09%2F18%2Fresults-from-webhoneypot-project%2F&amp;title=Results+from+Webhoneypot+project&amp;t=1 ' height='18' width='120' scrolling='no' frameborder='0' ></iframe></td> <td><script type="text/javascript"><!--yahooBuzzArticleHeadline=Results+from+Webhoneypot+project;//--></script><script type="text/javascript" src="http://d.yimg.com/ds/badge2.js" badgetype=small-votes></script></td></table></div><!-- Generated by Digg Digg plugin, 
    Author : Yong Mook Kim
    Website : http://www.mkyong.com/blog/digg-digg-wordpress-plugin/
	-->]]></content:encoded>
			<wfw:commentRss>http://blogs.sans.org/appsecstreetfighter/2009/09/18/results-from-webhoneypot-project/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Various PHP and MySQL pitfalls</title>
		<link>http://blogs.sans.org/appsecstreetfighter/2009/07/13/various-php-and-mysql-pitfalls/</link>
		<comments>http://blogs.sans.org/appsecstreetfighter/2009/07/13/various-php-and-mysql-pitfalls/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 18:00:18 +0000</pubDate>
		<dc:creator>Johannes Ullrich</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://blogs.sans.org/appsecstreetfighter/?p=3036</guid>
		<description><![CDATA[This is a short post, to summarize some of the issues I see with PHP code and the use of MySQL. Not too many people know about these pitfalls and they are given rise to some of the more subtle security issues:
1 &#8211; &#8220;SQL Overflow&#8221;
If a value you insert into a column is too large, [...]]]></description>
			<content:encoded><![CDATA[<p>This is a short post, to summarize some of the issues I see with PHP code and the use of MySQL. Not too many people know about these pitfalls and they are given rise to some of the more subtle security issues:</p>
<p>1 &#8211; &#8220;SQL Overflow&#8221;</p>
<p>If a value you insert into a column is too large, it is truncated silently. This can lead to security issues if you don&#8217;t validate that the submitted string is of the right length.</p>
<p>2 &#8211; &#8220;Trailing White Space Ambiguity&#8221;</p>
<p>Trailing white spaces are removed by MySQL silently. For example, these two queries retrieve the same result:</p>
<pre>select role from user where username='Admin';
select role from user where username='Admin   ';   (note the space at the end).</pre>
<p>3 &#8211; Unbalanced comments</p>
<p>Older versions of MySQL allow /* to be used unbalanced. For example,</p>
<p>select now() /* test</p>
<p>will work. Newer versions of MySQL require balanced comments (unbalanced was always &#8220;illegal&#8221; according to the documentation</p>
<p>4 &#8211; php &#8216;rand()&#8217; function returns bad results</p>
<p>If the argument exceeds the maximum integer, you will get not-so random numbers back. This one depends a bit on the version of PHP you are using. But you will not get an error. Instead, you will get negative numbers, or numbers that are not random (e.g. only last couple of digits change).</p>
<p>5 &#8211; MySQL &#8220;&#8211;&#8221; comments require a white space</p>
<p>In order to use &#8220;&#8211;&#8221; as a comment, it has to be followed by a whitespace.</p>
<p>select now() &#8211;test  will fail<br />
select now() &#8212; test will work</p>
<p>You don&#8217;t have to use a space. A tab will work just fine and evades some filters.</p>
<p>Got some to add? Use the comments <img src='http://blogs.sans.org/appsecstreetfighter/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<div><table > <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http%3A%2F%2Fblogs.sans.org%2Fappsecstreetfighter%2F2009%2F07%2F13%2Fvarious-php-and-mysql-pitfalls%2F&amp;t=Various+PHP+and+MySQL+pitfalls&amp;s=compact' height='18' width='120' frameborder='0' scrolling='no'></iframe></td> <td><iframe src='http://www.reddit.com/button_content?newwindow=1&amp;url=http%3A%2F%2Fblogs.sans.org%2Fappsecstreetfighter%2F2009%2F07%2F13%2Fvarious-php-and-mysql-pitfalls%2F&amp;title=Various+PHP+and+MySQL+pitfalls&amp;t=1 ' height='18' width='120' scrolling='no' frameborder='0' ></iframe></td> <td><script type="text/javascript"><!--yahooBuzzArticleHeadline=Various+PHP+and+MySQL+pitfalls;//--></script><script type="text/javascript" src="http://d.yimg.com/ds/badge2.js" badgetype=small-votes></script></td></table></div><!-- Generated by Digg Digg plugin, 
    Author : Yong Mook Kim
    Website : http://www.mkyong.com/blog/digg-digg-wordpress-plugin/
	-->]]></content:encoded>
			<wfw:commentRss>http://blogs.sans.org/appsecstreetfighter/2009/07/13/various-php-and-mysql-pitfalls/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Session Attacks and PHP &#8211; Part 2</title>
		<link>http://blogs.sans.org/appsecstreetfighter/2009/06/29/session-attacks-and-php-part-2/</link>
		<comments>http://blogs.sans.org/appsecstreetfighter/2009/06/29/session-attacks-and-php-part-2/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 12:27:35 +0000</pubDate>
		<dc:creator>Johannes Ullrich</dc:creator>
				<category><![CDATA[Sessions]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">https://blogs.sans.org/appsecstreetfighter/?p=3006</guid>
		<description><![CDATA[Yes, I will talk in this article about why it is not good to leave your session files in /tmp. But first, allow me to follow Jason&#8217;s lead and talk about the attacks he discussed in Part 2 of his ASP.NET article. I will keep it short  
Session fixation isn&#8217;t really that much of [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, I will talk in this article about why it is not good to leave your session files in /tmp. But first, allow me to follow Jason&#8217;s lead and talk about the attacks he discussed in <a href="http://blogs.sans.org/appsecstreetfighter/2009/06/25/argument-for-database-encryption-in-web-apps/">Part 2</a> of his ASP.NET article. I will keep it short <img src='http://blogs.sans.org/appsecstreetfighter/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Session fixation isn&#8217;t really that much of a problem as long as you stick with a few simple principles. Remember we called this blog &#8220;App Sec <em>Streetfighter</em>&#8220;? Its about simple and reproducible techniques that work while under attack. So lets keep it simple:</p>
<ol>
<li>Use only cookies to transport the session token. This considerably raises the bar on session fixation. The attacker now has to set a cookie which isn&#8217;t easy at all.</li>
<li>Change the session ID whenever the users state changes (logged in vs. logged out).</li>
<li>Change the session ID every so often. (every X pageviews, every X minutes).</li>
</ol>
<p>In order to change the session id, PHP offers a simple comand, <em>session_regenerate_id</em>, just add it to your header and you will get a new session ID on every page. If that works for you: great!.  If it causes performance issues, then add some logic to limit the life time of sessions or add the <em>session_regenerate_id</em> whenever the user logs in and out.</p>
<p>One important caveat for <em>session_regenerate_id</em>: It uses one parameter. Set it to &#8220;<em>true</em>&#8220;. The default is &#8220;<em>false</em>&#8220;, which will leave the old session intact.</p>
<p>Now to the part everybody appears to be waiting for: Why not /tmp ?</p>
<p>/tmp is a convinient location for session data. Every Unix system I have seen has a /tmp directory that is globally readable and writable. But this is just the problem for session data. The file name itself gives away the session ID. A listing of all session files will give an attacker a list of all valid sessions. In most dedicated web server scenarios, the risk of leaking /tmp file names is low. But the defense is simple enough to &#8220;just do it&#8221; &#8482; :</p>
<ul>
<li>Create a directory which will only hold session data (let&#8217;s call it /tmp/phpsessions).</li>
<li>This directory should NOT be owned by the apache user, but by root and the apache user&#8217;s group.</li>
<li>Set permissions to 770. Sadly, 760 is not possible. Theoretically, it should work. PHP (the web server) doesn&#8217;t really need to be able to get a list of valid sessions. But sessions will fail if you set the permissions to 760.</li>
</ul>
<p>I typically prefer to keep my sessions in a database, less for security reasons but more for scalability. <a href="http://phpslacker.com/2009/03/02/php-session-clustering-with-memcache/http://phpslacker.com/2009/03/02/php-session-clustering-with-memcache/">Memcached sessions</a> is an other great way to get sessions to scale.</p>
<div><table > <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http%3A%2F%2Fblogs.sans.org%2Fappsecstreetfighter%2F2009%2F06%2F29%2Fsession-attacks-and-php-part-2%2F&amp;t=Session+Attacks+and+PHP+-+Part+2&amp;s=compact' height='18' width='120' frameborder='0' scrolling='no'></iframe></td> <td><iframe src='http://www.reddit.com/button_content?newwindow=1&amp;url=http%3A%2F%2Fblogs.sans.org%2Fappsecstreetfighter%2F2009%2F06%2F29%2Fsession-attacks-and-php-part-2%2F&amp;title=Session+Attacks+and+PHP+-+Part+2&amp;t=1 ' height='18' width='120' scrolling='no' frameborder='0' ></iframe></td> <td><script type="text/javascript"><!--yahooBuzzArticleHeadline=Session+Attacks+and+PHP+-+Part+2;//--></script><script type="text/javascript" src="http://d.yimg.com/ds/badge2.js" badgetype=small-votes></script></td></table></div><!-- Generated by Digg Digg plugin, 
    Author : Yong Mook Kim
    Website : http://www.mkyong.com/blog/digg-digg-wordpress-plugin/
	-->]]></content:encoded>
			<wfw:commentRss>http://blogs.sans.org/appsecstreetfighter/2009/06/29/session-attacks-and-php-part-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Response to Nielsen&#8217;s &#8220;Stop Password Masking&#8221;</title>
		<link>http://blogs.sans.org/appsecstreetfighter/2009/06/28/response-to-nielsens-stop-password-masking/</link>
		<comments>http://blogs.sans.org/appsecstreetfighter/2009/06/28/response-to-nielsens-stop-password-masking/#comments</comments>
		<pubDate>Sun, 28 Jun 2009 11:00:19 +0000</pubDate>
		<dc:creator>Jason Montgomery</dc:creator>
				<category><![CDATA[Authentication]]></category>
		<category><![CDATA[identity]]></category>
		<category><![CDATA[passwords]]></category>
		<category><![CDATA[risk]]></category>

		<guid isPermaLink="false">https://blogs.sans.org/appsecstreetfighter/?p=1556</guid>
		<description><![CDATA[I just ran across Jakob Nielsen&#8217;s Alert Box post titled Stop Password Masking and wanted to provide some feedback from a security vs. usability perspective. I have great respect for Nielsen&#8217;s contribution to the usability of the web. Back in the early days of the internet (mid 1990&#8217;s), his books were gospel at my consulting [...]]]></description>
			<content:encoded><![CDATA[<p>I just ran across <a href="http://en.wikipedia.org/wiki/Jakob_Nielsen_%28usability_consultant%29" target="_blank">Jakob Nielsen</a>&#8217;s <a href="http://www.useit.com/alertbox/" target="_blank">Alert Box</a> post titled <a href="http://www.useit.com/alertbox/passwords.html" target="_blank">Stop Password Masking</a> and wanted to provide some feedback from a security vs. usability perspective. I have great respect for Nielsen&#8217;s contribution to the usability of the web. Back in the early days of the internet (mid 1990&#8217;s), his books were gospel at my consulting firm, <a href="http://www.atgi.com" target="_blank">ATGi</a>.</p>
<p>My initial reaction to his article was &#8216;that&#8217;s a crazy idea&#8217; &#8211; but after some reflection, I really felt like it was a good mental exercise to actually consider what he was saying. If I hadn&#8217;t known who Nielsen was, I probably would have dismissed his suggestion outright. Sometimes it is a good exercise to go back and review why we do the things we do &#8211; especially as it relates to information security controls. Nielsen questions the real security benefit of password masking &#8211; something I haven&#8217;t given a second thought to&#8230;well, ever.</p>
<blockquote>
<p style="padding-left: 30px"><em><strong>&#8220;Typically, masking passwords doesn&#8217;t even increase security, but it does cost you business due to login failures.&#8221;</strong></em></p>
</blockquote>
<p>Nielsen&#8217;s probably right: It might be costing you business. The question is, how much business? Security shouldn&#8217;t be the be-all, end-all goal. It&#8217;s there to serve the organization first and foremost. Viewing the cost  of security controls with respect to  the function it&#8217;s protecting is the correct perspective. Enter risk analysis &#8211; risk analysis is an important process that helps determine if the cost of having (or not having) a security control mitigates threats, while not adversely affecting the business (too much). It&#8217;s about reducing risk to an acceptable level, not about 100% security. It&#8217;s a balancing act. Why not target 100% security? Well, if an organization attempted to implement absolute security, it&#8217;d go out of business &#8211; it&#8217;s just too expensive. For example, it doesn&#8217;t make sense to spend a million dollars on security solutions that will protect a web site that only earns a few thousands dollars a month.</p>
<p>Again, Nielsen pretty much has it right- except for the &#8216;true loss of security&#8217; statement:</p>
<blockquote>
<p style="padding-left: 30px"><em><strong>&#8220;The more uncertain users feel about typing passwords, the more likely they are to (a) employ overly simple passwords and/or (b) copy-paste passwords from a file on their computer. Both behaviors lead to a true loss of security.&#8221;</strong></em></p>
</blockquote>
<p>Next Nielsen gives a nod to the importance of security and provides an option for masks that takes security into consideration:</p>
<blockquote>
<p style="padding-left: 30px"><em><strong>&#8220;Yes, users are sometimes truly at risk of having bystanders spy on their passwords, such as when they&#8217;re using an Internet cafe. It&#8217;s therefore worth offering them a checkbox to have their passwords masked; for high-risk applications, such as bank accounts, you might even check this box by default. In cases where there&#8217;s a tension between security and usability, sometimes security should win.&#8221;</strong></em></p>
</blockquote>
<p>Though I would go further than Nielsen: Users, unless forced, won&#8217;t use a complex password even if there is no mask, unless complexity is enforced. If complexity is enforced, a non-masked textbox would certainly help the user meet complexity requirements more easily &#8211; which is probably what Nielsen means. Likewise, when presented with an option for masked password or not masked &#8211; users typically chose convenience over security so in most cases I would want to default the option to show the mask.</p>
<p>Using simple passwords or &#8216;copy-paste passwords&#8217; is not NECESSARILY a &#8216;true loss of security&#8217;, but the devil&#8217;s in the details.</p>
<p>The loss of security for &#8216;copy-paste password&#8217; scenarios (which assumes users are storing passwords locally in a file of some sort) assumes a local computer or local network compromise. If so, he&#8217;s correct &#8211; the gig is up, but that&#8217;s not necessarily a <em><strong>true </strong></em>loss of security&#8230;well, it IS for the ONE compromised user (or network of users) &#8211; but not for all the users of that web site. The main reason we insist on password complexity is increase the keyspace of a password which helps stop brute force and dictionary attacks that originate from attackers &#8220;out there&#8221; who don&#8217;t require access to the user&#8217;s computer to begin with. The attacker attempts to find a collision with a password for a known account through a dictionary attack and if they have more time, a brute force attack. Additionally, Password Manager Software (<a href="http://keepass.info/" target="_blank">KeePass</a> or <a href="http://passwordsafe.sourceforge.net/" target="_blank">Password Safe</a>) will encrypt password stores locally and even associate them automatically with the appropriate web site. Though I suspect the use of password management tools is the exception, not the rule.</p>
<p>As for users choosing too simple of a password: If the site allows users to pick an insecure password, that&#8217;s already a  failure of the site. But it&#8217;s possible to have both a simple password as well as a secure password. Contrary to common belief, good passwords don&#8217;t necessarily have to contain symbols, digits, upper and lower case characters.  The reason these complexity requirements were introduced was to protect against <a href="http://en.wikipedia.org/wiki/Brute_force_attack" target="_blank">brute force attacks</a> as well as <a href="http://en.wikipedia.org/wiki/Dictionary_attack" target="_blank">dictionary attacks</a> on shorter passwords. Humans have a natural propensity to use simple dictionary words that are easy to remember &#8211; such as names, meaningful numbers/dates, pet names, etc., as passwords &#8211; hackers take advantage of this seemingly reasonable behavior and use it to their advantage. By adding complexity &#8211; that is, the symbols, digits, upper/lower characters &#8211; this makes the dictionary attacks more expensive (time consuming) to the attacker since each time we increase the length and the number of possible combinations, this increases the keyspace of the password. So if instead of increasing the combinations, instead increase the password length and use a simple phrase or sentence as the password. These long passwords with less complexity are called a <a href="http://en.wikipedia.org/wiki/Passphrase" target="_blank">passphrase</a>. Dictionary attacks are useless against passphrases since they are not made up of a dictionary words. By increasing the keyspace by requiring a minimum of 30 normal alpha characters (including spaces and maybe an optional  period or comma) we&#8217;ve also made it very expensive (time consuming) to brute force. So my passphrase could be &#8220;my name is jason and this is my password.&#8221; &#8211; this is 40+ characters and no more difficult to remember than a dictionary word &#8211; but it&#8217;s not found in any dictionary so it will stop dictionary attacks and it has a very large keyspace so it will slow down brute force attacks considerably, making them impractical.</p>
<p>A true loss of security? It doesn&#8217;t have to be &#8211; at least not for the organization. However, I can already hear Nielsen groaning on the usability of typing 40+ characters blindly into a masked password box. <img src='http://blogs.sans.org/appsecstreetfighter/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  This is where <a href="http://en.wikipedia.org/wiki/Two-factor_authentication" target="_blank">two-factor authentication</a> can solve the problem of passwords and passphrases completely &#8211; which can really improve usability.</p>
<p>Nielsen&#8217;s observation about typing in passwords on mobile devices makes the most sense to me. It is more difficult to shoulder surf someone on a mobile device. It&#8217;s also much more difficult to type a password with complexity requirements correctly on a mobile device unless you&#8217;re a profession texter. There&#8217;s probably not as much risk here by unmasking, so we could probably forgo the mask on mobile devices.   It&#8217;s trivial to detect mobile devices, so simple choosing to use a non-masked text box in these situations would be okay for most situations.</p>
<p>But before we go running to dump the masked password box, there&#8217;s a few questions we must ask &#8211; what are the unintended side-effects of this change? Are there good workarounds to these issues? How much education do developers need to implement this? Remember, we&#8217;ve known about and had solutions to SQL Injection for over 10 years now, yet there&#8217;s still a constant barrage of developers who still don&#8217;t know how to protect against this properly &#8211; this is an education problem.</p>
<p>Here&#8217;s my initial pass of issues I see by displaying (not masking) passwords to end users:</p>
<ol>
<li><strong>Accidental observation </strong>- in the enterprise there are many opportunities where someone else will be at your computer and may accidentally see your password. A great example of this is when using older command line programs that required the password as an argument. I&#8217;ve on occasion seen others&#8217; passwords and others have seen mine.</li>
<li><strong>Autocomplete Web Forms</strong> &#8211; Modern web browsers now remember and prefill text boxes with previously used input. This is a usability feature at the expense of privacy/security. This means the password is stored not only  in the OS somewhere for retrieval later, but will pop-up anytime a user starts typing in the textbox. This has the most serious implications on public systems. Developers, if aware of the issue, can prevent this data from being stored by setting the autocomplete attribute to off in the form. This is a developer educational issue.</li>
<li><strong>Compliance</strong> &#8211; I don&#8217;t want to get into all the details here, but bad password management practices can cause compliance issues. Lack of compliance can affect business. Not masking passwords may be in violation of certain security requirements for the organization.</li>
<li><strong>Nuanced Issues </strong>- there are potentially a variety of issues for every masked password box implementation &#8211; for instance, in .NET for Windows Applications, there&#8217;s a way to encrypt passwords in memory (using the System.Security.SecureString object). Displaying the characters in the textbox first may completely defeat the security provided by this control.</li>
<li><strong>What else? </strong>- Are there other issues here?</li>
</ol>
<p>Certainly a usability guy isn&#8217;t going to or need to understand all the ins and outs of security, just as I won&#8217;t understand the broad range of usability issues.  We should be cautious when recommending broad sweeping changes that affect security. Additionally, us security folks should not resist usability improvements that affect security just because we&#8217;ve always done things another way &#8211; we should have a good solid business reasons why we do things the way we do. We need to make sure changes can continue to protect our customers/users. Changes to security functionality can often cause unintended side-effects that can put us at risk.  Not that there isn&#8217;t a good solution &#8211; to me, the most IDEAL solution to improve usability would be to dump passwords as the authentication mechanism all together &#8211; there are some partial solutions to this problem, but Identification is a difficult problem to solve &#8211; we&#8217;re definitely not there yet.  Personally, I look forward to the day where authentication, passwords, and password management all become a thing of the past, but that&#8217;s a completely different conversation.</p>
<div><table > <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http%3A%2F%2Fblogs.sans.org%2Fappsecstreetfighter%2F2009%2F06%2F28%2Fresponse-to-nielsens-stop-password-masking%2F&amp;t=Response+to+Nielsen%27s+%22Stop+Password+Masking%22&amp;s=compact' height='18' width='120' frameborder='0' scrolling='no'></iframe></td> <td><iframe src='http://www.reddit.com/button_content?newwindow=1&amp;url=http%3A%2F%2Fblogs.sans.org%2Fappsecstreetfighter%2F2009%2F06%2F28%2Fresponse-to-nielsens-stop-password-masking%2F&amp;title=Response+to+Nielsen%27s+%22Stop+Password+Masking%22&amp;t=1 ' height='18' width='120' scrolling='no' frameborder='0' ></iframe></td> <td><script type="text/javascript"><!--yahooBuzzArticleHeadline=Response+to+Nielsen%27s+%22Stop+Password+Masking%22;//--></script><script type="text/javascript" src="http://d.yimg.com/ds/badge2.js" badgetype=small-votes></script></td></table></div><!-- Generated by Digg Digg plugin, 
    Author : Yong Mook Kim
    Website : http://www.mkyong.com/blog/digg-digg-wordpress-plugin/
	-->]]></content:encoded>
			<wfw:commentRss>http://blogs.sans.org/appsecstreetfighter/2009/06/28/response-to-nielsens-stop-password-masking/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Argument for Database encryption in web apps</title>
		<link>http://blogs.sans.org/appsecstreetfighter/2009/06/25/argument-for-database-encryption-in-web-apps/</link>
		<comments>http://blogs.sans.org/appsecstreetfighter/2009/06/25/argument-for-database-encryption-in-web-apps/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 12:34:06 +0000</pubDate>
		<dc:creator>Jason Lam</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[defense]]></category>
		<category><![CDATA[encryption]]></category>

		<guid isPermaLink="false">http://blogs.sans.org/appsecstreetfighter/?p=591</guid>
		<description><![CDATA[I regularly get consulted on various web application security issues and defensive strategies. One of the recent &#8220;frequently asked questions&#8221; is around database encryption of web application. My answers to these kind of questions usually lead to awkward looking faces. I always start off asking more questions about the requirements, &#8220;Who are you trying to [...]]]></description>
			<content:encoded><![CDATA[<p>I regularly get consulted on various web application security issues and defensive strategies. One of the recent &#8220;frequently asked questions&#8221; is around database encryption of web application. My answers to these kind of questions usually lead to awkward looking faces. I always start off asking more questions about the requirements, &#8220;Who are you trying to protect the data from?&#8221; and &#8220;What data are you trying to protect?&#8221;  The  answers to those questions are usually good indicator whether the person is on the right path or not.</p>
<p>In most cases, database encryption does not prevent the hacker from accessing the backend database via an application compromisse. The reasoning is very simple. If the web application needs to be able to access the data for normal operation and hackers are able to compromise the application, the hackers can essentially access the same data by controlling the applicaton (attacker owns the application). Encryption does not prevent a hacker to access the backend database if the hacker can control the application.</p>
<p>Some may argue that if the database encryption is per user based, then one user&#8217;s compromise does not lead to compromise of another user&#8217;s data. That is very valid but that usually requires authentication of the user to some backend pieces (or the database itself). Maybe authentication alone is sufficient for the security requirement? The database can provide access control based on user&#8217;s identity so one user&#8217;s compromise does not lead to access to other user&#8217;s data.</p>
<p>You might think I am an anti-encryption person. The fact is &#8211; I am not. Encryption totally has its place for web application security reasons. Asymmetric encryption usage to protect data that is &#8220;one way&#8221; in nature is a good example. As a retail store trying to store the user&#8217;s credit card details for recurring monthly payment, the data should be encrypted with asymmetric encryption so that the Web frontend can never read the data back but another party with another related key can. Also, there are numerous other scenario where encryption should be used, such as backup, protecting against rogue DB administrators and against physical theft of database machine.</p>
<p>I often recommend a threat risk assessment before deciding on the database encryption solution. That would allow you to quickly understand the threats that affect the web application and also  possible countermeasures that can help protect against the threat. Due to the cost of deploying and maintaining database encryption, I am seeing very limited deployment of database encryption, most folks tend to turn to other alternatives for risk mitigation.</p>
<p>Encryption is a useful defensive technology that can help protect the web application but it is not a silver bullet, blindly deploying it may not address any threats that you are trying to mitigate. The managers and auditors tend to request these technologies to be deployed to defend against web application compromise after seeing another competitor getting compromised thru web application security flaws (eg. SQL injection). Encryption is likely not the best choice of defensive technology given the scenario.</p>
<div><table > <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http%3A%2F%2Fblogs.sans.org%2Fappsecstreetfighter%2F2009%2F06%2F25%2Fargument-for-database-encryption-in-web-apps%2F&amp;t=Argument+for+Database+encryption+in+web+apps&amp;s=compact' height='18' width='120' frameborder='0' scrolling='no'></iframe></td> <td><iframe src='http://www.reddit.com/button_content?newwindow=1&amp;url=http%3A%2F%2Fblogs.sans.org%2Fappsecstreetfighter%2F2009%2F06%2F25%2Fargument-for-database-encryption-in-web-apps%2F&amp;title=Argument+for+Database+encryption+in+web+apps&amp;t=1 ' height='18' width='120' scrolling='no' frameborder='0' ></iframe></td> <td><script type="text/javascript"><!--yahooBuzzArticleHeadline=Argument+for+Database+encryption+in+web+apps;//--></script><script type="text/javascript" src="http://d.yimg.com/ds/badge2.js" badgetype=small-votes></script></td></table></div><!-- Generated by Digg Digg plugin, 
    Author : Yong Mook Kim
    Website : http://www.mkyong.com/blog/digg-digg-wordpress-plugin/
	-->]]></content:encoded>
			<wfw:commentRss>http://blogs.sans.org/appsecstreetfighter/2009/06/25/argument-for-database-encryption-in-web-apps/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
