View Proposal
-
Proposer
-
Adam Sampson
-
Title
-
Use fuzzing to identify faults in emulators
-
Goal
-
Use coverage-directed fuzzing to find ways in which emulators fail to correctly simulate the architecture they're emulating
-
Description
- Coverage-directed fuzzing is a highly effective technique for testing software - it combines random input with feedback from software coverage measurement to generate input that explores all the possible paths of execution through a piece of software.
An emulator such as qemu, simh or MAME executes software written for a different architecture by simulating the CPU and peripherals in software. Faults in emulation are common - either producing incorrect results, or worse, producing security holes. However, if you have two emulators for a given architecture - or an emulator and a real CPU - then you could detect faults by using fuzzing to generate code, running it on both, and comparing the results; if they don't match, or the emulator crashes, you've found a problem.
I would suggest picking a simple, common architecture with lots of different emulators available (Z80, 6502...) to maximise the chance of finding an interesting problem.
(A previous student had a good attempt at this with a custom emulator, so I'd like the focus to be on analysing faults in existing emulators.)
- Resources
-
-
Background
-
-
Url
-
-
Difficulty Level
-
Moderate
-
Ethical Approval
-
Full
-
Number Of Students
-
1
-
Supervisor
-
Adam Sampson
-
Keywords
-
fuzzing, testing, emulation, cpu, security
-
Degrees
-
Bachelor of Science in Computer Science
Bachelor of Science in Computer Systems
Master of Engineering in Software Engineering
Master of Science in Computer Science for Cyber Security
Master of Science in Computing (2 Years)
Master of Science in Information Technology (Software Systems)
Master of Science in Network Security
Master of Science in Software Engineering
Bachelor of Science in Computing Science
Bachelor of Engineering in Robotics
Bachelor of Science in Computer Science (Cyber Security)