<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: BlueHat review</title>
	<atom:link href="http://www.mikeandrews.com/2008/10/19/bluehat-review/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mikeandrews.com/2008/10/19/bluehat-review/</link>
	<description></description>
	<lastBuildDate>Fri, 09 Apr 2010 12:01:55 -0700</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Microsoft BlueHat v8 &#124; Infosec Events</title>
		<link>http://www.mikeandrews.com/2008/10/19/bluehat-review/comment-page-1/#comment-322</link>
		<dc:creator>Microsoft BlueHat v8 &#124; Infosec Events</dc:creator>
		<pubDate>Mon, 01 Dec 2008 23:29:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.mikeandrews.com/2008/10/19/bluehat-review/#comment-322</guid>
		<description>[...] Bluehat Conference. Gareth Heyes talks about his BlueHat experiences, and Mike Andrews has a great BlueHat summary [...]</description>
		<content:encoded><![CDATA[<p>[...] Bluehat Conference. Gareth Heyes talks about his BlueHat experiences, and Mike Andrews has a great BlueHat summary [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jason Shirk - Microsoft</title>
		<link>http://www.mikeandrews.com/2008/10/19/bluehat-review/comment-page-1/#comment-263</link>
		<dc:creator>Jason Shirk - Microsoft</dc:creator>
		<pubDate>Fri, 24 Oct 2008 04:41:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.mikeandrews.com/2008/10/19/bluehat-review/#comment-263</guid>
		<description>Ari, let me lay out the scenario a little more clearly.  We are particularly talking about file fuzzing in this instance (Network Fuzzing Olympics may be at a future BlueHat).  What we’ve found is that we’re not seeing very good ROI (bugs found/human hours spent) from smart fuzzers.  We’ve been seeing very few new bugs, and in many case fewer bugs overall, from smart vs. dumb fuzzing.  Smart in this case means a fuzzer with a hand-crafted file format specification.  Dumb refers to a fuzzer which consumes a template and has generic format awareness.  Either smart or dumb fuzzers may need CRCs, hashes, and other simple fix-up in order to get penetration.   Two cases where smart fuzzing has paid off are bypassing &quot;gatekeepers,&quot; such as checksums or other initial validations (see earlier reference to fix-up), and automated format awareness, such as the SAGE tool employs.  As Mike states, we have also found that reducing the templates being used by a dumb fuzzer, to get the best code coverage possible in the least number of templates, DOUBLES the effectiveness.  The man power involved per bug is much less to fuzz this way than writing file format specs.

Now, some direct answers to your questions:

1)	No, the target apps were not already tested with a smart fuzzer.  We chose a binary parser and a text parser which hadn’t been fuzzed before, so we weren’t retreading old ground.  We’ve also done additional smart vs. dumb testing on some older parsers, and the results were similar.  We’ve tested a number of internal AND external tools to try to normalize across fuzzers that may not be very good.
2)	We tested file parsers, and granted, state doesn’t matter quite as much as it would for protocols.  It still takes a lot of man power to build format specs for a network protocol.  In addition to smart fuzzing, there are a number or MiTM fuzzers that allow for random manipulation in-line between host and client, after a simple capture/proxy setup.  

As I understand your tool, you&#039;ve already done the work for a customer in making it intelligent, and so their investment is &lt;i&gt;x numbers of &lt;b&gt;dollars&lt;/b&gt;&lt;/i&gt;, and some training, not building a format spec from scratch (&lt;b&gt;&lt;i&gt;human hours&lt;/b&gt;&lt;/i&gt;).    You’ve essentially amortized the cost of building the formats across a large customer base, and your software finds bugs. For many folks, this makes good sense.  

The presentation will be available for public viewing on technet before too long.  :)

p.s.  Ari, if you want to chat, ask Juha, Josh, or Heikki for my contact info.</description>
		<content:encoded><![CDATA[<p>Ari, let me lay out the scenario a little more clearly.  We are particularly talking about file fuzzing in this instance (Network Fuzzing Olympics may be at a future BlueHat).  What we’ve found is that we’re not seeing very good ROI (bugs found/human hours spent) from smart fuzzers.  We’ve been seeing very few new bugs, and in many case fewer bugs overall, from smart vs. dumb fuzzing.  Smart in this case means a fuzzer with a hand-crafted file format specification.  Dumb refers to a fuzzer which consumes a template and has generic format awareness.  Either smart or dumb fuzzers may need CRCs, hashes, and other simple fix-up in order to get penetration.   Two cases where smart fuzzing has paid off are bypassing &#8220;gatekeepers,&#8221; such as checksums or other initial validations (see earlier reference to fix-up), and automated format awareness, such as the SAGE tool employs.  As Mike states, we have also found that reducing the templates being used by a dumb fuzzer, to get the best code coverage possible in the least number of templates, DOUBLES the effectiveness.  The man power involved per bug is much less to fuzz this way than writing file format specs.</p>
<p>Now, some direct answers to your questions:</p>
<p>1)	No, the target apps were not already tested with a smart fuzzer.  We chose a binary parser and a text parser which hadn’t been fuzzed before, so we weren’t retreading old ground.  We’ve also done additional smart vs. dumb testing on some older parsers, and the results were similar.  We’ve tested a number of internal AND external tools to try to normalize across fuzzers that may not be very good.<br />
2)	We tested file parsers, and granted, state doesn’t matter quite as much as it would for protocols.  It still takes a lot of man power to build format specs for a network protocol.  In addition to smart fuzzing, there are a number or MiTM fuzzers that allow for random manipulation in-line between host and client, after a simple capture/proxy setup.  </p>
<p>As I understand your tool, you&#8217;ve already done the work for a customer in making it intelligent, and so their investment is <i>x numbers of <b>dollars</b></i>, and some training, not building a format spec from scratch (<b><i>human hours</i></b>).    You’ve essentially amortized the cost of building the formats across a large customer base, and your software finds bugs. For many folks, this makes good sense.  </p>
<p>The presentation will be available for public viewing on technet before too long.  <img src='http://www.mikeandrews.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>p.s.  Ari, if you want to chat, ask Juha, Josh, or Heikki for my contact info.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike</title>
		<link>http://www.mikeandrews.com/2008/10/19/bluehat-review/comment-page-1/#comment-262</link>
		<dc:creator>Mike</dc:creator>
		<pubDate>Tue, 21 Oct 2008 16:57:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.mikeandrews.com/2008/10/19/bluehat-review/#comment-262</guid>
		<description>I&#039;m sorry Ari, but the stats just don&#039;t stack up in your favor (for *bugs found* using both techniques).  When it comes down to the number of bugs found, I&#039;ve seen (and stats from MSFT which do a *lot* of fuzzing) that random fuzzing wins hands-down - the fuzzing Olympic (which I can&#039;t find a link to) pretty much studied that factor.

I know it&#039;s not exactly intuitive, but the idea is that the effort involved in writing a grammar for whatever is being fuzzed (which it&#039;s always possible - it could be intractable), and the time it takes to execute said &quot;intelligent&quot; tests, just doesn&#039;t match up to the time taken to do random testing.

One of the things the MSFT guys showed at the con was bugs discovered were a factor of test cases (pretty obvious here), not on what test cases were selected (the &quot;random&quot; part).  The only caveat(s) were the test template selection (be sure to select files that dont overlap testcases) as you want high code-coverage, but you *do* want to be fuzzing between the gaps, which intelligent fuzzing misses.

If/when the presentation gets posted I&#039;ll link to it here as it&#039;s certainly worthwhile watching.  In the mean-time, this presentation probably give a little more info on your position. http://video.google.com/videoplay?docid=-6109656047520640962&amp;hl=en</description>
		<content:encoded><![CDATA[<p>I&#8217;m sorry Ari, but the stats just don&#8217;t stack up in your favor (for *bugs found* using both techniques).  When it comes down to the number of bugs found, I&#8217;ve seen (and stats from MSFT which do a *lot* of fuzzing) that random fuzzing wins hands-down &#8211; the fuzzing Olympic (which I can&#8217;t find a link to) pretty much studied that factor.</p>
<p>I know it&#8217;s not exactly intuitive, but the idea is that the effort involved in writing a grammar for whatever is being fuzzed (which it&#8217;s always possible &#8211; it could be intractable), and the time it takes to execute said &#8220;intelligent&#8221; tests, just doesn&#8217;t match up to the time taken to do random testing.</p>
<p>One of the things the MSFT guys showed at the con was bugs discovered were a factor of test cases (pretty obvious here), not on what test cases were selected (the &#8220;random&#8221; part).  The only caveat(s) were the test template selection (be sure to select files that dont overlap testcases) as you want high code-coverage, but you *do* want to be fuzzing between the gaps, which intelligent fuzzing misses.</p>
<p>If/when the presentation gets posted I&#8217;ll link to it here as it&#8217;s certainly worthwhile watching.  In the mean-time, this presentation probably give a little more info on your position. <a href="http://video.google.com/videoplay?docid=-6109656047520640962&#038;hl=en" rel="nofollow">http://video.google.com/videoplay?docid=-6109656047520640962&#038;hl=en</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ari Takanen - Codenomicon</title>
		<link>http://www.mikeandrews.com/2008/10/19/bluehat-review/comment-page-1/#comment-257</link>
		<dc:creator>Ari Takanen - Codenomicon</dc:creator>
		<pubDate>Tue, 21 Oct 2008 12:09:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.mikeandrews.com/2008/10/19/bluehat-review/#comment-257</guid>
		<description>&lt;cite&gt;Random fuzzing is better than &quot;intelligent&quot; fuzzing (where the tool knows the file/protocol structure), which is certainly unintuitive, but something I learnt quite some time ago.&lt;/cite&gt;

I can&#039;t believe MSFT (and you) think that could be true! I think this has been proven to be the opposite a number of times. The goodness of some &quot;intelligent&quot; fuzzers can definitely be argued, but overall a truly intelligent fuzzer will definitely be much more effective (in both time and number) in finding flaws. I would really like to see the data behind this claim.

There are two cases where this could be true:

1) Someone is already using an intelligent fuzzer. Re-testing it with another one (a worse one) will not bring much benefit. A random fuzzer can still find a flaw (with a lot of luck and time). A better intelligent fuzzer will of course also find flaws, and more than random fuzzer, again.

2) The &quot;protocol&quot; you are testing is stateless and flat. A random fuzzer can easily test this (and only this one could argue), whereas an intelligent fuzzer will not find much challenge there. This is very rare case though. Try fuzzing stateful protocols like TCP or SSL/TLS, or maybe even some ASN.1 telco protocols; and a random fuzzer will prove to be completely useless in comparison to an intelligent protocol-aware fuzzer.</description>
		<content:encoded><![CDATA[<p><cite>Random fuzzing is better than &#8220;intelligent&#8221; fuzzing (where the tool knows the file/protocol structure), which is certainly unintuitive, but something I learnt quite some time ago.</cite></p>
<p>I can&#8217;t believe MSFT (and you) think that could be true! I think this has been proven to be the opposite a number of times. The goodness of some &#8220;intelligent&#8221; fuzzers can definitely be argued, but overall a truly intelligent fuzzer will definitely be much more effective (in both time and number) in finding flaws. I would really like to see the data behind this claim.</p>
<p>There are two cases where this could be true:</p>
<p>1) Someone is already using an intelligent fuzzer. Re-testing it with another one (a worse one) will not bring much benefit. A random fuzzer can still find a flaw (with a lot of luck and time). A better intelligent fuzzer will of course also find flaws, and more than random fuzzer, again.</p>
<p>2) The &#8220;protocol&#8221; you are testing is stateless and flat. A random fuzzer can easily test this (and only this one could argue), whereas an intelligent fuzzer will not find much challenge there. This is very rare case though. Try fuzzing stateful protocols like TCP or SSL/TLS, or maybe even some ASN.1 telco protocols; and a random fuzzer will prove to be completely useless in comparison to an intelligent protocol-aware fuzzer.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
