UW, UAB and TrustedCI logos

Introduction to Software Security

Videos by Elisa Heymann and Barton P. Miller
Text by Elisa Heymann, Loren Kohnfelder and Barton P. Miller

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

© 2024 Elisa Heymann, Barton P. Miller and Loren Kohnfelder.
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

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.

Users: 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.

Note about chapter numbering: In preparation for publishing our chapters in a book, over the next few months chapter numbers will change. The current system of module.unit will change a simple chapter number. For example, existing Unit 5.2 will become Chapter 30. The page style and formatting is also being updated.

During this transition, this web page will continue to use the old numbering, but some of the chapters that you access will have the new numbers.

All new chapters will use the new number system. After we complete those chapters, we will start to move the existing units to the new chapter numbers. If you have links to individual units, then those will need to be u

Sorry for any confusion that this causes!

Module 1: Introduction
1.1
Welcome and Overview

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

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

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

Link to video Link to text chapter
Closed caption English, Español
1.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
2.1
Secure Design Principles

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

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

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

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

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

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

Link to video Link to text chapter Link to hands-on exercise
Closed caption English, Español
3.3
Directory Traversal

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

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

Link to video Link to text chapter Link to hands-on exercise
Closed caption English, Español
3.6
Privilege, Sandboxing, Environments

Link to video Link to text chapter Link to hands-on exercise
3.7
Host Name Authentication

Link to video Link to text chapter Link to hands-on exercise
3.8
Introduction to Injection Attacks

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

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

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

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

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

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

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

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

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

Link to video Link to text chapter Link to hands-on exercise
Closed caption English
3.9.5
Web Attacks:
Redirection

Link to video Link to text chapter
Closed caption English, Español
3.10.1
Mobile: Background

Link to video Link to text chapter
Closed caption English, Español
3.10.2
Mobile: Attacks

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

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

Link to video Link to text chapter Link to hands-on exercise
Closed caption English
4.3
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
5.1
Introduction to FPVA, First Principles Vulnerability Assessment

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

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

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

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

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

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

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

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

Link to video Link to text chapter Link to hands-on exercise
5.7
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
6.1
How Static Analysis Tools Work (part 1)

Link to video Link to text chapter Link to hands-on exercise
Closed caption English
6.2
How Static Analysis Tools Work (part 2)

Link to video Link to text chapter Link to hands-on exercise
6.3
Tools for C and C++

Link to video Link to text chapter Link to hands-on exercise
6.4
Tools for Java

Link to video Link to text chapter Link to hands-on exercise
6.5.1
Dependency Analysis Tools: Conceptual Background

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

Link to video Link to text chapter Link to hands-on exercise
Closed caption English
6.6
Using Tools in the SWAMP

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

Link to video Link to text chapter Link to hands-on exercise
Closed caption English
7.2.1
Classic Fuzz Testing
Section 1: Background

Link to video Link to text chapter
Closed caption English
7.2.2
Classic Fuzz Testing
Section 2: Command Line Studies

Link to video Link to text chapter
Closed caption English
7.2.3
Classic Fuzz Testing
Section 3: GUI-Based Studies

Link to video Link to text chapter
Closed caption English
7.2.4
Classic Fuzz Testing
Sections 4 & 5: Other Studies, Commentary

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

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

Link to video Link to text chapter Link to hands-on exercise
Module 8: Secure Use of Cryptography
8.1
Basic Cryptography Concepts

Link to video Link to text chapter
Closed caption English
8.2
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: Mon Feb 3 03:37:06 PM CST 2025 by bart