Slides Lecture 1
Slides Lecture 1
Lecture 1: introduction
Teaching staff
I Laurent Mounier (UGA), Marie-Laure Potet (G-INP)
Mathias Ramparon (G-INP)
I research within Verimag Lab
I research focus: formal verification, code analysis, compilation
techniques, language semantics ... and (software) security !
Attendees
I Master M2 on Cybersecurity [mandatory course]
I Master M2 MoSiG [optionnal course]
2 / 21
Agenda
3 / 21
Examination rules
The rules of the game . . .
Assignments
I M1 : a written exam (duration ∼ 1.5h, mid-November)
I M2 : a (short) report on lab sessions
I M3 : an oral presentation (in January)
I M4 : final written exam (duration=2h, end of January)
M = (0.3 × M2 ) + (0.7 × M1 )
I for Cybersecurity students:
4 / 21
Course user manual
http://www-verimag.imag.fr/~mounier/Enseignement/Software_Security
5 / 21
Prerequisites
Ideally . . .
Programming languages
I at least one (classical) imperative language:
C or C++ ? Java ?? Python ??? . . .
I some notions on compilation & language semantics
6 / 21
Outline
→ 2 main characteristics:
I include hardware + software
I open/connected to the outside world . . .
7 / 21
The context: computer system security . . . (ct’d)
→ A possible definition:
I functionnal properties = what the system should do
I security properties = what it should not allow w.r.t the intruder model . . .
1
could be the user, or the execution plateform itself!
8 / 21
Example 1: password authentication
Is this code “secure” ?
boolean verify (char[] input, char[] passwd , byte len) {
// No more than triesLeft attempts
if (triesLeft < 0) return false ; // no authentication
// Main comparison
for (short i=0; i <= len; i++)
if (input[i] != passwd[i]) {
triesLeft-- ;
return false ; // no authentication
}
// Comparison is successful
triesLeft = maxTries ;
return true ; // authentication is successful
}
functional property:
∀f .Uncompress(Compress(f )) = f (1)
(6 ∃f .Compress(f ) = c) ⇒ (Uncompress(c) 6 )
10 / 21
Why do we need to bother about crashes ?
11 / 21
Some (not standardized) definitions . . .
12 / 21
Software vulnerability examples
13 / 21
The intruder model
14 / 21
Outline
I all the daily security patches (for OS, basic applications, etc.)
17 / 21
Couter-measures and protections (examples)
Several existing mechanisms to enforce SW security
I at the OS level:
I sandboxing
I address space randomization
I non executable memory zones
I etc.
18 / 21
Techniques and tools for assessing SW security
Several existing mechanisms to evaluate SW security
I code review . . .
I fuzzing:
I run the code with “unexpected” inputs → pgm crashes
I (tedious) manual check to find exploitable vulns . . .
I (smart) testing:
coverage-oriented pgm exploration techniques
(genetic algorithms, dynamic-symbolic executions, etc.)
+ code instrumentation to detect (low-level) vulnerabilities
In practice:
I only the binary code is always available and useful . . .
I combinations of all these techniques . . .
I exploitability analysis still challenging . . .
19 / 21
Course objectives (for the part 1)
20 / 21
Course agenda (part 1)
See
http://www-verimag.imag.fr/~mounier/Enseignement/Software_Security
Credits:
I E. Poll (Radboud University)
I M. Payer (Purdue University)
I E. Jaeger, O. Levillain and P. Chifflier (ANSSI)
21 / 21