[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Notes from Design Summit Hypervisor Fuzzing Session
2017-07-21 15:15 GMT+02:00 Lars Kurth <lars.kurth.xen@gmail.
Hi all, Like in the classic AFL scenario, one could feed test cases to the forked VMs and always have a completely identical environments for each test case. The VM's would run on top of a hypervisor and each again contain a hypervisor (thus nested) against which the test cases are executed.
The alternative is to reuse the same hypervisor for the test cases. This is the approach currently taken in my GSoC project. A drawback in comparison to option 1 is that the environment will be "dirty" from previous test cases, as the same hypervisor is reused. That might make it harder to isolate bugs.
Decision if to compile code with tracing is made on a file-level, and certain files (e.g. locks) still have to be excluded.
This is the same as 1.
needed to transmit test case from XTF to AFL and for synchronisation
The original plan was to make the tracing hypercall in XTF and to use the communication channel from 3. to transmit the info to AFL. Instead the tracing hypercall is now made in AFL. This is faster and convenient as the hypercall already allows to trace a different domain. The only drawback is that one might also trace parts of the synchronisation between the domains, but this was considered negligible, at least for the initial version.
Discussion Also desched Possibly there are some more functions that need to be blacklisted Certain hypercalls will cause Xen to destroy the XTF domain, which would end the fuzzing, but not crash the hypervisor, so these hypercalls shouldn't be allowed. Ian: To backup test cases on could use a network connection, as that should be faster than writing to disk. This approach was dropped in favour of just flushing the disk (easier to implement). Andy: Going to have problems such as dealing with partial hypercall operations
The point here was stability. AFL expects the same hypercall to return the same tracing result every time it is executed. There is some indeterminism introduced due to the synchronisation and the fact that the same hypervisor is reused (see option 1 for a different approach), but that should initially be neglected.
For further info one can also check out the mails between me and Wei in the mailing list archive. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |