Get in Touch
 Duration 14 hours

Course Outline

Day 1

IT security and secure coding

  • The nature of security
  • Key terms related to IT security
  • Defining risk
  • Various dimensions of IT security
  • Requirements across different application domains
  • Distinctions between IT security and secure coding
  • From vulnerabilities to botnets and cybercrime
    • The nature of security flaws
    • Factors contributing to complexity
    • Progression from infected computers to targeted attacks
  • Categorization of security flaws
    • Landwehr’s taxonomy
    • The Seven Pernicious Kingdoms
    • OWASP Top Ten 2013
    • Comparison of OWASP Top Ten (2003 – 2013)

Introduction to the Microsoft® Security Development Lifecycle (SDL)

  • Course agenda
  • Applications under attack...
    • Evolution of cybercrime
    • The focus of attacks on applications
    • Prevalence of vulnerabilities in smaller ISV applications
  • The origins of the Microsoft SDL...
    • Security timeline at Microsoft...
    • Applications required to adhere to SDL
  • Microsoft Security Development Lifecycle (SDL) overview
    • Microsoft Security Development Lifecycle (SDL) structure
    • Pre-SDL Requirement: 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
    • The necessity of process improvement for secure software development

Secure design principles

  • Attack surface
    • Reducing the attack surface
    • Attack surface – illustrative example
    • Conducting attack surface analysis
    • Examples of attack surface reduction
  • Privacy
    • Privacy considerations
    • Understanding application behaviors and privacy concerns
  • Defense in depth
    • SDL Core Principle: Defense in Depth
    • Defense in depth – practical example
  • Least privilege principle
    • Least privilege – practical example
  • Secure defaults
    • Secure defaults – practical examples

Secure implementation principles

  • Agenda
  • Microsoft Security Development Lifecycle (SDL)
  • Fundamentals of buffer overflows
    • Intel 80x86 Processors – main registers
    • Memory address layout
    • Function calling mechanism in C/C++ on x86 architecture
    • 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 – developing a simple exploit
  • Input validation
    • Concepts in input validation
    • Integer issues
      • Representation of negative integers
      • Integer overflow
      • Arithmetic overflow – predicting the output
      • Exercise IntOverflow
      • Evaluating the value of Math.Abs(int.MinValue)
    • Mitigating integer issues
      • Strategies for mitigating integer problems
      • Preventing arithmetic overflow – addition
      • Preventing arithmetic overflow – multiplication
      • Detecting overflow using the checked keyword in C#
      • Exercise – Implementing the checked keyword in C#
      • Exceptions raised by overflows in C#
    • Case study – Integer overflow in .NET
      • Real-world integer overflow vulnerability
      • Exploiting the integer overflow vulnerability
    • Path traversal vulnerability
      • Mitigating path traversal

Day 2

Secure implementation principles

  • Injection attacks
    • Common SQL Injection attack methods
    • Blind and time-based SQL injection
    • Methods for protecting against SQL Injection
    • Command injection
  • Broken authentication and password management
    • Exercise – Weaknesses in hashed passwords
    • Password management and storage practices
    • Specialized hash algorithms for password storage
  • Cross-Site Scripting (XSS)
    • Overview of Cross-Site Scripting (XSS)
    • CSS injection
    • Exploitation: Injection via other HTML tags
    • Strategies for preventing XSS
  • Lack of function-level access control
    • Filtering file uploads
  • Practical cryptography
    • Ensuring confidentiality with symmetric cryptography
    • Symmetric encryption algorithms
    • Block ciphers – modes of operation
    • Hashing or message digests
    • Hash algorithms
    • Message Authentication Code (MAC)
    • Ensuring integrity and authenticity with symmetric keys
    • Ensuring confidentiality with public-key encryption
    • Rule of thumb – possession of private keys
    • Common errors in password management
    • Exercise – Hard-coded passwords
    • Conclusion

Secure verification principles

  • Functional testing vs. security testing
  • Security vulnerabilities
  • Prioritization strategies
  • Security testing within the SDLC
  • Steps in test planning (risk analysis)
  • Scoping and information gathering
    • Identifying stakeholders
    • Identifying assets
    • Defining the attack surface
    • Establishing security objectives for testing
  • Threat modeling
    • Threat modeling fundamentals
    • 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 – classifying threats
    • The DREAD threat/risk ranking model
  • Security testing techniques and tools
    • General testing approaches
    • Techniques for various SDLC stages
  • Code review
    • Code review for software security
    • Taint analysis
    • Heuristics
  • Static code analysis
    • Static code analysis fundamentals
    • Exercise – Utilizing 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 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 – Forms Authentication Bypass
    • NULL byte termination vulnerability
    • Forms Authentication Bypass vulnerability in code
    • Exploiting the Forms Authentication Bypass

Knowledge sources

  • Secure coding resources – a starter kit
  • Vulnerability databases
  • .NET secure coding guidelines on MSDN
  • .NET secure coding cheat sheets
  • Recommended books – .NET and ASP.NET

Custom Corporate Training

Training solutions designed exclusively for businesses.

  • Customized Content: We adapt the syllabus and practical exercises to the real goals and needs of your project.
  • Flexible Schedule: Dates and times adapted to your team's agenda.
  • Format: Online (live), In-company (at your offices), or Hybrid.
Investment

Price per private group, online live training, starting from 3200 € + VAT*

Contact us for an exact quote and to hear our latest promotions

Testimonials (3)

Provisional Upcoming Courses (Contact Us For More Information)

Related Categories