Security

A.Y. 2022/2023
6
Max ECTS
48
Overall hours
SSD
INF/01
Language
Italian
Learning objectives
This course we will explore the foundations of software security. We will consider important software vulnerabilities and attacks that exploit them -- such as buffer overflows, heap overflow and use after free -- and we will consider defenses that prevent or mitigate these attacks, including advanced testing and program analysis techniques such as symbolic execution and fuzzing.
Expected learning outcomes
Successful learners in this course will typically be able to apply basic low attack techniques such as buffer overflow, heap overflow. Moreover he/she will be able to understand the state-of-the-art of the defensive techniques along with such specific program testing and program analysis techniques for discovering memory errors in C/C++ languages. The student should have completed junior-level undergraduate work in a technical field, have some familiarity with programming, ideally in C/C++, and have prior exposure to algorithms.
Single course

This course cannot be attended as a single course. Please check our list of single courses to find the ones available for enrolment.

Course syllabus and organization

Single session

Responsible
Lesson period
First semester
Course syllabus
1) Modulo Low-Level Attacks
Introduction
Buffer Overflow
Lab Buffer overflow
Heap Overflow
Lab Heap Overflow
Use after Free (UAF)
Lab UAF
2) Modulo Low-Level Security: Defense
- Introduction
- Memory Safety
- Type Safety + Avoid Exploitation
- ROP Return Oriented Programming
- ROP lab
- CFI
3) Modulo Static and Dynamic Flow Analysis
- Introduction
- Static Analysis
- Data Flow analysis
4) Modulo Symbolic Execution
- Introduction
- Symbolic Execution
- Lab of Symbolic Execution
Prerequisites for admission
Students interested in attending the course they should meet the following requirements:

- Knowing how to independently manage a Linux / Windows / MacOS system
- Knowing how to write C programs
- Knowing how to use a QEMU / VMware emulator
- Basic Knowledge about security (Security and Privacy Course)
Teaching methods
The lessons take 4 hours and are divided into two parts: a 2 hour theoretical lesson and a 2 hour laboratory lesson.
Teaching Resources
Web Site Ariel
- GitHub repository Security Exercise
- Slide
- Paper on different topics explained in the lectures
Assessment methods and Criteria
The evaluation criterion will be divided into two parts: A written part (quiz) concerning the theoretical part of the course,
a practical part that will concern a practical exercise where you will have to solve some exploitation exercises already discussed in the laboratory lessons. The final grade will be a weighted average between the two grades.
INF/01 - INFORMATICS - University credits: 6
Lessons: 48 hours
Professor: Lanzi Andrea
Professor(s)