Many security vulnerabilities arise at the programming level. These can often be attributed to inadequate handling of exceptional situations, poor understanding of the details of the programming language in use, incomplete descriptions of the interface between components, and insufficient care in the treatment of concurrency and threading issues. Moreover, there is often a mismatch between high-level security requirements and the corresponding code-level requirements. This course addresses those problems from a programming perspective in a security context, with the aim of improving the practitioner's ability in designing, writing, and reviewing security-critical code.
|26th February 2018||Oxford University Department of Computer Science||0 places remaining.|
The successful participant will: be able to understand the fundamental sources of vulnerabilities arising at the programming level, and how this relates to evolving threat models; have an understanding of the conceptual tools needed to mitigate and eliminate these vulnerabilities; have gained practical experience in developing and analysing security critical code fragments; be able to place such practices appropriately within a systems development methodology.
- Motivation Explore the causes between some well known software security problems and motivating examples. Define terms used throughout the course.
- Foundations of code vulnerabilities: from design to code Introduce vulnerability and attack examples; understand fundamentals of cause, detection during review, and mitigation.
- Operating systems considerations and security consequences Introduce vulnerability and attack examples; understand fundamentals of cause, detection during review, and mitigation. This includes, e.g., arbitrary code execution and privilege escalation.
- Non-compositionality of security Introduce vulnerability and attack examples; understand fundamentals of cause, detection during review, and mitigation. This includes, e.g., SQL injection and classes of web vulnerabilities.
- The abstraction dilemma: Side channel attacks Introduce vulnerability and attack examples; understand fundamentals of cause, detection during review, and mitigation
This module does not require prior knowledge of any other modules. However, participants should also have a good, detailed understanding of programming in some language, for example to the level offered by the Object-Oriented Programming module. For understanding the principles behind detection and mitigation, affinity with mathematics is highly recommended, for example as in the Software Engineering Mathematics module.