Process
+
Education
+
Accountability
Security Development
Lifecycle
Security Development Lifecycle
A PROCESS by which Microsoft develops software, that
defines security requirements and milestones
MANDATORY for products that are exposed to meaningful security
risk
EVOLVING and new factors, such as privacy, are being added
COMPATIBLE with COTS product development processes
EFFECTIVE at addressing security issues; designed to produce
DEMONSTRATABLE RESULTS (not all methodologies do this)
It has shown itself to be highly effective at reducing vulnerabilities in
commercial software
A Security Framework
SD3+C
Threat modeling
Code inspection
Penetration testing
Unused features off by default
Reduce attack surface area
Least Privilege
Prescriptive Guidance
Security Tools
Training and Education
Community Engagement
Transparency
Clear policy
Security Development Lifecycle
vs.
Traditional Development Lifecycle
Security Development Lifecycle Tasks and Processes
Security Training
Security Kickoff
&
Register
With SWI
Security
Design
Best
Practices
Security
Architecture
& Attack Surface
Review
Threat
Modeling
Threat Modeling
Complete and
Mitigations
Reflected in
Specifications
Use Security
Development Tools
&
Security Best
Dev & Test Practices
Create
Security
Documentation
And Tools
For Product
Requirements
Design
Specifications
Functional
Specifications
Final
Security
Review
Pen Testing
Sign off on
Security
Requirements
In
Checkpoint Express
Security
Servicing
&
Response
Execution
Final Release
Candidate
Alpha & Beta Pre releases
Testing and Verification
Development of New Code
Design
Security
Push
Traditional Microsoft Software Product Development Lifecycle Tasks and Process
Product Code
Complete
Feature Lists
Quality
Guidelines
Architecture Docs
Schedules
Prepare
Security
Response
Plan
Implementation
Bug fixes
Verification
Code Signing
& Checkpoint
Express
Signoff
Release
RTM
Product Support
Service Packs/QFEs
Security Updates
Support & Servicing
Security Development Lifecycle
(SDL)
Requirements phase
-Security “buddy” assigned
Implementation phase
-Secure coding standards adhered to
-Security testing standards adhered to
-Security tools use
Release phase
-Final Security Review
Security response
Product Development Timeline
Education
-New Hire
-Refresher
Design phase
-Security plan complete
-Security milestones understood
-Design standards & guidelines identified
-Security architecture complete
-Threat models & design review complete
-Ship criteria agreed upon
Verification phase
-Security push
RTM & deployment
-PRS requires FSR sign-off
http://swi/sdl
Security Development Lifecycle
Drilldown
Education and Awareness
(Prior to Requirements)
All disciplines (Dev/QA/PM/UA/UE) must understand
security!
All disciplines must complete at least one security training
class sometime in the last 12 months
All disciplines must complete the following reading:
Writing Secure Code, Version 2
(ISBN: 0-7356-1722-8)
Threat Modeling
(ISBN: 0-7356-1991-3 )
Exit criteria
Successful completion of requirements listed above
Required Reading
Phase 1: Requirements
Opportunity to consider security at the outset
Development team identifies security requirements
Who will use the application
Are security requirements equal for all users
Standalone, Intranet or Extranet availability
Internal or external usage
What are the assets
What are the implications if security fails
Who is responsible for operations
Project Inception
(Requirements)
Designate a security coordinator
Update Bug reporting tools
Security Bug Effect field
Security Cause field
Security bug bar document
Critical, Important & moderate bugs fixed before RTM.
Project Inception
Configure the bug reporting tool
Add a Security Bug Effect field
Not a Security Bug
Spoofing
Tampering
Repudiation
Information Disclosure
Denial of Service
Elevation of Privilege
Attack Surface Reduction*
Project Inception
Configure the bug reporting tool
Add a Security Cause field
Not a Security Bug
Buffer Overflow/Underflow
Arithmetic Error (int
overflow)
SQL/Script Injection
Directory Traversal
Race Condition
Cross-Site Scripting
Cryptographic Weakness
Cryptographic Weakness
Weak Authentication
Weak Authorization/Bad ACL
Ineffective Secret Hiding
Unlimited Resource
Consumption
Incorrect/No Error Messages
Bad/No Path Canonicalization
Other
Project Inception
Deliverables
Security Plan Document
Outlines the processes and work items that a
product team will follow in order to integrate SDL
into their product development process
Security Bug Bar Definition
Project Inception
(Microsoft specific)
Secure Windows Initiative (SWI) team assigns
SWI Buddy
SWI Buddy reviews product plan, makes
recommendations, ensures resources allocated
by management
SWI Buddy assesses security milestones and
exit criteria
(NOTE: This SWI Buddy will stay with the project
through the Final Security Review)
Design
Define and document security architecture
Identify security critical components (“trusted base”)
Identify design techniques (e.g., layering, managed code,
least privilege, attack surface minimization)
Document attack surface and limit through default settings
Create threat models (e.g., identify assets, interfaces,
threats, risk) and mitigate threats through
countermeasures
Identify specialized test tools
Define supplemental ship criteria due to unique product
issues (e.g., cross-site scripting tests)
Design
Security section in design / functional spec.
Explaining the impact of security on the feature.
Security architecture document
Attack surface measurement
Product structure, emphasis on layering.
Exit criteria: Design review complete and signed
off by development team and SWI Buddy
Design
Team members should complete threat modeling
training.
Threat models addressing all the functionality of
the product should be completed.
Functional specs / Design specs should
document mitigations
Threat models should be reviewed by architects,
dev, test and PM to ensure its
comprehensiveness.
Design
Threat modeling in detail
Development
Apply coding and testing standards (e.g.,
safe string handling)
Apply fuzz testing tools (structured invalid
inputs to network protocol and file parsers)
Apply static code analysis tools to find, e.g.,
buffer overruns, integer overruns,
uninitialized variables, etc (e.g. FxCop)
Conduct code reviews
Verification
Software functionality complete
and enters Beta
Because code complete, testing both new and
legacy code
Security Push
Security push is not a substitute for security work
during development
Security push provides an opportunity to focus on
security
Code reviews (especially legacy/unchanged code)
Penetration and other security testing
Review design, architecture, threat models in light of new
threats
Verification
Security Testing in detail
Final Security Review (FSR)
“From a security viewpoint, is this software ready to
deliver to customers?”
Two to six months prior to software completion
Software must be in a stable state with only minimal non-security
changes expected prior to release
FSR components
Completion of a questionnaire by the product team
Interview by a security team member assigned
to the FSR
Review of bugs that were initially identified as security bugs, but on
further analysis were determined not to have impact on security, to
ensure that the analysis was done correctly
Analysis of any newly reported vulnerabilities affecting similar
software to check for resiliency
Additional penetration testing, possibly by outside contractors to
supplement security team
Final Security Review (FSR)
FSR results: If the FSR finds a pattern of
remaining vulnerabilities, the proper
response is not just to fix the vulnerabilities
found, but to revisit the earlier phases and
take pointed actions to address root causes
(e.g., improve training, enhance tools)
FSR is NOT “penetrate and patch”
Response Phase
Patch Management in place
Team on standby to address security response
issues if necessary.
Post Mortems and feedback to the SDL
Reinitiate security push (or more of process)
Update code review guidelines
Update tools
Other corrective steps as needed
Security Development Lifecycle (with Privacy) Tasks
mapped against Traditional Microsoft Software Development Lifecycle
V 1.4 (Jan 28, 2005)
FPR needed for initial public prerelease (alpha or beta releases), and
subsequent releases if significant
changes happen after initial release
Privacy Additions to SDL
Alpha & Beta Pre releases
Security Training with Privacy Added
Privacy
Initial
Assessment
Privacy
Design
Best
Practices
Privacy
Detailed
Asmt
(P1 & P2)
Privacy
Design
Review
(P1 &
some P2)
Privacy Added
To Threat Modeling
Use Privacy
Development Tools &
Privacy Best Dev +
Test Practices
Draft
Privacy
Policy
Stmt
Consult with Privacy
SMEs as needed
Formal Privacy Reviews (FPR) of P1
Products for EACH Public Release
(Random FPR audits for P2)
FPR*
FPR*
FPR*
FPR*
Create Privacy GPO and Deployment Guides
Final
Safety
Review
(Privacy
+
Security)
Sign off on
Updated Privacy
Requirements
In
Checkpoint Express
Privacy
Servicing
&
Response
Execution
Final
Security
Review
Sign off on
Security
Requirements
In
Checkpoint Express
Security
Servicing
&
Response
Execution
Prepare Privacy Response Plan
Security Development Lifecycle Tasks and Processes
Security Training
Security Kickoff
&
Register
With SWI
Security
Design
Best
Practices
Security
Architecture
& Attack Surface
Review
Threat
Modeling
Threat Modeling
Complete and
Mitigations
Reflected in
Specifications
Use Security
Development Tools
&
Security Best
Dev & Test Practices
Create
Security
Documentation
And Tools
For Product
Requirements
Design
Specifications
Functional
Specifications
Pen Testing
Final Release
Candidate
Alpha & Beta Pre releases
Testing and Verification
Development of New Code
Design
Security
Push
Traditional Microsoft Software Product Development Lifecycle Tasks and Process
Product Code
Complete
Feature Lists
Quality
Guidelines
Architecture Docs
Schedules
Prepare
Security
Response
Plan
Implementation
Bug fixes
Verification
Code Signing
& Checkpoint
Express
Signoff
Release
RTM
Product Support
Service Packs/QFEs
Security Updates
Support & Servicing
Accountability for SDL
You can’t manage what you can’t measure…
Education
Individual learning measurement
Team training compliance
Process implementation
In-process metrics provide early warning
Threat model completion
Code reviewed
Test coverage
FSR results
Post-release metrics assess final payoff
Total and high severity vulnerabilities
Implications for Partners and Customers
As operating system security improves, attackers will
move “up the stack”
Be ready to meet the challenge
Take advantage of SDL lessons learned
Use available resources (Microsoft or other)
Tools
Books
Training
Process details less important than process
Try the process
Measure effectiveness
Update the process
Summary
Security is an evolving challenge
SDL process has proven effective at
improving software security
SDL can be emulated by other
organizations
Key component of SDL – and improving
security – is commitment to continuous
improvement
Threat Modeling Tool
http://www.microsoft.com/downloads/details
.aspx?familyid=59888078-9DAF-4E96B7D1-944703479451&displaylang=en
© 2005 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.