Get in Touch

Course Outline

Day 1

IT Security and Secure Coding

  • The nature of security
  • Key IT security terminology
  • Defining risk
  • Various aspects of IT security
  • Requirements across different application domains
  • IT security versus secure coding
  • The progression from vulnerabilities to botnets and cybercrime
    • Characteristics of security flaws
    • Challenges in addressing security issues
    • From infected machines to targeted attacks
  • Classification of security flaws
    • Landwehr’s taxonomy
    • The Seven Pernicious Kingdoms
    • OWASP Top Ten 2013
    • Comparing OWASP Top Ten: 2003 vs. 2013

Introduction to the Microsoft® Security Development Lifecycle (SDL)

  • Agenda
  • Applications under attack...
    • The evolution of cybercrime
    • Focus of attacks shifting towards applications
    • The prevalence of vulnerabilities in smaller ISV applications
  • Origins of the Microsoft SDL...
    • Microsoft's Security Timeline...
    • Which applications are mandated to follow SDL?
  • Microsoft Security Development Lifecycle (SDL)
    • Microsoft Security Development Lifecycle (SDL) overview
    • 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: Response
    • SDL Process Guidance for Line of Business (LOB) Apps
    • SDL Guidance for Agile Methodologies
    • Secure Software Development Requires Process Improvement

Secure Design Principles

  • Attack Surface
    • Attack surface reduction
    • Attack Surface – Illustrative Example
    • Attack Surface Analysis
    • Attack Surface Reduction – Practical Examples
  • Privacy
    • Privacy Considerations
    • Understanding Application Behaviors and Concerns
  • Defense in Depth
    • SDL Core Principle: Defense In Depth
    • Defense in Depth – Illustrative Example
  • Least Privilege Principle
    • Least Privilege – Illustrative Example
  • Secure Defaults
    • Secure Defaults – Practical Examples

Secure Implementation Principles

  • Agenda
  • Microsoft Security Development Lifecycle (SDL)
  • Buffer Overflow Fundamentals
    • Intel 80x86 Processors – Primary Registers
    • Memory Address Layout
    • Function Calling Mechanism in C/C++ on x86
    • Local Variables and the Stack Frame
    • Stack Overflow
      • Buffer Overflow on the Stack
      • Exercises – Introduction
      • Exercise: BOFIntro
      • Exercise: BOFIntro – Determining the Stack Layout
      • Exercise: BOFIntro – 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
      • Mitigation Strategies for Integer Problems
      • Preventing Arithmetic Overflow – Addition
      • Preventing Arithmetic Overflow – Multiplication
      • Detecting Overflow with 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

  • Injection
    • Common SQL Injection Attack Methods
    • Blind and Time-Based SQL Injection
    • SQL Injection Protection Methods
    • Command Injection
  • Broken Authentication – Password Management
    • Exercise – Weakness of Hashed Passwords
    • Password Management and Storage
    • Special-Purpose Hash Algorithms for Password Storage
  • Cross-Site Scripting (XSS)
    • Cross-Site Scripting (XSS) Overview
    • CSS Injection
    • Exploitation: Injection via Other HTML Tags
    • XSS Prevention
  • 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 Private Key
    • Common Mistakes in Password Management
    • Exercise – Hardcoded Passwords
    • Conclusion

Secure Verification Principles

  • Functional Testing vs. Security Testing
  • Security Vulnerabilities
  • Prioritization
  • Security Testing in the SDLC
  • Steps of 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 Overview
    • 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