<node id="628763">
  <nid>628763</nid>
  <type>news</type>
  <uid>
    <user id="34541"><![CDATA[34541]]></user>
  </uid>
  <created>1573164042</created>
  <changed>1573164548</changed>
  <title><![CDATA[Hydra is the First Fuzzing Framework to Find Any System Bug]]></title>
  <body><![CDATA[<p>Georgia Tech researchers have developed a new tool that can find one of the most challenging types of bug.</p>

<p>Called Hydra, the framework provides building blocks for file system fuzzers to find semantic errors, helping developers save time. Using Hydra, the researchers have found 155 new bugs in Linux file systems.</p>

<p>&ldquo;The name Hydra comes from the Greek mythological monster that has multiple heads because our approach brings multiple bug checkers into a unified framework, enabling the testing of multiple aspects of file systems,&rdquo; said School of Computer Science (SCS) Ph.D. student <a href="https://squizz617.github.io/" target="_blank"><strong>Seulbae</strong><strong> </strong><strong>Kim</strong></a><strong>.</strong></p>

<p><strong>Finding</strong><strong> </strong><strong>Semantic</strong><strong> </strong><strong>Bugs</strong></p>

<p>File systems are the center of any operating systems. Yet as they grow larger, the potential for bugs only increases. Bugs can cause chaos for users, from unwanted reboots to corruption of an entire system &mdash; not to mention security vulnerabilities.</p>

<p>Eliminating bugs individually is nearly impossible, so developers often rely on fuzzing to expedite the process. The generalized automatic software testing technique injects mutated inputs to discover bugs and test how robust the system is. Typically, fuzzing is only designed for detecting memory errors, but the researchers wanted to tackle a more challenging category, semantic bugs.</p>

<p>Sematic bugs come in many forms, from violating main properties of the system like crash safety to the developers&rsquo; incorrect assumptions. Each issue often requires a specialized checker to find the bug. Yet, all semantic bugs have one thing in common: Their failure does not register in the kernel in the same way memory bugs do. Their undetectable nature means previous fuzzers can&rsquo;t be used out of the box.</p>

<p>&ldquo;Semantic bugs do not explicitly manifest themselves,&rdquo; Kim said. &ldquo;They are silent. The effects are often internal and only revealed upon some special condition.&rdquo;</p>

<p><strong>Expanding</strong><strong> </strong><strong>Fuzzing</strong></p>

<p>Hydra enables plugged-in bug checkers to work on their own while offloading file system checking to Hydra. This helps eliminate any type of file system bugs, including three common types:</p>

<p>&middot;Crash inconsistency, when a file system fails to recover to a correct state after a crash</p>

<p>&middot;Specification violation (often known as POSIX standards), when the file system&rsquo;s behavior does not conform to the specifications of how it should behave</p>

<p>&middot;Logic bugs, when bugs are specific to a file system&rsquo;s implementation of an algorithm or an invalid assumption</p>

<p><strong>[RELATED CONTENT: <a href="Janus%20Finds%20More%20Bugs%20in%20File%20Systems%20than%20any%20Fuzzer" target="_blank">Janus Finds More Bugs in File Systems than any Fuzzer</a>]</strong></p>

<p>Building from the researchers&rsquo; prior work with the fuzzer<a href="https://www.scs.gatech.edu/news/622029/janus-finds-more-bugs-file-systems-any-fuzzer" target="_blank"> Janus</a>, Hydra provides common tools developers need to debug a file system, including:</p>

<p>&middot;Input mutator to generate test cases that are likely to trigger bugs</p>

<p>&middot; libOS-based executor that executes the test case against targeted file system and runs plugged-in bug checkers</p>

<p>&middot; Feedback engines that summarize the effects of test cases and determine if they are effective enough to further mutate</p>

<p>&middot;Bug reproducer with a test case minimizer that automatically verifies the reported test cases and reduces the size of the test case, respectively</p>

<p>&ldquo;With these jobs offloaded, a developer now can only focus on writing a reliable bug checker (if it does not already exist) for the bug type he or she is interested in finding,&rdquo; Kim said.</p>

<p>Kim presented the work at <a href="https://sosp19.rcs.uwaterloo.ca/program.html" target="_blank">ACM Symposium on Operating Systems Principles (SOSP)</a> in Huntsville, Ontario, Canada from Oct. 27 to 30. He co-wrote the paper, <a href="https://taesoo.kim/pubs/2019/kim:hydra.pdf" target="_blank"><em>Finding</em><em> </em><em>Semantic</em><em> </em><em>Bugs</em><em> </em><em>in</em><em> </em><em>File</em><em> </em><em>Systems</em><em> </em><em>with</em><em> </em><em>an</em><em> </em><em>Extensible</em><em> </em><em>Fuzzing</em><em> </em><em>Framework</em></a> <strong>with</strong><strong> </strong><strong>SCS</strong><strong> </strong><strong>Ph</strong><strong>.</strong><strong>D</strong><strong>. </strong><strong>students</strong><strong> </strong><strong>Meng</strong><strong> </strong><strong>Xu</strong>,<strong> </strong><a href="https://gts3.org/~sanidhya/" target="_blank"><strong>Sanidhya</strong><strong> </strong><strong>Kashyap</strong></a>, <strong>Jungyeon</strong><strong> </strong><strong>Yoon</strong>,<strong> &nbsp;</strong><strong>and</strong><strong> </strong><a href="https://gts3.org/~wen/" target="_blank"><strong>Wen</strong><strong> </strong><strong>Xu</strong></a>, and SCS Associate Professor <a href="https://taesoo.kim/" target="_blank"><strong>Taesoo</strong><strong> </strong><strong>Kim</strong></a><strong>. </strong></p>

<p>&nbsp;</p>
]]></body>
  <field_subtitle>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_subtitle>
  <field_dateline>
    <item>
      <value>2019-11-07T00:00:00-05:00</value>
      <timezone><![CDATA[America/New_York]]></timezone>
    </item>
  </field_dateline>
  <field_summary_sentence>
    <item>
      <value><![CDATA[Called Hydra, the framework provides building blocks for file system fuzzers to find semantic errors, helping developers save time. ]]></value>
    </item>
  </field_summary_sentence>
  <field_summary>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_summary>
  <field_media>
          <item>
        <nid>
          <node id="628764">
            <nid>628764</nid>
            <type>image</type>
            <title><![CDATA[Hydra]]></title>
            <body><![CDATA[]]></body>
                          <field_image>
                <item>
                  <fid>239461</fid>
                  <filename><![CDATA[Garuga-Emblem.png]]></filename>
                  <filepath><![CDATA[/sites/default/files/images/Garuga-Emblem.png]]></filepath>
                  <file_full_path><![CDATA[http://www.tlwarc.hg.gatech.edu//sites/default/files/images/Garuga-Emblem.png]]></file_full_path>
                  <filemime>image/png</filemime>
                  <image_740><![CDATA[]]></image_740>
                  <image_alt><![CDATA[Hydra]]></image_alt>
                </item>
              </field_image>
            
                      </node>
        </nid>
      </item>
      </field_media>
  <field_contact_email>
    <item>
      <email><![CDATA[]]></email>
    </item>
  </field_contact_email>
  <field_location>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_location>
  <field_contact>
    <item>
      <value><![CDATA[<p>Tess Malone, Communications Officer</p>

<p><a href="mailto:Called Hydra, the framework provides building blocks for file system fuzzers to find semantic errors, helping developers save time. ">tess.malone@cc.gatech.edu</a></p>
]]></value>
    </item>
  </field_contact>
  <field_sidebar>
    <item>
      <value><![CDATA[]]></value>
    </item>
  </field_sidebar>
  <field_boilerplate>
    <item>
      <nid><![CDATA[]]></nid>
    </item>
  </field_boilerplate>
  <!--  TO DO: correct to not conflate categories and news room topics  -->
  <!--  Disquisition: it's funny how I write these TODOs and then never
         revisit them. It's as though the act of writing the thing down frees me
         from the responsibility to actually solve the problem. But what can I
         say? There are more problems than there's time to solve.  -->
  <links_related> </links_related>
  <files> </files>
  <og_groups>
          <item>47223</item>
          <item>50875</item>
      </og_groups>
  <og_groups_both>
      </og_groups_both>
  <field_categories>
      </field_categories>
  <core_research_areas>
          <term tid="145171"><![CDATA[Cybersecurity]]></term>
          <term tid="39541"><![CDATA[Systems]]></term>
      </core_research_areas>
  <field_news_room_topics>
      </field_news_room_topics>
  <links_related>
      </links_related>
  <files>
      </files>
  <og_groups>
          <item>47223</item>
          <item>50875</item>
      </og_groups>
  <og_groups_both>
          <item><![CDATA[College of Computing]]></item>
          <item><![CDATA[School of Computer Science]]></item>
      </og_groups_both>
  <field_keywords>
      </field_keywords>
  <field_userdata>
      <![CDATA[]]>
  </field_userdata>
</node>
