<?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"
	>
<channel>
	<title>Comments on: Introducing jsfunfuzz</title>
	<atom:link href="http://www.squarefree.com/2007/08/02/introducing-jsfunfuzz/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.squarefree.com/2007/08/02/introducing-jsfunfuzz/</link>
	<description>Jesse Ruderman on Firefox, security, and more</description>
	<pubDate>Thu, 20 Nov 2008 08:13:21 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
		<item>
		<title>By: Are you confident in your test coverage?</title>
		<link>http://www.squarefree.com/2007/08/02/introducing-jsfunfuzz/#comment-3833</link>
		<dc:creator>Are you confident in your test coverage?</dc:creator>
		<pubDate>Thu, 23 Aug 2007 21:59:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.squarefree.com/2007/08/02/introducing-jsfunfuzz/#comment-3833</guid>
		<description>[...] the last few years which tries to address the &#8220;state explosion&#8221; of real-world programs (applied successfully to the Firefox Javascript engine to find 280 bugs). This, of course, places even more burden on the [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] the last few years which tries to address the &#8220;state explosion&#8221; of real-world programs (applied successfully to the Firefox Javascript engine to find 280 bugs). This, of course, places even more burden on the [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adam Blinkinsop</title>
		<link>http://www.squarefree.com/2007/08/02/introducing-jsfunfuzz/#comment-3819</link>
		<dc:creator>Adam Blinkinsop</dc:creator>
		<pubDate>Fri, 10 Aug 2007 19:32:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.squarefree.com/2007/08/02/introducing-jsfunfuzz/#comment-3819</guid>
		<description>It sounds like more of a Model-Based Tester than a fuzz tester.  (&lt;a href="http://en.wikipedia.org/wiki/Model-based_testing" rel="nofollow"&gt;http://en.wikipedia.org/wiki/Model-based_testing&lt;/a&gt;)</description>
		<content:encoded><![CDATA[<p>It sounds like more of a Model-Based Tester than a fuzz tester.  (<a href="http://en.wikipedia.org/wiki/Model-based_testing" rel="nofollow">http://en.wikipedia.org/wiki/Model-based_testing</a>)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ajaxian &#187; Getting Fuzzy with jsfunfuzz</title>
		<link>http://www.squarefree.com/2007/08/02/introducing-jsfunfuzz/#comment-3817</link>
		<dc:creator>Ajaxian &#187; Getting Fuzzy with jsfunfuzz</dc:creator>
		<pubDate>Fri, 10 Aug 2007 06:52:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.squarefree.com/2007/08/02/introducing-jsfunfuzz/#comment-3817</guid>
		<description>[...] Ruderman has released jsfunfuzz, a fuzz tester that hunts for edge cases that can break things.  It tests the JavaScript [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] Ruderman has released jsfunfuzz, a fuzz tester that hunts for edge cases that can break things.  It tests the JavaScript [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Testear bugs javascript en navegadores, resultados en Opera y Firefox &#171; Dígito Binario - Tecnología Informática</title>
		<link>http://www.squarefree.com/2007/08/02/introducing-jsfunfuzz/#comment-3816</link>
		<dc:creator>Testear bugs javascript en navegadores, resultados en Opera y Firefox &#171; Dígito Binario - Tecnología Informática</dc:creator>
		<pubDate>Thu, 09 Aug 2007 10:34:39 +0000</pubDate>
		<guid isPermaLink="false">http://www.squarefree.com/2007/08/02/introducing-jsfunfuzz/#comment-3816</guid>
		<description>[...] por pilsen on 9/08/07  Fue una persona que desarrollo esta herramienta para testear el motor javascript del Firefox y así, con esta [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] por pilsen on 9/08/07  Fue una persona que desarrollo esta herramienta para testear el motor javascript del Firefox y así, con esta [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jesse Ruderman</title>
		<link>http://www.squarefree.com/2007/08/02/introducing-jsfunfuzz/#comment-3815</link>
		<dc:creator>Jesse Ruderman</dc:creator>
		<pubDate>Thu, 09 Aug 2007 04:31:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.squarefree.com/2007/08/02/introducing-jsfunfuzz/#comment-3815</guid>
		<description>&lt;blockquote&gt;This is all very well and good for JavaScript, but what about other relatively new bits of the engine like SVG?&lt;/blockquote&gt;

Why just the new bits? ;)

&lt;blockquote&gt;I am not a security expert but it seems obvious to me given the success here that any point at which the browser accepts external input should be fuzz tested.&lt;/blockquote&gt;

I think it's best to focus on external input whose handling is (1) complicated and (2) done in an unsafe manner (e.g. C++ with raw pointers flying around).  JavaScript and SVG certainly meet those criteria.

&lt;blockquote&gt;Also can you go into more detail about how “it knows the rules” and “it breaks the rules”? It seems to me that it would be easy to miss possible vulnerabilities by having incorrectness in the former or incompleteness in the latter.&lt;/blockquote&gt;

Sure.  It "knows" how to use most of the JavaScript syntax: loops, properties, operators.  It also "knows" that certain things are functions, and certain things want functions (e.g. setters, the argument to Array.map).  It "breaks" the rules by substituting one syntax element for another (see the "totallyRandom" bits) and by screwing up the syntax slightly (see the function called "cat").

You're right: incorrectness or incompleteness in the former, and incompleteness in the latter, can lead to it missing bugs (including bugs that can be found by small modifications to the fuzzer -- fuzzing is never about guaranteeing that you don't have any bugs).  I'm not sure what to do about that, but having More Eyes on the fuzzer probably helps :)

&lt;blockquote&gt;As fuzzy testers are undoubtably now an important part of the black hat arsenal too, I think every effort should be made to make the ones used by white hats as comprehensive as possible&lt;/blockquote&gt;

I'd prefer smart static analysis, but if fuzzing is the best we can do, sure :)

&lt;blockquote&gt;and to come up with guidelines for best practice.&lt;/blockquote&gt;

This could be tricky, since there are many fuzzing strategies and I'm not sure there's one that's "best".  "Mutation fuzzers" that only make small changes to existing files are easy to make; "generating fuzzers" have to know the syntax and tend to find more bugs; "genetic fuzzers" are clever and have interesting behaviors.

I usually write "generating fuzzers".  For those, my guidelines might be the ones above under "why it has been able to find so many bugs", plus one additional guideline: make sure you can make a reduced testcase easily when your fuzzer finds a bug.</description>
		<content:encoded><![CDATA[<blockquote><p>This is all very well and good for JavaScript, but what about other relatively new bits of the engine like SVG?</p></blockquote>
<p>Why just the new bits? ;)</p>
<blockquote><p>I am not a security expert but it seems obvious to me given the success here that any point at which the browser accepts external input should be fuzz tested.</p></blockquote>
<p>I think it&#8217;s best to focus on external input whose handling is (1) complicated and (2) done in an unsafe manner (e.g. C++ with raw pointers flying around).  JavaScript and SVG certainly meet those criteria.</p>
<blockquote><p>Also can you go into more detail about how “it knows the rules” and “it breaks the rules”? It seems to me that it would be easy to miss possible vulnerabilities by having incorrectness in the former or incompleteness in the latter.</p></blockquote>
<p>Sure.  It &#8220;knows&#8221; how to use most of the JavaScript syntax: loops, properties, operators.  It also &#8220;knows&#8221; that certain things are functions, and certain things want functions (e.g. setters, the argument to Array.map).  It &#8220;breaks&#8221; the rules by substituting one syntax element for another (see the &#8220;totallyRandom&#8221; bits) and by screwing up the syntax slightly (see the function called &#8220;cat&#8221;).</p>
<p>You&#8217;re right: incorrectness or incompleteness in the former, and incompleteness in the latter, can lead to it missing bugs (including bugs that can be found by small modifications to the fuzzer &#8212; fuzzing is never about guaranteeing that you don&#8217;t have any bugs).  I&#8217;m not sure what to do about that, but having More Eyes on the fuzzer probably helps :)</p>
<blockquote><p>As fuzzy testers are undoubtably now an important part of the black hat arsenal too, I think every effort should be made to make the ones used by white hats as comprehensive as possible</p></blockquote>
<p>I&#8217;d prefer smart static analysis, but if fuzzing is the best we can do, sure :)</p>
<blockquote><p>and to come up with guidelines for best practice.</p></blockquote>
<p>This could be tricky, since there are many fuzzing strategies and I&#8217;m not sure there&#8217;s one that&#8217;s &#8220;best&#8221;.  &#8220;Mutation fuzzers&#8221; that only make small changes to existing files are easy to make; &#8220;generating fuzzers&#8221; have to know the syntax and tend to find more bugs; &#8220;genetic fuzzers&#8221; are clever and have interesting behaviors.</p>
<p>I usually write &#8220;generating fuzzers&#8221;.  For those, my guidelines might be the ones above under &#8220;why it has been able to find so many bugs&#8221;, plus one additional guideline: make sure you can make a reduced testcase easily when your fuzzer finds a bug.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: anon</title>
		<link>http://www.squarefree.com/2007/08/02/introducing-jsfunfuzz/#comment-3814</link>
		<dc:creator>anon</dc:creator>
		<pubDate>Thu, 09 Aug 2007 02:48:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.squarefree.com/2007/08/02/introducing-jsfunfuzz/#comment-3814</guid>
		<description>This is all very well and good for JavaScript, but what about other relatively new bits of the engine like SVG? I am not a security expert but it seems obvious to me given the success here that any point at which the browser accepts external input should be fuzz tested.

Also can you go into more detail about how "it knows the rules" and "it breaks the rules"? It seems to me that it would be easy to miss possible vulnerabilities by having incorrectness in the former or incompleteness in the latter. 

As fuzzy testers are undoubtably now an important part of the black hat arsenal too, I think every effort should be made to make the ones used by white hats as comprehensive as possible, and to come up with guidelines for best practice.</description>
		<content:encoded><![CDATA[<p>This is all very well and good for JavaScript, but what about other relatively new bits of the engine like SVG? I am not a security expert but it seems obvious to me given the success here that any point at which the browser accepts external input should be fuzz tested.</p>
<p>Also can you go into more detail about how &#8220;it knows the rules&#8221; and &#8220;it breaks the rules&#8221;? It seems to me that it would be easy to miss possible vulnerabilities by having incorrectness in the former or incompleteness in the latter. </p>
<p>As fuzzy testers are undoubtably now an important part of the black hat arsenal too, I think every effort should be made to make the ones used by white hats as comprehensive as possible, and to come up with guidelines for best practice.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
