CYBV472 Secure Software Development & Assessment


Secure Software Development & Assessment

Course Description

CYBV 472 will provide students with an introduction to the secure software development process as well as how to conduct a software security analysis to safely perform static and dynamic analysis of software of potentially unknown origin, including obfuscated malware, to detect the presence of weaknesses that may lead to exploitable vulnerabilities in operational systems. Students will learn how to write, analyze, and test secure software that maintains Confidentiality, Integrity and Availability. This includes the use of hands-on labs and exercises to examine the fundamental principles of software reverse engineering and exploit development. There will be a strong C and assembly language focus in discussions and labs. CYBV 472 meets the National Security Agency (NSA) Center of Academic Excellence in Cyber Operations (CAE-CO) academic requirements for Secure Software Development and Software Security Analysis.

Learning Outcomes

The student will:

  • Demonstrate that they understand the techniques specifying program behavior, the classes of well-known defects, how they manifest themselves in various languages.
  • Identify and describe how poor coding affects security and can identify common coding errors.
  • Demonstrate that they are capable of authoring programs that are free from defects and can document their code with clear and succinct explanations, so other professionals can enhance and maintain the developed code.
  • Be capable of analyzing existing source code for functional correctness.
  • Be capable of applying industry standard tools that analyze software for security vulnerabilities.
  • Define and demonstrate the disassembly process using IDA Pro.
  • Explain the principles of debugging both userspace and kernel space processes.
  • Be capable of reverse engineering an unknown binary to identify the existence of a vulnerability.
  • Be capable of building exploits which bypass modern exploit mitigations to gain arbitrary code execution on remote systems.