Course Outline

Day 1

  • IT security and secure coding
    • Nature of security
    • IT security related terms
    • Definition of risk
    • Different aspects of IT security
    • Requirements of different application areas
    • IT security vs. secure coding
    • From vulnerabilities to botnets and cybercrime
      • Nature of security flaws
      • Reasons of difficulty
      • From an infected computer to targeted attacks
    • Classification of security flaws
      • Landwehr’s taxonomy
      • The Seven Pernicious Kingdoms
      • OWASP Top Ten 2013
      • OWASP Top Ten comparison 2003 – 2013
  • Introduction to the Microsoft® Security Development Lifecycle (SDL)
    • Agenda
    • Applications under attack...
      • Cybercrime Evolution
      • Attacks are focusing on applications
      • Most vulnerabilities are in smaller ISV apps
    • Origins of the Microsoft SDL...
      • Security Timeline at Microsoft...
      • Which apps are required to follow SDL?
    • Microsoft Security Development Lifecycle (SDL)
      • 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: Response
      • SDL Process Guidance for LOB Apps
      • SDL Guidance for Agile Methodologies
      • Secure Software Development Requires Process Improvement
  • Secure design principles
    • Attack surface
      • Attack surface reduction
      • Attack surface – an example
      • Attack surface analysis
      • Attack surface reduction – examples
    • Privacy
      • Privacy
      • Understanding Application Behaviors and Concerns
    • Defense in depth
      • SDL Core Principle: Defense In Depth
      • Defense in depth – example
    • Least privilege principle
      • Least privilege – example
    • Secure defaults
      • Secure defaults – examples
  • Secure implementation principles
    • Agenda
    • Microsoft Security Development Lifecycle (SDL)
    • Buffer overflow basics
      • Intel 80x86 Processors – main registers
      • The memory address layout
      • The function calling mechanism in C/C++ on x86
      • The local variables and the stack frame
      • Stack overflow
        • Buffer overflow on the stack
        • Exercises – introduction
        • Exercise BOFIntro
        • Exercise BOFIntro – determine the stack layout
        • Exercise BOFIntro – a simple exploit
    • Input validation
      • Input validation concepts
      • Integer problems
        • Representation of negative integers
        • Integer overflow
        • Arithmetic overflow – guess the output!
        • Exercise IntOverflow
        • What is the value of Math.Abs(int.MinValue)?
      • Integer problem mitigation
        • Integer problem mitigation
        • Avoiding arithmetic overflow – addition
        • Avoiding 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
        • Path traversal mitigation

Day 2

  • Secure implementation principles
    • Injection
      • Typical 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)
      • CSS injection
      • Exploitation: injection through other HTML tags
      • XSS prevention
    • Missing function level access control
      • Filtering file uploads
    • Practical cryptography
      • Providing confidentiality with symmetric cryptography
      • Symmetric encryption algorithms
      • Block ciphers – modes of operation
      • Hash or message digest
      • Hash algorithms
      • Message Authentication Code (MAC)
      • Providing integrity and authenticity with a symmetric key
      • Providing confidentiality with public-key encryption
      • Rule of thumb – possession of private key
      • Typical mistakes in password management
      • Exercise – Hard coded 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
      • 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
      • 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 (5)

Upcoming Courses