Research overview
We are concerned with several aspects of cyber-security:
- Making the design and implementation of programming languages secure by default;
- Demonstrating the insecurity of existing software through software security testing facilitating its repair.
What differentiates our research from other cyber-security labs is our focus on security testing at scale. For example, industrial fuzzing involves testing software using a large amount of cores. How do we make this process as smart as possible? How do we efficiently share information between processes and coordinate the search for bugs? What clever things can you do before you start fuzzing to maximise the bug yield from your campaign? How do you automate the triage thousands of unique crashes from a campaign into a set of useful bug and vulnerability reports? There are many open questions here and fuzzing is only one of many security evaluation techniques.
Software security evaluations are complex and difficult. Until we have useable systems that have formal guarantees of security we need to rely on security testing. We need to make testing as automated, effective and easy as possible to do at scale if our software systems are to be worthy of our trust.