<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <title>Nick Sieger: RubyConf: Zed Shaw: Fuzzing</title>
  <id>tag:blog.nicksieger.com,2005:Typo</id>
  <generator uri="http://www.typosphere.org" version="4.0">Typo</generator>
  <link rel="self" type="application/atom+xml" href="http://blog.nicksieger.com/xml/atom10/article/81/feed.xml"/>
  <link rel="alternate" type="text/html" href="http://blog.nicksieger.com/articles/2006/10/21/rubyconf-zed-shaw-fuzzing"/>
  <updated>2007-08-31T16:50:38+00:00</updated>
  <entry>
    <author>
      <name>Nick Sieger</name>
    </author>
    <id>urn:uuid:14460f4d-1fbb-4a14-b91b-7ed22d4e7973</id>
    <published>2006-10-21T02:51:38+00:00</published>
    <updated>2007-08-31T16:50:38+00:00</updated>
    <title>RubyConf: Zed Shaw: Fuzzing</title>
    <link rel="alternate" type="text/html" href="http://blog.nicksieger.com/articles/2006/10/21/rubyconf-zed-shaw-fuzzing"/>
    <category term="rubyconf" scheme="http://blog.nicksieger.com/articles/tag/rubyconf"/>
    <category term="rubyconf2006" scheme="http://blog.nicksieger.com/articles/tag/rubyconf2006"/>
    <content type="html">&lt;h2&gt;What is Fuzzing?&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Throw random stuff at an app until it breaks, with maliciously crafted inputs.  It&amp;#8217;s the randomness, stupid.&lt;/li&gt;
&lt;li&gt;Creating a model for an attack&lt;/li&gt;
&lt;li&gt;Sampling, survival analysis and mean-time-between-failures (MTBF)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Limitations&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Shallow &amp;#8211; errors come right away, but then few and far between&lt;/li&gt;
&lt;li&gt;Not smart&lt;/li&gt;
&lt;li&gt;Not always needed&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Disadvantages&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Destructive &amp;#8211; don&amp;#8217;t do it against your production system!&lt;/li&gt;
&lt;li&gt;Potentially expensive&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Advantages&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Fun making developers go insane&lt;/li&gt;
&lt;li&gt;Finds bugs even in closed source software&lt;/li&gt;
&lt;li&gt;Easy to do when you have the right tools&lt;/li&gt;
&lt;li&gt;Excellent for regression/load/DDOS/pen testing&lt;/li&gt;
&lt;li&gt;Large existing base of tools (links from Zed&amp;#8217;s site)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Demo/Usage&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Designed to be a simple data container for all the HTTP objects, so you can easily store and replay requests&lt;/li&gt;
&lt;li&gt;Randomness engine (RC4 cipher) generates random bytes, numbers, chars, base64, etc.&lt;/li&gt;
&lt;li&gt;Data collection (ten runs of ten samples, spits out .csv files)&lt;/li&gt;
&lt;li&gt;Session management (dump cookie management)&lt;/li&gt;
&lt;li&gt;Rails security test (see also &lt;a href="/articles/2006/08/15/security-threat-last-week"&gt;my post on this subject&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Chunked encoding test&lt;/li&gt;
&lt;li&gt;Mongrel test suite &amp;#8211; test GET vs. PUT to see if there is any difference in performance between the two methods&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Other Ideas&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Random ruby scripts from a grammar&lt;/li&gt;
&lt;li&gt;Automatic random AR fixtures&lt;/li&gt;
&lt;li&gt;Thrash functions for unit tests&lt;/li&gt;
&lt;li&gt;Random thrashing of other protocols&lt;/li&gt;
&lt;li&gt;Release RFuzz&amp;#8217;s HTTP client separately as an alternative to &lt;code&gt;net/http&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Hpricot and RWB inclusion&lt;/li&gt;
&lt;li&gt;&lt;a href="http://utu.devjavu.com/"&gt;Utu&lt;/a&gt; &amp;#8211; HCI research to see if it&amp;#8217;s possible to measure how programmers interact&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry>
</feed>
