Skip to main content

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