Exploiting Software:
How to Break Code

"Software Quality Management solutions"

Pop quiz

Slide 4

Commercial security is reactive

Builders versus operators

Making software behave is hard

Attaining software security is even harder

Software complexity growth

Software vulnerability growth

Science please

Who is the bad guy?

Modern security is about managing risks

Slide 14

Security problems are complicated

BUG: The dreaded buffer overflow

Pervasive C problems lead to BUGS

FLAW: Architectural problems with Java

Attackers do not distinguish bugs and flaws

Attacker’s toolkit: dissasemblers and decompilers

Attacker’s toolkit: control flow and coverage

Attacker’s toolkit: APISPY32

Attacker’s toolkit: breakpoints

Attacker’s toolkit: the buffer overflow

Attacker’s toolkit: shell code and other payloads

Attacker’s toolkit: rootkits

Attacker’s toolkit: other miscellaneous tools

How attacks unfold

Knowledge: 48 Attack Patterns

Attack pattern 1:
Make the client invisible

Attack pattern 2:
Command delimiters

Attack pattern 3:
Cross site scripting

Breaking stuff is important

Slide 34

Software security critical lessons

Towards a solution

Ten guiding principles for secure design

The antidote: Software security in the SDLC

Best practices reprise

Slide 40

IEEE Security & Privacy Magazine

Pointers