<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Mar 16, 2017 at 1:29 PM, Daniel P. Berrange <span dir="ltr"><<a href="mailto:berrange@redhat.com" target="_blank">berrange@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Tue, Mar 07, 2017 at 12:27:58AM -0500, D L wrote:<br>
> On Sun, Mar 5, 2017 at 2:47 AM, Michal Privoznik <<a href="mailto:mprivozn@redhat.com">mprivozn@redhat.com</a>> wrote:<br>
</span><span class="">> Regarding fuzzing, I think we can try several fuzzing tools to run in<br>
> parallel, as different<br>
>  fuzzers tend to find different kinds of bugs. Thus, AFL (American Fuzz<br>
> Lop) [1],<br>
> which is a coverage-guided mutation-based fuzzer with genetic algorithm,<br>
> can<br>
> take hand-crafted xml seed to fuzz our libvert target. Alternatively, we<br>
> could<br>
> develop generation-based grammar module in AFL (which is definitely<br>
> non-trivial);<br>
> so far I have not seen active development in AFL community on xml format<br>
> grammar generation. Another option could be clang-libfuzzer [2].<br>
><br>
> Several related articles show examples of fuzzing are using AFL to generate<br>
> SQL [3], llvm-afl [4], and hexml fuzzing with AFL [5]. In combination with<br>
> lcov, we<br>
>  could compare different fuzzers and guide our fuzzing tuning.<br>
<br>
</span>FYI, I would very much like to see it use a fuzzer that is open source, because<br>
I'd like the end result of the project to ideally produce some test suite or<br>
test framework that we can put in to our CI system and run daily to validate<br>
future changes.<br>
<br>
<br>
Regards,<br>
Daniel<br>
<span class="HOEnZb"><font color="#888888">--<br></font></span></blockquote><div>Hi all,</div><div><br></div><div>I am reviewing the feedbacks of this thread, and I would like to revisit some topics. </div><div><br></div><div>I think this project is more about finding bugs in libvirt, when using fuzzing, especially</div><div>the implications would be security vulnerabilities. Thus the input file could be anything</div><div>that pretend to be legitimate xml, which potentially would crash the target program, </div><div>such as virsh. Depending on the exact fuzzer, being either mutational or generational, or </div><div>even hybrid, the fuzzer engine and the executor will take care most of the work</div><div>including input file generation, mutation, testing, recording, and reporting. Fuzzing</div><div>will allow us to reproduce the bugs with the recorded culprit xml file, then we have</div><div>a  case where we find a bug. It is totally a lazy person's tool to do software testing,</div><div>without writing much code.</div><div><br></div><div>Therefore, I am modifying this project a little towards be a CI fuzzing testing framework,</div><div>potentially a deliverable product presenting a centralized real-time status of online fuzzing </div><div>information, integrated with libvirt existing toolchain. The components of the framework</div><div>incorporates fuzzer manager, a panel of open source fuzzer engines, executor, CI and </div><div>dashboard system. </div><div><br></div><div>There are related works such as oss-fuzz. However, the most obvious difference is that</div><div>here it can be potentially closely integrated into existing libvirt community workflow, or any other</div><div>open source community of the like who would like to have their own fuzzing CI with flexible </div><div>and version-ed configuration.</div><div><br></div><div>Dan</div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="HOEnZb"><font color="#888888">
|: <a href="http://berrange.com" rel="noreferrer" target="_blank">http://berrange.com</a>      -o-    <a href="http://www.flickr.com/photos/dberrange/" rel="noreferrer" target="_blank">http://www.flickr.com/photos/<wbr>dberrange/</a> :|<br>
|: <a href="http://libvirt.org" rel="noreferrer" target="_blank">http://libvirt.org</a>              -o-             <a href="http://virt-manager.org" rel="noreferrer" target="_blank">http://virt-manager.org</a> :|<br>
|: <a href="http://entangle-photo.org" rel="noreferrer" target="_blank">http://entangle-photo.org</a>       -o-    <a href="http://search.cpan.org/~danberr/" rel="noreferrer" target="_blank">http://search.cpan.org/~<wbr>danberr/</a> :|<br>
</font></span></blockquote></div><br></div></div>