COMP63342 Software Security syllabus 2020-2021
This course unit detail provides the framework for delivery in 20/21 and may be subject to change due to any additional Covid-19 impact. Current students should see Blackboard/course unit related emails for any further updates.
Software is subject to numerous forms of attack such as memory corruption, buffer overflows and injection; these flaws are often too complex or expressive to be manually detected by the software developer. Techniques and tools exist to prevent and detect software flaws, which are typically too hard to be manually found, e.g., modelling, code reviews, fuzzing, static and dynamic code analyses, program verification and code tainting.
This course unit introduces students to basic and advanced approaches to formally build verified trustworthy software systems, where trustworthy comprise five attributes: reliability, availability, safety, resilience and security.
Part I: Software Security Fundamentals
- Defining a Discipline
- A Risk Management Framework
- Vulnerability Assessment and Management
- Overview on Traffic, Vulnerability and Malware Analysis
Part II: Software Security
- Code Inspection for Finding Security Vulnerabilities and Exposures (ref: Mitre’s CVE)
- Architectural Risk Analysis
- Penetration Testing, Concolic Testing, Fuzzing, Automated Test Generation
- Model Checking, Abstract Interpretation, Symbolic Execution
- Risk-Based Security Testing and Verification
- Software Security Meets Security Operations
Part III: Software Security Grows Up
- Withstanding adversarial tactics and techniques defined in Mitre’s ATT&CK™ knowledge base
- An Enterprise Software Security Program
- Assessment written exam (2 hours)
- Lectures (20 hours)
- Practical classes & workshops (20 hours)
On successful completion of this unit, a student will be able to:
On successful completion of this course unit, a student will be able to
- Explain computer security problem and why broken software lies at its heart.
- Explain continuous risk management and how to put it into practice to ensure software security.
- Introduce security properties into the software development lifecycle.
- Use software validation and verification techniques to detect software vulnerabilities and mitigate against them.
- Relate security testing and verification to risk analysis to address continued resilience when a cyber-attack takes place.
- Develop case studies to think as an attacker and mitigate them using software verification and testing.
No reading list found for COMP63342.
Links to course unit teaching materials can be found on the Department of Computer Science website for current students.