As a student, you have:
- a WO or postgraduate level of education in the relevant domain.
- Proven skills or experience in binary analysis methods;
- Programming experience in Python;
- Experience in reading ARM and/or MIPS assembly;
- Experience in reading formal proofs and an understanding of graph theory is a pre.
- Ability to work well in an international team environment;
- Good communication skills, self-organization;
- Clear documentation writing skills.
The project you will be working on:
Secura is currently involved in a large-scale EU-level project called SANCUS. The objective of SANCUS is to create and test a framework that can automatically evaluate the security of an IoT device. One part of this assessment is the automatic detection of vulnerabilities in compiled software. In order to achieve this Secura uses fuzzing, which sends random data to an application and sees what happens. To increase the accuracy and coverage of fuzzing, it can be combined with symbolic execution. In this method, the input to the application is symbolic, which causes outputs and the program state to become symbolic as well. These can then be resolved to find out which input is required to lead the program to a certain state or output.
As an intern, you will be responsible for the following:
- Acquire an understanding of the project and used technologies;
- Design a method through which symbolic execution can be integrated into the underlying fuzzier, AFL++;
- Create a proof-of-concept of the integration according to this design;
- Test the proof-of-concept and make adjustments in order to improve the accuracy and speed of the analysis;
- Perform a final benchmark on the effectiveness of the analysis;
- Document the process and workings of your implementation.