UW, UAB and TrustedCI logos

Introduction to Software Security

Barton P. Miller and Elisa Heymann

Contacts: bart@cs.wisc.edu and elisa@cs.wisc.edu.

© 2023-2026 Barton P. Miller and Elisa Heymann All rights reserved.
Instructors may link to this page and students are free to use these resources for their personal use.

Instructors: You can find the Instructors' Page with teaching information and directions to access the active learning exercises and quizzes. You will need to request access permission from us for these resources.

Students: This is a free and open resource for you to use to help you learn about software security. If you would like to support this effort and help us keep it up to date and expand the content, please feel free to donate $5 - $10 - $20 - $50 - or click here to donate any amount you want.

The book is now in print!

  You can now get the entire book in one volume! It is available on Amazon in most countries, such as amazon.com, amazon.es, amazon.de, amazon.co.uk, amazon.co.jp.

Note that even with the book published, we are committed to keeping the individual chapters freely available on this website.

Module 1: Introduction
Chapter 1
Introduction

Link to video Link to text chapter
2
Introduction (part 1)
Basic Terminology

Link to video Link to text chapter
Closed caption English, Español
2
Introduction (part 2)
Threats

Link to video Link to text chapter
Closed caption English, Español
2
Introduction (part 3)
Risks and Basic Concepts

Link to video Link to text chapter
Closed caption English, Español
3
Thinking Like an Attacker: Owning the Bits

Link to video Link to text chapter
Closed caption English, Español
Module 2: Thinking Like a Designer
4
Secure Design Principles

Link to video Link to text chapter Link to hands-on exercise
5
Overview of Threat Modeling

Link to video Link to text chapter Link to hands-on exercise
6
Microsoft Security Design Lifecycle and Threat Modeling Methodology

Link to video Link to text chapter Link to hands-on exercise
7
Microsoft DREAD Threat Categories

Link to video Link to text chapter Link to hands-on exercise
8
PASTA Threat Modeling Methodology

Link to video Link to text chapter Link to hands-on exercise
Module 3: Thinking Like a Programmer: Secure Programming
9
Pointers and Strings

Link to video Link to text chapter Link to hands-on exercise
Closed caption English, Español
10
Numeric Errors: Integers

Link to video Link to text chapter Link to hands-on exercise
Closed caption English, Español
11
Numeric Errors: Floating Point

Link to video Link to text chapter Link to hands-on exercise
12
Directory Traversal

Link to video Link to text chapter Link to hands-on exercise
Closed caption English, Español
13
Exceptions

Link to video Link to text chapter Link to hands-on exercise
Closed caption English, Español
14
Serialization

Link to video Link to text chapter Link to hands-on exercise
Closed caption English, Español
15
Introduction to Injection Attacks

Link to video Link to text chapter
Closed caption English, Español
16
SQL Injections

Link to video Link to text chapter Link to hands-on exercise
Closed caption English, Español
17
Command Injections

Link to video Link to text chapter Link to hands-on exercise
Closed caption English, Español
18
Code Injections

Link to video Link to text chapter Link to hands-on exercise
Closed caption English, Español
19
XML Injections

Link to video Link to text chapter Link to hands-on exercise
Closed caption English, Español
20
Web Attacks:
Background

Link to video Link to text chapter
Closed caption English, Español
21
Web Attacks:
Cross Site Scripting (XSS)

Link to video Link to text chapter Link to hands-on exercise
Closed caption English, Español
22
Web Attacks:
Cross Site Request Forgery (CSRF)

Link to video Link to text chapter Link to hands-on exercise
Closed caption English, Español
23
Web Attacks:
Session Management

Link to video Link to text chapter Link to hands-on exercise
Closed caption English, Español
24
Web Attacks:
CORS

Link to video Link to text chapter Link to hands-on exercise
Closed caption English
25
Server Side Request Forgery (SSRF)

Link to video Link to text chapter Link to hands-on exercise

Web Attacks:
Redirection

Link to video Link to text chapter
Closed caption English, Español

Mobile: Background

Link to video Link to text chapter
Closed caption English, Español

Mobile: Attacks

Link to video Link to text chapter Link to hands-on exercise
Closed caption English, Español
Module 4: Defensive Techniques
26
Address Space Layout Randomization (ASLR)

Link to video Link to text chapter Link to hands-on exercise
Closed caption English
27
Memory Safety Checks

Link to video Link to text chapter Link to hands-on exercise
Closed caption English
28
Control Flow Integrity Checks

Link to video Link to text chapter Link to hands-on exercise
Module 5: Thinking Like an Analyst: In-Depth Vulnerability Assessment
29
Introduction to FPVA, First Principles Vulnerability Assessment

Link to video Link to text chapter
Closed caption English
30
FPVA Step 1: Architectural Analysis (part 1)

Link to video Link to text chapter Link to hands-on exercise
Closed caption English
30
FPVA Step 1: Architectural Analysis (part 2)

Link to video Link to text chapter Link to hands-on exercise
Closed caption English
31
FPVA Step 2: Resource Identification

Link to video Link to text chapter Link to hands-on exercise
Closed caption English
32
FPVA Step 3: Trust and Privilege Analysis

Link to video Link to text chapter Link to hands-on exercise
Closed caption English
33
FPVA Step 4: Component Analysis (part 1)

Link to video Link to text chapter Link to hands-on exercise
Closed caption English
33
FPVA Step 4: Component Analysis (part 2)

Link to video Link to text chapter Link to hands-on exercise
Closed caption English
33
FPVA Step 4: Component Analysis (part 3)

Link to video Link to text chapter Link to hands-on exercise
Closed caption English
34
FPVA Step 5: Dissemination of Results

Link to video Link to text chapter Link to hands-on exercise
35
The Manager's Point of View: Responding to a Vulnerability

Link to video Link to text chapter Link to hands-on exercise
Closed caption English
Module 6: Thinking Like an Analyst: Automated Assessment Tools
36
Static Analysis Tools Concepts

Link to video Link to text chapter Link to hands-on exercise
Closed caption English
37
Dependency Analysis Tools: Conceptual Background

Link to video Link to text chapter Link to hands-on exercise
Closed caption English
37
Dependency Tools: How to Use the Tools

Link to video Link to text chapter Link to hands-on exercise
Closed caption English
Module 7: Dynamic Techniques (Fuzz Testing and Other Checkers)
38
Introduction to Fuzz Testing

Link to video Link to text chapter Link to hands-on exercise
Closed caption English

Classic Fuzz Testing:
Background

Link to video
Closed caption English
39
Classic Fuzz Testing:
The Command Line Studies

Link to video Link to text chapter
Closed caption English
40
Classic Fuzz Testing:
The GUI-Based Studies

Link to video Link to text chapter
Closed caption English
41
Classic Fuzz Testing:
Other Studies

Link to video Link to text chapter
Closed caption English
42
Fuzz Testing with AFL++

Link to video Link to text chapter Link to hands-on exercise
Closed caption English
43
Memory Error Checking Tools

Link to video Link to text chapter Link to hands-on exercise

Classic Fuzz Web Resources

Link to text chapter
Closed caption English
Module 8: Secure Use of Cryptography

Basic Cryptography Concepts

Link to video Link to text chapter
Closed caption English

Java Crypto API Misuses and Cryptoguard

Link to video Link to text chapter
Closed caption English
Supplementary Sections
Glossary of Terms
Link to text chapter


Valid HTML 4.01 Transitional
Last modified: Wed May 20 01:14:28 PM CDT 2026 by bart