Software Security
Code: TBD · Credits: 4 · Hours: 60 · Type: ELECTIVE
Most breaches start in code. This elective treats security as a property of software engineering — design, implementation, testing, supply chain — rather than as something layered on after deployment. Covers the secure development lifecycle, the classes of bugs that produce CVEs, and the tooling that catches them early.
Key topics
- Threat modelling (STRIDE, attack trees, abuser stories).
- Memory-safety bugs in C/C++: buffer overflows, UAF, type confusion; modern mitigations (ASLR, CFI, MTE).
- Web-class bugs: injection, deserialisation, SSRF, prototype pollution.
- Cryptographic anti-patterns: ECB, predictable nonces, custom protocols.
- Code review, static analysis (semgrep, CodeQL), fuzzing (libFuzzer, AFL++, sanitizers).
- Supply chain: SBOM, dependency confusion, typosquatting, SLSA framework.
- Secure SDLC: SAMM, BSIMM, threat modelling in CI.
Learning outcomes
By the end of this subject, a student should be able to:
- Run a structured threat-model session on a new design and produce the artifact.
- Identify the top OWASP / CWE classes in unfamiliar code via review.
- Configure SAST/DAST/SCA in a CI pipeline and triage findings.
- Write a defensible vulnerability report and remediation plan.
Further reading
- Howard & LeBlanc, Writing Secure Code, 2nd ed.
- McGraw, Software Security: Building Security In.
- OWASP Top 10 (current edition), ASVS, SAMM.
- CWE / CAPEC catalogues.
Chapter notes
Detailed chapter-by-chapter notes for this subject are still being written. The topic outline above mirrors the published syllabus. If you'd like to help draft a chapter, see the contributing guide.
· min read