CMPS 4510 Vulnerability Analysis (4)
Identification and quantification of security weaknesses in programs, systems 
and networks. Topics include professional ethics, static binary analysis, 
dynamic binary analysis, anti-analysis techniques, risk assessment, 
penetration testing, vulnerability classification and mitigation techniques. 
Prerequisite: CMPS 3500
Knowledge of formal computer language grammar 
Basics of computer language translation 
Completing CMPS 3140 (Theory of Computation) before taking this course is 
strongly recommended to obtain a stronger background in automata and formal
languages.
4 semester units. 3 units lecture (150 minutes), 1 unit lab (150 minutes).
Selected elective for CS
The Art of Software Security Assessment: Identifying and Preventing Software
Vulnerabilities. Mark Dowd, John McDonald, Justin Schuh. Addison-Wesley, 2007,
ISBN-13: 978-0-321-44442-4.
None
Melissa Danforth
This course covers the following ACM/IEEE CS2013 (Computer Science) 
Body of Knowledge student learning outcomes: 
CS-IAS/Foundational Concepts in Security
CS-IAS/Principles of Secure Design
CS-IAS/Defensive Programming
CS-IAS/Threats and Attacks
CS-PL/Static Analysis
CS-SE/Software Construction
The course maps to the following performance indicators for Computer Science
(CAC/ABET):
- 3e. An understanding of professional, ethical, legal, security, and social 
issues and responsibilities.
 - 
 
- 3j. An ability to apply mathematical foundations, algorithmic principles, 
and computer science theory in the modeling and design of computer-based 
systems in a way that demonstrates comprehension of the tradeoffs involved in 
design choices.
 - 
 
| Week | Chapter(s) | Topics | 
| 1 | Chapters 1 and 2 | 
Classic security goals (confidentiality, integrity, etc.), Threats, Vulnerabilities | 
| 2 | Chapters 1 and 3 | 
Audits, Threat exposure | 
| 3 | Chapter 5 | 
Memory corruption: buffer overflows, heap overflows | 
| 4 | Chapter 5 | 
Memory corruption: global and static data, shellcode, protection mechanisms | 
| 5 | Chapter 6 | 
C/C++ language issues | 
| 6 | Chapter 8 | 
String and character handling issues | 
| 7 | Chapter 4 | 
Auditing tools for source code and binary analysis | 
| 8 and 9 | Chapter 7 | 
Auditing techniques for source code analysis | 
| 10 and 11 | Outside information | 
Auditing techniques for binary analysis | 
| 12 and 13 | Chapters 9 and 10 | 
Vulnerabilities and analysis for Unix/Linux systems | 
| 14 and 15 | Chapters 11 and 12 | 
Vulnerabilities and analysis for Windows systems | 
Not applicable to this course.
Melissa Danforth on 31 July 2014
Approved by CEE/CS Department on [date] 
Effective Fall 2016