Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
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
Testimonials (3)
Experience sharing, it's teacher's know-how and valuable.
Carey Fan - Logitech
Course - C/C++ Secure Coding
the knowledge of the trainer was very high - he knew what he was talking about, and knew the answers to our questions
Adam - Fireup.PRO
Course - Advanced Java Security
The topic is current and I needed to be updated