Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security...

51
Software Security Course Course Outline 2-27-09

Transcript of Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security...

Page 1: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Software Security Course

Course Outline2-27-09

Page 2: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Course Overview

• Introduction to Software Security• Common Attacks and Vulnerabilities• Overview of Security Engineering• How To - Secure Design• How To - Secure Implementation• How To - Security Testing• How To - Secure Deployment• Compliance and Regulatory Standards• Special Topics• Additional Resources

Page 3: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Introduction to Software Security

Page 4: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Introduction to Software Security

• Definition and Context• Why Security Matters• Myths and Urban Legends• Threats and Examples• Case Studies• Concepts and Definitions

Page 5: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Definition and Context

• Software security as part of the larger problem of developing robust, reliable code

• Describe the relationship between software security and:– Corporate information security policies– Corporate risk strategies

• Explain the differences between software and network security– Areas of overlap– Areas of divergence– Pros and cons of each area of investment

Page 6: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Definition and Context

• CIA as a way to think about security• STRIDE as a way to assess impact of a threat• DREAD as a way to categorize the severity of a

threat

Page 7: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Why Security Matters

• Customers care – now more than ever• Patching is expensive• Regulatory compliance• Security failures == business risk• Competitive advantage• Critical part of TCO• The threat environment is bad and getting worse• Attackers have the advantage

Page 8: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Myths and Urban Legends

• Security is only required in the OS– 15% are OS vulns

• I only need a good patch strategy– Mean time to attack: 330 days -> 2 weeks

• I have a firewall, AV and IDS– 92% of vulns are software, not network

• Functional testing finds security defects– Good practices from design->deploy are required

• I use Java (or .NET)– Only helps with some classes of problem

• I use cryptography– Helps with some threats, but just one tool in the toolbox

Page 9: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Threats and Examples

Page 10: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Threats and Examples

Page 11: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Case Studies

• Show real world impact, examine past mistakes– Love Virus– Saphire Worm– TJX– Heartland

Page 12: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Concepts and Definitions• Asset• Attack• Control• Countermeasure or mitigation• Guideline• Information Security• Insider Threat• Policy• Privacy• Risk• Risk Analysis• Risk Assessment• Security Engineering• Security Requirement• Threat• Vulnerability

Page 13: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Common Attacks and Vulnerabilities

Page 14: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Common Attacks and Vulnerabilities

• Types of Attackers• Attacker Motivation• Attacker Origin• Anatomy of an Attack• Attacker Tools• OWASP Top 10• CWE/SAN Top 25

Page 15: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Types of Attackers

• Script Kiddies• Amateur Experts• Crack Experts• Professionals

Page 16: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Attacker Motivation

• White Hat• Black Hat• Grey Hat

Page 17: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Attacker Origin

• Internal attackers – the insider threat• External attackers

Page 18: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Anatomy of an Attack

• Targeting• Probing• Attempting penetration• Securing hold• Cleanup and propagation

Page 19: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Attacker Tools

• Whitebox• Greybox• Blackbox

Page 20: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

OWASP Top 10

• Cross Site Scripting• Injection Flaws• Malicious File Execution• Insecure Direct Object Reference• Cross Site Request Forgery• Information Leakage and Improper Error Handling• Broken Authentication and Session Management• Insecure Cryptographic Storage• Insecure Communications• Failure to restrict URL access

Page 21: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

CWE/SANS 25 Most Dangerous

• CWE and SANS put together a list of the 25 most dangerous coding errors– Insecure interaction between components– Risky resource management– Porous defenses

http://www.sans.org/top25errors/

Page 22: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Overview of Security Engineering

Page 23: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Overview of Security Enginering

• How it Fits• Key Activities

Page 24: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

How it Fits

Page 25: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Key Activities

• Threat Modeling• Security Design Best Practices• Security Design Review• Security Coding Best Practices• Security Code Review• Penetration Test• Security Deployment Review

Page 26: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

How To - Secure Design

Page 27: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

How To – Secure Design

• Design Principles• Design Patterns

Page 28: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Design Principles

• Simplify the design• Least privilege• Defense in depth• Fail secure• Secure by default• Compartmentalize• Attack Surface Reduction• …

Page 29: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Design Patterns

• Trusted Subsystem• Brokered Authentication• …

Page 30: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

How To - Secure Implementation

Page 31: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

How To – Secure Implementation

• Coding Principles• OS Fundamentals• Common Errors• Common Web Errors

Page 32: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Coding Principles

• Validate all user input• Auditing and logging• Limit resource consumption• …

Page 33: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

OS Fundamentals

• Access controls• .NET code access security• Java sandbox• Cryptography• …

Page 34: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Common Errors

• Integer overflows• Failure to validate input• Failure to protect sensitive data• Failure to understand and protect across trust

boundaries• Insecure error messages• Buffer overflows and other errors that occur only

in compiled languages such as C/C++• …

Page 35: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Common Web Errors

• Trusting client-side validation• Failure to validate input and encode output• Failure to protect the session• Failure to protect against zero and one-click

attacks• Disclosing too much information• …

Page 36: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

How To - Security Testing

Page 37: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

How To – Security Testing

• Security Testing is Different• Think Like an Attacker• Categories of Attack• How to Test the Top 10

Page 38: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Security Testing is Different

Intended Behavior

Actual Behavior

Traditional Bugs

Most Security Bugs

Page 39: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Think Like an Attacker

• Security bugs:– Are much harder to spot…they often have no

visible (to the human eye) behavior…we need better tools

– Require us to think about side effects and what sensitive data might be exposed

– Require us to “think backwards”…that is, instead of thinking what should happen, we need to think about what shouldn’t happen

Page 40: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Categories of Attack

• External dependencies• Unanticipated user input• Vulnerable design• Vulnerable implementation

Page 41: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

How to Test the Top 10

• Cross Site Scripting• Injection Flaws• Malicious File Execution• Insecure Direct Object Reference• Cross Site Request Forgery• Information Leakage and Improper Error Handling• Broken Authentication and Session Management• Insecure Cryptographic Storage• Insecure Communications• Failure to restrict URL access

Page 42: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

How To - Secure Deployment

Page 43: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

How To – Secure Deployment

• Deployment Principles• Deployment Patterns

Page 44: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Deployment Principles

• The importance of configuration• How physical deployment impacts security• How software design can make it easier to

manage security and detect attacks post-deployment

Page 45: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Deployment Patterns• Understand the common application types:

– Mobile Client– Rich Client– Rich Internet Application– Service Interfaces (SAAS, S+S)– Web Application

• Understand the common deployment patterns:– Single server, non-distributed– Multiple server, distributed

• Understand the impact:– Impersonation and delegation– Layer interfaces– Trust boundaries

Page 46: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Compliance and Regulatory Standards

Page 47: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Regulatory Standards

• Overview of the regulation:– PCI– HIPPA

• Cover what these mean from a developer point of view– http://msdn.microsoft.com/en-us/library/

aa480484.aspx

Page 48: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Special Topics

Page 49: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Additonal Topics to Consider

• Privacy Issues• Digital Rights Management (DRM)• Social Engineering Attacks

Page 50: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Additional Resources

Page 51: Software Security Course Course Outline 2-27-09. Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.

Resource List• On the Web:

– OWASP– CWE– SANS– SDL– BugTraq, NTBugTraq– patterns & practices security guides

• Books:– Writing Secure Code– Hacking Exposed Series– How to Break Software Security– The Security Development Lifecycle– Hunting Security Bugs