TDT4237 - Software Security and Data Privacy

Course Summary

Course Summary - In detail

1. Security concepts and principles

Understand basic security goals

Understand typical attacks

Apply high-level security guidelines

  1. Secure the weakest link
  2. Practice defense in depth
  3. Fail securely
  4. Compartmentalize
  5. Be reluctant to trust
  6. Follow the principle of least privilege
  7. Keep it simple
  8. Promote privacy
  9. Remember that hiding secrets is hard
  10. Use your community resources

2. OWASP Top 10

Injection attacks (A03:2021)
Session management attacks
Broken access control (A01:2021)
Server-Side Request Forgery (SSRF) attack (A10:2021)
Security misconfiguration (A05:2021)
Software and data integrity failure (A08:2021)
Identification and authentication failure (A07:2021)
Security logging and monitoring failures (A09:2021)
HTML security issues

Be able to find out vulnerabilities in Python code snippets and know how to fix them

Other authentication countermeasures:

3. Cryptography introduction

Explain various cryptography methods presented in the slides

The following use symmetric encryption (shared private key)

Explain public & private key concepts, digital signature, certificates, and SSL handshake

Apply the cryptography methods correctly

4. Authorization and Multi-Level Security Authentication and Single sign-on Control hijacking attacks

Explain discretionary, mandatory, role-based, and attribute-based access control policy and their pros and cons

Explain Biba and Bell-Lapdula models

Explain SSO, SAML 2.0, OAuth 2.0, OpenID

Explain buffer overflow attack and mitigation

5. Static analysis and tools for security

Explain different static analysis approaches

6. GDPR and Privacy by Design

Explain relationship between security and privacy

Privacy is a subset of security, as protecting personal information is one aspect of securing a software system. (chatGPT)

GDPR

General Data Protection Regulation (GDPR) concerns personal information

  1. Transparency,
  2. Purpose,
  3. Rights,
  4. Fair use,
  5. Minimalisation

List direct and indirect identifiers of a natural person

List what can be sensitive personal data

Sensitive information isdata that must be protected from unauthorized access to safeguard the privacy or security of an individual or organization.

Explain the principles of Privacy by Design

Privacy by design is based on seven "foundational principles"

  1. Proactive not reactive; preventive not remedial
  2. Privacy as the default setting
  3. Privacy embedded into design
  4. Full functionality - positive-sum, not zero-sum
  5. End-to-end security - full lifecycle protection
  6. Visibility and transparency - keep it open
  7. Respect for user privacy - keep it user-centric

7. Threat modeling and STRIDE

Explain what threat modeling is about

Threat modeling looks at a system from an adversary's perspective to anticipate attack goals

Explain the difference between attacker-centric and software-centric threat models

Attacker-centric

One of the first things the security engineer needs to do when tackling a new problem is to identify the likely opponents. What sort of capabilities will the adversaries have, and what motivation?

Some categories of possible threat agents are spooks, crooks, geeks, terrorists, CEO criminals, the swamp and insiders.

Software-centric

Software-centric models are models that focus on the software being built or a system being deployed

  1. Identify critical assets
  2. Decompose the system to be assessed
  3. Identify possible points of attack
  4. Identify threats
  5. Categorise and prioritise the threats
  6. Mitigate

Apply various threat modeling methods, e.g., misuse case, attack tree, bow-tie and data flow diagrams

Explain and apply STRIDE

8. Penetration Testing for Web applications

Explain practices and challenges of penetration testing in industry

  1. Understand the application you’re testing
  2. Quickly check for “low hanging fruit”
    • Scanners and tools can help, but don't rely on them
  3. Spend time diving deep into what makes sense
  4. Only go as far as necessary to demonstrate a security risk

9. Risk management during development

Identify, rank, track, and understand software security risk as it changes over time. Risk management is a continuous and iterative process.

Explain the various steps typical of risk management (e.g., RMF)

Risk management framework (RMF)

  1. Understanding the business context
  2. Identify business risks and technical risks
  3. Synthesize and prioritize risks (impact / likelihood)
  4. Define the risk mitigation strategy
  5. Carry out fixes and validate

Tools to help identify technical risks: Misuse cases, attack trees, and data flow diagram, etc.

Explain approaches on how to quantify risks

Apply RMF to analyze the security of a system

Define security requirements. Explain the difference between good and bad security requirements

Define a vulnerability score, e.g. Common Vulnerability Scoring System (CVSS)

https://www.first.org/cvss/calculator/3.1

10. Software Security Activities and Secure Software Development LifeCycles

Explain the basic concepts and tools of best practices in software development

Explain security activities

11. AI for security Social Engineering

Explain how AI and cybersecurity relate

Explain common techniques used for social engineering