ASI36


Software attacks are extensively hitting the headlines nowadays. This course aims at demystifying them by giving the fundamentals to understand these attacks, what they consist in and how to protect from them. We will mostly focus on software vulnerabilities.

We will cover the following topics:

  • semantics and modelization of low-level languages
  • classical attack and exploitation
  • control-flow integrity techniques
  • MATE attacks and reverse engineering
  • code obfuscation
  • malware: principles and analysis

Lectures

# Date Title
1 2018-01-11 Introduction
2 2018-01-18 Basic attacks and exploitation
3 2018-01-25 Control-flow integrity
4 2018-02-12 MATE, attack & defense
5 2018-02-15 Semantic attacks (program analysis)
6 2018-02-22 Exam

References

1. Introduction


Description

This introductory session presents an overview of the contents, the issues surrounding security in general, the more restricted issue of analyzing vulnerabilities in low-level code, as well as reminders regarding compilation and code analysis.

Lecture contents

2. Basic attacks and exploitation


Description

This session presents the basic low-level attack techniques:

  • buffer overflows;
  • heap overflows; &
  • format string exploitation.

Most of the session is allotted to hands-on experimentation.

Lecture contents

3. Control-flow integrity


Description

This session presents the three main basic binary exploitation mitigation techniques:

  • stack canaries;
  • data execution prevention; &
  • ASLR.

We will also talk about their limitations and briefly present more advanced control-flow integrity measures that are currently available.

A good part of the session is allotted to hands-on experimentations.

Lecture contents

4. MATE, attack & defense


Lecture contents

5. Semantic attacks (program analysis)


Lecture contents