Get in Touch

Course Outline

Day 1

IT Security and Secure Coding

  • Understanding the nature of security
  • Key terminology in IT security
  • Defining risk
  • Various dimensions of IT security
  • Security requirements across different application domains
  • Distinguishing IT security from secure coding
  • Tracing the path from vulnerabilities to botnets and cybercrime
    • Characteristics of security flaws
    • Factors contributing to complexity
    • From infected systems to targeted attacks
  • Classifying security flaws
    • Landwehr’s taxonomy
    • The Seven Pernicious Kingdoms
    • OWASP Top Ten (2013)
    • Comparison of OWASP Top Ten (2003 vs. 2013)

Introduction to the Microsoft® Security Development Lifecycle (SDL)

  • Agenda
  • Applications under attack...
    • The evolution of cybercrime
    • Vulnerabilities in smaller Independent Software Vendor (ISV) applications
  • Origins of the Microsoft SDL...
    • Microsoft’s security timeline
    • Which applications are mandated to follow SDL?
  • Microsoft Security Development Lifecycle (SDL)
    • Overview of the Microsoft Security Development Lifecycle (SDL)
    • Pre-SDL Requirements: 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) Apps
    • SDL Guidance for Agile Methodologies
    • Why Secure Software Development Requires Process Improvement

Secure Design Principles

  • Attack Surface
    • Strategies for attack surface reduction
    • Illustrative examples of attack surface
    • Conducting attack surface analysis
    • Practical examples of attack surface reduction
  • Privacy
    • Privacy considerations
    • Understanding application behaviors and concerns
  • Defense in Depth
    • Core SDL Principle: Defense in Depth
    • Example of defense in depth
  • Least Privilege Principle
    • Example of least privilege
  • Secure Defaults
    • Examples of secure defaults

Secure Implementation Principles

  • Agenda
  • Microsoft Security Development Lifecycle (SDL)
  • Fundamentals of Buffer Overflow
    • Main registers in Intel 80x86 Processors
    • Memory address layout
    • Function calling mechanisms in C/C++ on x86
    • Local variables and the stack frame
    • Stack Overflow
      • Buffer overflow on the stack
      • Introduction to exercises
      • Exercise: BOFIntro
      • Exercise: BOFIntro – Determining the stack layout
      • Exercise: BOFIntro – Crafting a simple exploit
  • Input Validation
    • Concepts of input validation
    • Integer-related issues
      • Representation of negative integers
      • Integer overflow
      • Arithmetic overflow – predicting the output
      • Exercise: IntOverflow
      • What is the value of Math.Abs(int.MinValue)?
    • Mitigating integer problems
      • Strategies for integer problem mitigation
      • Avoiding arithmetic overflow in addition
      • Avoiding arithmetic overflow in multiplication
      • Detecting overflow using the checked keyword in C#
      • Exercise: Using the checked keyword in C#
      • Exceptions triggered by overflows in C#
    • Case Study – Integer overflow in .NET
      • A real-world integer overflow vulnerability
      • Exploiting the integer overflow vulnerability
    • Path Traversal Vulnerability
      • Mitigating path traversal

Day 2

Secure Implementation Principles (Continued)

  • Injection
    • Common SQL Injection attack methods
    • Blind and time-based SQL injection
    • Methods to protect against SQL Injection
    • Command injection
  • Broken Authentication – Password Management
    • Exercise – Weaknesses of hashed passwords
    • Password management and storage practices
  • Cross-Site Scripting (XSS)
    • Cross-Site Scripting (XSS) overview
    • CSS injection
    • Exploitation: injection through other HTML tags
    • XSS prevention techniques
  • Missing Function-Level Access Control
    • Filtering file uploads
  • Practical Cryptography
    • Ensuring confidentiality with symmetric cryptography
    • Symmetric encryption algorithms
    • Block ciphers – modes of operation
    • Hash or message digest
    • Hash algorithms
    • Message Authentication Code (MAC)
    • Ensuring integrity and authenticity with a symmetric key
    • Ensuring confidentiality with public-key encryption
    • Rule of thumb – possession of the private key
    • Common mistakes in password management
    • Exercise – Hard-coded passwords
    • Conclusion

Secure Verification Principles

  • Functional testing vs. security testing
  • Security vulnerabilities
  • Prioritization of issues
  • Security testing within the SDLC
  • Steps in test planning (risk analysis)
  • Scoping and information gathering
    • Stakeholders
    • Assets
    • The attack surface
    • Security objectives for testing
  • Threat Modeling
    • Threat modeling overview
    • Attacker profiles
    • Threat modeling based on attack trees
    • Threat modeling based on misuse/abuse cases
    • Misuse/abuse cases – a simple Web shop example
    • STRIDE per element approach to threat modeling – MS SDL
    • Identifying security objectives
    • Diagramming – examples of DFD elements
    • Data Flow Diagram – example
    • Threat enumeration – MS SDL’s STRIDE and DFD elements
    • Risk analysis – classification of threats
    • The DREAD threat/risk ranking model
  • Security testing techniques and tools
    • General testing approaches
    • Techniques for various steps of the SDLC
  • Code Review
    • Code review for software security
    • Taint analysis
    • Heuristics
  • Static Code Analysis
    • Static code analysis
    • Exercise – Using static code analysis tools
  • Testing the Implementation
    • Manual run-time verification
    • Manual vs. automated security testing
    • Penetration testing
    • Stress tests
  • Fuzzing
    • Automated security testing – fuzzing
    • Challenges of fuzzing
  • Web Vulnerability Scanners
    • Exercise – Using a vulnerability scanner
  • Checking and Hardening the Environment
    • Common Vulnerability Scoring System – CVSS
    • Vulnerability scanners
    • Public databases
  • Case Study – Forms Authentication Bypass
    • NULL byte termination vulnerability
    • The Forms Authentication Bypass vulnerability in the code
    • Exploiting the Forms Authentication Bypass

Knowledge Sources

  • Secure coding sources – a starter kit
  • Vulnerability databases
  • .NET secure coding guidelines at MSDN
  • .NET secure coding cheat sheets
  • Recommended books – .NET and ASP.NET
 14 Hours

Testimonials (3)

Related Categories