Get in Touch

Course Outline

Day 1

IT Security and Secure Coding Foundations

  • The fundamental nature of security.
  • Key terminology related to IT security.
  • Defining risk.
  • Various dimensions of IT security.
  • Security requirements across different application domains.
  • Distinguishing between IT security and secure coding.
  • From vulnerabilities to botnets and cybercrime.
    • The nature of security flaws.
    • Reasons why detecting and fixing flaws is difficult.
    • The progression from infected machines to targeted attacks.
  • Classifying security flaws.
    • Landwehr’s taxonomy.
    • The Seven Pernicious Kingdoms.
    • OWASP Top Ten (2013).
    • Comparing OWASP Top Ten from 2003 to 2013.

Introduction to the Microsoft® Security Development Lifecycle (SDL)

  • Course agenda.
  • The reality of applications under attack.
    • The evolution of cybercrime.
    • A shift in attacker focus toward applications.
    • The prevalence of vulnerabilities in smaller Independent Software Vendor (ISV) applications.
  • The origins of the Microsoft SDL.
    • A timeline of security milestones at Microsoft.
    • Determining which applications must comply with SDL standards.
  • Overview of the Microsoft Security Development Lifecycle.
    • Core principles of the Microsoft Security Development Lifecycle (SDL).
    • Pre-SDL requirements: Mandatory security training.
    • Phase One: Requirements.
    • Phase Two: Design.
    • Phase Three: Implementation.
    • Phase Four: Verification.
    • Phase Five: Release – Response Plan.
    • Phase Five: Release – Final Security Review.
    • Phase Five: Release – Archive.
    • Post-SDL requirement: Incident response.
    • SDL process guidance for Line of Business (LOB) applications.
    • SDL guidance for Agile methodologies.
    • Why secure software development necessitates process improvement.

Secure Design Principles

  • Understanding the attack surface.
    • Strategies for reducing the attack surface.
    • Illustrative examples of the attack surface.
    • Methods for analyzing the attack surface.
    • Practical examples of attack surface reduction.
  • Privacy considerations.
    • Fundamentals of privacy in software.
    • Analyzing application behaviors and concerns.
  • Defense in depth.
    • Core SDL principle: Defense in depth.
    • Examples of defense in depth.
  • The principle of least privilege.
    • Examples of implementing least privilege.
  • Establishing secure defaults.
    • Examples of secure defaults.

Secure Implementation Principles

  • Course agenda for implementation.
  • Overview of the Microsoft Security Development Lifecycle (SDL).
  • Fundamentals of buffer overflows.
    • Main registers in Intel 80x86 processors.
    • Memory address layout.
    • Function calling mechanisms in C/C++ on x86 architecture.
    • Local variables and the stack frame.
    • Stack overflows.
      • Buffer overflows on the stack.
      • Introduction to exercises.
      • Exercise: BOFIntro.
      • Exercise BOFIntro: Determining the stack layout.
      • Exercise BOFIntro: Writing a simple exploit.
  • Input validation techniques.
    • Core concepts of input validation.
    • Understanding integer-related problems.
      • Representation of negative integers.
      • Integer overflow scenarios.
      • Arithmetic overflow – predicting the output.
      • Exercise: IntOverflow.
      • Evaluating the value of Math.Abs(int.MinValue).
    • Mitigating integer problems.
      • Strategies for integer problem mitigation.
      • Preventing arithmetic overflow in addition.
      • Preventing arithmetic overflow in multiplication.
      • Detecting overflow using the 'checked' keyword in C#.
      • Exercise: Utilizing the checked keyword in C#.
      • Exceptions triggered by overflows in C#.
    • Case study: Integer overflow in .NET.
      • A real-world example of an integer overflow vulnerability.
      • Exploiting this integer overflow vulnerability.
    • Path traversal vulnerabilities.
      • Mitigation strategies for path traversal.

Day 2

Secure Implementation Principles (Continued)

  • Injection attacks.
    • Common SQL Injection attack vectors.
    • Blind and time-based SQL injection techniques.
    • Protection methods against SQL injection.
    • Command injection attacks.
  • Broken authentication and password management.
    • Exercise: Examining the weaknesses of hashed passwords.
    • Best practices for password management and storage.
    • Specialized hash algorithms for secure password storage.
  • Cross-Site Scripting (XSS).
    • Understanding Cross-Site Scripting (XSS).
    • CSS injection vulnerabilities.
    • Exploitation techniques: Injection via other HTML tags.
    • XSS prevention strategies.
  • Missing function-level access control.
    • Filtering file uploads securely.
  • Practical cryptography.
    • Ensuring confidentiality using symmetric cryptography.
    • Symmetric encryption algorithms.
    • Block ciphers and their modes of operation.
    • Hash functions and message digests.
    • Hash algorithms.
    • Message Authentication Code (MAC).
    • Ensuring integrity and authenticity with symmetric keys.
    • Ensuring confidentiality with public-key encryption.
    • Key rule: Possession of the private key.
    • Common mistakes in password management.
    • Exercise: Hard-coded passwords.
    • Summary of cryptographic principles.

Secure Verification Principles

  • Comparing functional testing with security testing.
  • Identifying security vulnerabilities.
  • Prioritization of security issues.
  • Integrating security testing into the SDLC.
  • Steps in test planning, including risk analysis.
  • Scoping and information gathering.
    • Identifying stakeholders.
    • Assessing assets.
    • Analyzing the attack surface.
    • Defining security objectives for testing.
  • Threat modeling methodologies.
    • Fundamentals of threat modeling.
    • Developing attacker profiles.
    • Threat modeling using attack trees.
    • Threat modeling based on misuse/abuse cases.
    • Misuse/abuse cases: A simple online shop example.
    • STRIDE per element approach to threat modeling (Microsoft SDL).
    • Identifying specific security objectives.
    • Diagramming: Examples of Data Flow Diagram (DFD) elements.
    • Data flow diagram example.
    • Threat enumeration: MS SDL’s STRIDE and DFD elements.
    • Risk analysis: Classifying threats.
    • The DREAD threat/risk ranking model.
  • Security testing techniques and tools.
    • General testing approaches.
    • Techniques applied at various SDLC stages.
  • Code review processes.
    • Code review for software security.
    • Taint analysis.
    • Heuristic analysis.
  • Static code analysis.
    • Principles of static code analysis.
    • Exercise: Using static code analysis tools.
  • Testing the implementation.
    • Manual runtime verification.
    • Manual vs. automated security testing.
    • Penetration testing.
    • Stress testing.
  • Fuzzing techniques.
    • Automated security testing through fuzzing.
    • Challenges associated with fuzzing.
  • Web vulnerability scanners.
    • Exercise: Using a vulnerability scanner.
  • Checking and hardening the environment.
    • Common Vulnerability Scoring System (CVSS).
    • Vulnerability scanners.
    • Public vulnerability databases.
  • Case study: Bypassing Forms Authentication.
    • NULL byte termination vulnerabilities.
    • The Forms Authentication Bypass vulnerability in code.
    • Exploiting the Forms Authentication Bypass.

Additional Knowledge Sources

  • Secure coding sources – an introductory kit.
  • Vulnerability databases.
  • .NET secure coding guidelines available on MSDN.
  • .NET secure coding cheat sheets.
  • Recommended books for .NET and ASP.NET.
 14 Hours

Number of participants


Price per participant

Testimonials (3)

Upcoming Courses

Related Categories