02.2 Security Development Lifecycle
02.2 Security Development Lifecycle
Requirements
Design
Implementation
Test
Release/response.
Mapping SDL to SDLC
Mapping SDL to the SDLC
o SDLs are the key step in the evolution of software security and to build security into
the software development lifecycle.
o Whatever form of SDL you use, you must map it to SDLC to be effective (Each phase
of the SDLC must contribute to the security).
o Ideally, you should secure each phase of the SDLC in the most appropriate manner
for stakeholders present at that stage.
o If security is built into each SDLC phase, then the software has a higher probability
of being secure by default, and later software changes are less likely to compromise
overall security.
Mapping - Example
o Phase 1: Requirements
Identify any security considerations for functional requirements being gathered
Functional requirement: user needs the ability to verify their contact information before
they are able to renew their membership.
Security consideration: users should be able to see only their own contact information
and no one else’s.
Mapping - Example
o Phase 2: Design
Translates in-scope requirements into what this should be the actual application.
Functional design: page should retrieve the user’s name, email, phone, and address
from CUSTOMER_INFO table in the database and display it on screen.
Security concern: we must verify that the user has a valid session token before
retrieving information from the database. If absent, the user should be redirected to the
login page.
Mapping - Example
o Phase 3: Development
Implement the design, and make sure the code is well-written from the security
perspective. Usually, code reviews are conducted in this phase.
This may include:
Using parameterized, read-only SQL queries to read data from the database
Validating user inputs before processing data contained in them
Checking open-source libraries for vulnerabilities before using them
Mapping - Example
o Phase 4: Verification
Applications go through a testing cycle to ensure they meet the original design &
requirements.
The application is not deployed unless these tests pass.
Mapping - Example
o Phase 5: Maintenance and Evolution
Vulnerabilities may be found (from cracker, external penetration tests, or bug
bounty programs) in the code developers wrote or in the underlying open-source
components that comprise an application after it’s been released.
These vulnerabilities then need to be patched by the development team, a process that
may in some cases require significant rewrites of application functionality.
Addressing these types of production issues must be planned for and accommodated in
future releases.
Best Practices
Software Security Practices
1. Security requirements & 4. Security Testing
Abuse Cases 5. Penetration Testing
2. Risk Analysis 6. Security Operations
3. Code Reviews