COMP 6511B: Advanced Software Testing (Spring 2024) 


Lecture Details

Instructor: Dongdong She (dongdong@cse.ust.hk)
Office hours: Tuesday (1:30-2:30 pm) Room 3505
TA: Xunguang Wang (xwanghm@cse.ust.hk)
TA Office hours: TBD
Classroom: Room 2503
Class hours: Monday and Wednesday (12:00-1:20 pm)

Course Description

Software vulnerabilities profoundly impact our daily lives, from global ransomware attacks to various sensitive information leakage. Software testing is a program analysis technique to discover these vulnerabilities. This course will cover classic software techniques such as fuzzing, symbolic execution, and formal methods. The latest trend of leveraging machine learning (i.e., LLM, ChatGPT) to assist software testing and neural-symbolic software testing are also included.

Course Goal

The general goal of this course is to help you gain a solid understanding of software testing techniques such as fuzzing, symbolic execution, and formal methods. You can also learn the most recent works of software testing techniques and ML-based software testing.

Course Format and Student Workload

This course will center around paper readings, presentations, and discussions; and a final project. The course readings include a list of research papers selected from top-tier security, software engineering and systems conferences. We will discuss roughly one or two papers every class meeting. For the in-depth discussions to be possible, you will have to read the papers carefully before class.

You have three main responsibilities in the course:

Prerequisite

COMP 3633 Principles of Cybersecurity, COMP 4211 Machine Learning (optional), or equivalents of these two courses.  

Grading 


Schedule


Date

Topics

Lecture slides & Reading

31/01 

Introduction  

slides

05/02 

Real-world security bugs 

slides, additional reading: heartbleed, gotofail, DirtyCOW, Debian randomness fiasco.

07/02 

Control flow analysis 

slides, additional reading: Control Flow Analysis, Using llvm to view CFG (Slide 6).

14/02 

Data flow analysis 

slides, additional reading: Data Flow Analysis.

19/02 

Symbolic execution 

slides, additional reading: Symbolic Execution for Software Testing: Three Decades Later (Cadar and Sen)
KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs (Cadar et al.)
CUTE: A Concolic Unit Testing Engine for C (Sen et al.)

21/02 

Symbolic execution (cntd.) 

additional reading: DART: Directed Automated Random Testing (Godfroid et al.)
Symbolic execution and program testing (King et al.)

26/02 

Fuzzing 

slides, additional reading: The fuzzing book. Part II: Lexical Fuzzing

28/02 

Fuzzing (cntd.) 

additional reading: Fuzzing: The State of the Art (McNally et al.)

04/03 

Taint analysis 

slides, additional reading: Dynamic Taint Analysis for Automatic Detection, Analysis, and Signature Generation of Exploits on Commodity Software
All You Ever Wanted to Know About Dynamic Taint Analysis and Forward Symbolic Execution


06/03

Formal methods



11/03

Paper reading: ML-based fuzzing 

slides, additional reading: Learn&Fuzz: Machine Learning for Input Fuzzing
NEUZZ: Efficient Fuzzing with Neural Program Smoothing


13/03


Paper reading: RL-based fuzzing

Deep Reinforcement Fuzzing
Effectively Generating Vulnerable Transaction Sequences in Smart Contracts with Reinforcement Learning-guided Fuzzing


18/03


Paper reading: ML-based symbolic execution

Learning to Explore Paths for Symbolic Execution
Enhancing Symbolic Execution by Machine Learning Based Solver Selection


20/03


Midterm Demo




25/03


Paper reading:Neural-symbolic execution

Neuro-Symbolic Execution: Augmenting Symbolic Execution with Neural Constraints


27/03


Paper reading:Neural-symbolic fuzzing

Large Language Model guided Protocol Fuzzing


08/04


Paper reading:ML-based compiler fuzzing

Compiler Fuzzing through Deep Learning


10/04


Paper reading:LLM-based compiler fuzzing

Fuzz4All: Universal Fuzzing with Large Language Models


15/04


Paper reading:ML-based smart contract fuzzing

Learning to Fuzz from Symbolic Execution with Application to Smart Contracts


17/04


Paper reading:LLM-based smart contract fuzzing

LLM4Fuzz: Guided Fuzzing of Smart Contracts with Large Language Models


22/04


Paper reading:ML-based autonomous vehicles fuzzing

Neural Network Guided Evolutionary Fuzzing for Finding Traffic Violations of Autonomous Vehicles


24/04


Paper reading:LLM-based autonomous vehicles fuzzing

Guided Conditional Diffusion for Controllable Traffic Simulation


29/04


Paper reading:LLM-generated fuzzer harness

FUDGE: Fuzz Driver Generation at Scale
Fuzz target generation using LLMs


06/05


Paper reading:Jailbreak LLM using fuzzing

GPTFUZZER: Red Teaming Large Language Models with Auto-Generated Jailbreak Prompts


08/05


Project presentation



Advice