Friday, June 7, 2013

Implementing PCI DSS 2.0 for Secure Development Lifecycle (SDL)



Pen Testing Process, Remediation, and Secure Development Lifecycle

Starting a pen testing process for PCI Compliance can be quite a challenge for many organizations.  Often this process is cumbersome because it rarely has buy in from Application, Infrastructure, and Operations Teams.  In fact, these teams often feel they are forced into it and are reluctant to comply because it is not their problem.  They feel security is the problem of Compliance and not a concern of the product or system itself.  They often do not want to foot the bill for implementing security measures and testing the product. 

We need to move away from this model, the model that security is not the responsibility of the application owners.  This model is not conducive to teamwork and growth in the organization as a whole.  It often feels that Compliance is fighting a one army battle against legions of other armies.  And while Compliance often wins, it is often overwhelming to work in an environment of such politics.  It is hard to get 100% PCI Compliance with this model because it relies on the goodwill of the teams to do what they feel is right.  There is often a lot of politics to get them to even cooperate.  Obviously, this model leads to much distress and headaches in implementing PCI within an organization because people don’t understand what their roles are.  There is always a certain percentage that fail to cooperate and they have to be strong armed.

The model we need to move to is ownership of security and PCI Compliance from within the application teams and network operations.  They have to take responsibility for the security in their product and systems.  They have to be proactive in maintaining PCI Compliance.  This is the model often used in companies that have successfully implemented PCI Compliance with a finely tuned model and everyone knows their role.  There is no need to coerce application teams and explain to them why they need a security test done hoping they will cooperate.  We need to move into a model of taking responsibility and taking ownership of security and PCI Compliance.

The new model stresses maturity in the pen testing process, remediation, and secure development lifecycle where the responsibility of getting the pen test conducted rests upon the application and system teams and Compliance is there to arbitrate if any issues arise.  Compliance is there to enforce and report on PCI Compliance as well but the responsibility does not rest entirely upon them. 

This is a proposed top down model.

In this new model, the application teams should understand the Secure Development Lifecycle (SDL).  This model starts off with understanding the 4 business areas of secure software development:

1.     Governance
2.     Software Development
3.     Testing
4.     Deployment


The security practices are implemented as follows for these 4 business functions:

I.                 Governance
                                                    i.     Strategy and Metrics
                                                  ii.     Policy and Compliance
                                                 iii.     Education and Guidance
II.               Software Development
                                                    i.     Risk Assessment
                                                  ii.     Security Requirements
                                                 iii.     Secure Architecture
III.              Quality Assurance
                                                    i.     Secure Design Review
                                                  ii.     Security Testing
                                                 iii.     Secure Code Review
IV.             Deployment
                                                    i.     Vulnerability Management
                                                  ii.     Environment Hardening
                                                 iii.     Operational Enablement


Governance
Governance consists of the processes and procedures related to how an organization manages overall software development activities.  This includes providing education and guidance to application and platform teams on security topics relevant to individual job functions.  This is so that everyone understands their job roles and learns to work with Compliance instead of against them.  Policy and Compliance involves setting up a security and compliance control and audit framework for the organization to achieve increased assurance in software under construction and in operation.  Strategy and Metrics involves the overall strategic direction of the software assurance program and instrumentation of processes and procedures to collect metrics about the company's security posture.


Software Development
Software Development consists of processes and procedures of how the organization defines goals and creates software within development projects.  This includes product management, requirements gathering, high-level architecture specification, detailed design, and implementation.  Here a risk assessment is performed on the application by a Security Architect or through Compliance, security requirements are defined, and a secure architecture is defined by the application security architect.



Pen Testing
As the responsibility of the application team to get a PCI application pen tested annually, or after a major change, is understood and owned by the application team, it is their responsibility to schedule the penetration testing and make sure the vulnerability findings are remediated.  It is their responsibility to meet with PCI Compliance. 

Penetration tests are not just limited to applications but also include host, network, physical, and work flow/policy processes.  

The findings of the penetration test are uploaded into a Governance Risk Compliance (GRC) system and the remediation process is tracked there.  Reports can be executed at any point to determine the PCI Compliance posture of the organization.  The status of each vulnerability is tracked by date of finding, status such as fixed or overdue, amount of time elapsed since finding was discovered, and more importantly the product or application owner.  This allows management to see at a snapshot how individual departments and teams across the enterprise are in relation to compliance.  It also promotes accountability.

Secure Development Lifecycle
Security is not something that is done at the last minute before releasing a product to production.  Security is something that has to be built into the product.  Security has to be incorporated into the product development lifecycle.  Software development can be roughly broken into 5 phases:

1.     Analysis
2.     Design
3.     Implementation
4.     Testing
5.     Deployment

Analysis Phase
At the analysis phase where application requirements are being defined, the security requirements must be taken into account.  This is where the corporate security standards and regulatory requirements are taken into account when developing an application and put into the application requirements.  A security risk assessment is performed on the application by a Security Architect or through Compliance

Design Phase
At the design phase, the application security architect reviews the application architecture and defines a security architecture.  Threat modeling can be done here but is not required for PCI.  The application security architect also designs and makes recommendations on needed security design based on the application design and looks for any security oversights by the application team.  This is called a secure design review and ensures adequate security mechanisms are in place and adherence to corporate and regulatory security standards are designed into the application.

Implementation Phase
The implementation or coding phase requires that the application developers code according to the security standard of the organization.   They may or may not entail help from the application security architect to assist on how to handle the more difficult implementation parts.  Secure code review should be done by software development at this point as code is being developed.  Assistance from automated static code analyzers can be used to help the developers.

Testing Phase
The testing phase will consist of Quality Assurance (QA) conducting security testing.  QA will run the final secure code scan and verify that all important  security defects have been resolved by the development team prior to release.  Compliance can assist with the secure code review and assigning business priority.  Penetration testing can be done on the application prior to release but is not required by PCI unless it is a major application upgrade.  All identified issues are to have a remediation plan and schedule.  Critical vulnerabilities must be fixed prior to releasing software in production.

Deployment Phase
The deployment phase consists of the processes and procedures of how an organization manages release of software developed.  This includes deploying applications to internal or external hosts, and the normal operations of software in the run-time environment.  This includes vulnerability management, environment hardening, and operational enablement.   The security architect does a final review of the application and network deployment configuration prior to release making sure that it is deployed in a secure manner and meets with the company’s security standards.  Application security monitoring and an incident response plan is needed.

Pen Testing Process
The following process explains how to implement Pen Testing to meet PCI Compliance.

I.                 Identify Type of Pen Tests To Be Conducted
a.     Work Flow/Policy
b.     Physical
c.      Network
                                                    i.     Internal devices
                                                  ii.     Perimeter devices
d.     Host
                                                    i.     Services
                                                  ii.     Applications
e.     Application

II.               Education
a.   Educate teams as to their responsibility for maintaining PCI Compliance


III.             Identify PCI Scope
a.     Identify applications and pen tests to conduct
b.     Notify application and system owners of the compliance they must maintain

IV.            Identify Rules of Engagement
a.     What can and can not be done.
b.     Produce pen testing authorization letter

V.              Logistics
a.     Application and system owners schedule required pen tests
b.     Sign Off on pen testing authorization letter
c.      Coordinating the pen test 
d.     Give access to the environment for testing including test accounts and support

VI.            Actual Pen Test
1.     Information Gathering
2.     Reconnaissance
3.     Enumeration
4.     Vulnerability Scanning
5.     Exploitation
6.     Documentation

VII.          Remediation
a.     Distribute pen test report to application and system owners
b.     Log all defects from pen test into a bug tracking system
c.      Meet with application or system owners to discuss test and timetables for remediation
d.     A GRC system and/or project manager needs to track the vulnerabilities over time and push the application or system owners to fix all issues.