IS893: Advanced Software Security

Logistics

Course Description

This course covers advanced topics in software security. Students will be exposed to techniques that are gaining increasing attention in the software security research communities through research papers and programming assignments. Students will have opportunities to develop their scientific communication skills through writing their own project proposals and presenting their solutions.

Grading

  • Homework: 40%
  • Paper Presentation: 30%
  • Project: 30%

Textbook

Homework

This course includes programming assignments through which students will learn how to design and implement dynamic and static program analyzers.

  • We will use Github/Github Classroom to provide skeleton code and manage submissions. Make sure you have a Github account and get the student developer pack benefits. Moreover, student should get familiar with git. If you are new to git, see this book. All submissions will be managed using Github. For each assignment, a unique invitation URL for Github Classroom will be posted in this page. Once you accept the invitation, a private repository for your assignment will be created. You can push as many commits as you want before the deadline. We will grade the final commit of your master branch. The late homework policy is as follows:

    • 80% credit for one day late
    • 50% credit for two days late
    • NO credit given after two days late
  • Students will use the OCaml programming language for the assignments. For more details of OCaml, see the following meterials:

  • Students will use the LLVM infrastructure and implement various tools that analyze programs written in LLVM IR code. LLVM IR code can be generated from many source languages such as C/C++/Obj-C, Swift, Rust, Scala, Haskell, etc. For more details of LLVM, see this document.

  • Students will use the Z3 theorem prover that automatically prove logical contraints (e.g., safety conditions) generated by your analyzer from LLVM IR.

Academic Integrity Violation

Students who violates academic integrity will get an F.

Schedule (tentative)

# Topics Reading Presentation Tools Homework
- Presentation Schedule
- Project Guideline Project
0 Functional Programming in OCaml
1 Introduction HW0: Hello-world
2 Part 1: Basic Concepts HW1: OCaml Programming
3 Exploitation ASLR/CCS04
ROP/CCS07
COOP/S&P15
KOOBE/USENIXSEC20
ROP/정재황
KOOBE/김현수
ASLR/강우석
COOP/홍재민
GSA
4 Software Integrity CFI/CCS05
DFI/OSDI06
Conti/CCS15
CPI/OSDI14
CFB/USENIXSEC15
TypeArmor/S&P16
CFI/이대진
TypeArmor/신명근
CPI/류혜원
LLVM-CFI
5 Part 2: Dynamic Approaches
6 Runtime Monitoring ASan/USENIXATC12
SoftBound/PLDI09
ASan/이대진
SoftBound/정재황
LLVM-ASAN HW2: SmaLLVM Sanitizer
7 Fuzzing DeepXplore/SOSP17
NEZHA/S&P17
NAUTILUS/NDSS20
NEZHA/홍재민
NAUTILUS/강우석
DeepXplore/류혜원
AFL
LLVM-LibFuzzer
HW3: SmaLLVM Fuzzer
8 Cause Reduction C-Reduce/PLDI12 C-reduce/김현수 C-Reduce HW4: SmaLLVM Delta
9 Fault Localization CBI/PLDI05
CCC/PLDI11
CBI
10 Part 3: Static Approaches Astree/PLDI03
11 Data-flow Analysis HW5: SmaLLVM Dataflow
12 Logic and Constraint Languages
13 Constraint-based Analysis Securify/CCS18, Ethainter/PLDI20 Ethainter/정재황 HW6: SmaLLVM Constraint-based analyzer
14 Type Systems CCured/TOPLAS05
TypeEq/CCS17
CCured/홍재민 CheckerFramework HW7: SmaLLVM Type Checker
15 Symbolic Execution Dart/PLDI05
KLEE/OSDI08
KLEE
16 Program Verification CEGAR/CAV00
VeriSmart/S&P20
CEGAR/김현수 SeaHorn
17 Project Presentation