TDDC90 Software Security (6 ECTS)
The literature for this course is a collection of papers. Some papers may be accessible only via the university library's website.
All papers listed below and the lecture notes are manadory reading for the exam. There is also a separate list of additional material to give you a deeper understanding of the topics (not required for the exam!).
|Note: The static analysis paper by Livshits et. al. does not need to be understood in detail for the exam. (Updated 20/12-13)|
Lecture 1: Introduction
|K. M. Goertzel. Introduction to software security|
|D. Wheeler. Secure Programmer: Developing Secure Programs|
Lecture 2: Secure software development, security requirements and risk analysis
|G. McGraw. The 7 Touchpoints of Software Security|
|N. Davis. Secure Software Development LifeCycle Processes|
|P. Hope, S. Lavenhar, G. Peterson. Architectural Risk Analysis (link updated 2013-08-16)|
|G. McGraw. Risk Management Framework (link updated 2013-08-16)|
|N. Mead. Security Requirements Engineering (link updated 2013-08-16)|
|N. Mead. SQUARE Process (link updated 2013-08-16)|
Lectures 3, 4 and 5: Vulnerabilities, secure code, security testing and secure design
Lectures 3 and 4: Vulnerabilities, exploits and prevention
We are mainly concerned with the principles. Note that some of the required papers may cover attacks on protection mechanisms. You will be expected to understand both the principles of the protection mechanisms and the principles of the attack.
Lecture 5: Secure programming and design
From the following report you are expected to read the introduction (pages 1-4) and the details of at least three patterns of your choice other than PrivSep.
|C. Dougherty, K. Sayre, R. C. Seacord, D. Svoboda, K. Tagashi. Secure Design Patterns. Technical Report CMU/SEI-2009-TR-010.|
Lecture 5: Security testing
Some of the papers in this section describe specific tools. These tools are representative of a class of approaches to static or dynamic analysis. You will be expected to understand the principles and ideas behind the tools, but you are not required to remember details about individual tools.
|P. Oehlert. Violating assumptions with fuzz testing. IEEE Security & Privacy, 2005.|
From the following paper you need to understand the concept and use of whitebox fuzz testing. You do not need to understand the specific algorithm. Read section 1 and the conclusions of section 4 and 6. Skim through the rest of ther material to get an overview.
|P. Godefroid, M. Levin, D. Molnar. Automated Whitebox Fuzz Testing. Microsoft Research Technical Report MSR-TR-2007-58.|
Lecture 6: Software engineering reviews
There is no mandatory reading for this lecture, except the slides, but we reccommend that you read the additional material on code inspections before this lecture.
Lecture 7: Static analysis
|P. Emanuelsson, U. Nilsson. A comparative study of industrial static analysis tools (extended version).|
|V. B. Livshits, M. Lam. Finding Security Vulnerabilities in Java Applications with Static Analysis|
Lecture 8: Security modeling
Lecture 9: Common criteria
There is no mandatory material, except the slides, for the guest lecture on common criteria (lecture 9), but we reccommend that you look at the additional material for this topic.
Lecture 10: Course wrap-up
There is no mandatory material, except the slides, for this lecture.
Page responsible: Nahid Shahmehri
Last updated: 2013-12-20