10. Application Security - DONE Flashcards
What are the major changes associated with application security in a cloud environment.?
*Secure software development lifecycle (SSDLC) Use the SSDLC to determine how cloud computing affects application security from initial design through to deployment.
*Design and architecture Several new trends in designing applications in a cloud environment affect and can improve security.
*DevOps and continuous integration/continuous deployment (CI/CD) DevOps and CI/CD are frequently used in both development and deployment of cloud applications and are becoming a dominant approach to software development, both in the cloud and in traditional data centers. DevOps brings new security considerations and opportunities to improve security from what you do today.
Essentially, an SSDLC describes a series of security activities that should be performed during all phases of application design and development, deployment, and operations. Here are some of the more common frameworks used in the industry:
“*Microsoft Security Development Lifecycle
*NIST 800-64, “Security Considerations in the System Development Life Cycle”
*ISO/IEC 27034 Application Security Controls Project
*OWASP Open Web Application Security Project (S-SDLC)
Although these frameworks all work toward a common goal of increasing security for applications, they all go about it just a little differently.
“Cloud computing will impact every phase of the SSDLC, regardless of which particular framework you use. This is a direct result of the abstraction and automation of the cloud, combined with a greater reliance on your cloud provider.
the Cloud Security Alliance breaks down the SSDLC into three larger phases:
*Secure design and development This phase includes activities ranging from training and developing organizational standards to gathering requirements, performing design reviews through threat modelling (such as STRIDE), and writing and testing code.
*Secure deployment This phase addresses security and testing activities that must be performed when you’re moving application code from a development environment into production.
*Secure operations This phase concerns the ongoing security of applications as they are in a production environment. It includes additional defenses such as web application firewalls, ongoing vulnerability assessments, penetration tests, and other activities that can be performed once an application is in a production environment.
“Remember that in the shared responsibility model, change is based on the service model—whether IaaS, PaaS, or SaaS. If you are developing an application that will run in an IaaS service model, you would be responsible for more security than the provider would be with regard to using and leveraging other features and services supplied by a PaaS provider. In addition, the service model affects the visibility and control that you have. For example, in a PaaS model, you may no longer have access to any network logs for troubleshooting or security investigation purposes.”
the CSA defines five phases involved in secure application design and development, all of which are affected by cloud computing:
What does the training phase in secure application design and development involve?
The CSA Guidance calls for three different roles (developers, operational staff, and security teams) and three categories of training (vendor-neutral cloud security training, vendor-specific training, and development tool training), which should all receive vendor-neutral training on cloud security fundamentals (such as the CCSK).
These same groups should also undertake vendor-specific training on the cloud providers and platforms that are being used by an organization. Additionally, developers and operation staff who are directly involved in architecting and managing the cloud infrastructure should receive specific training on any development tools that will be used.
One of the final training elements should deal with how to create security tests. As the old saying goes, the answers you get are only as good as the questions you ask. In fact, some companies tell the developers in advance which security tests will be performed. Because the developers know what will be checked by the security team before a system is accepted, this approach can lead to more secure applications being created in the first place. In a way, this is a way to set up developers for success before they even begin writing code.
How can The OWASP be helpful in the training phase in secure application design and development?
Notice the inclusion of secure coding practices. The OWASP (Open Web Application Security Project) is one of the leading resources for web development. You can use the OWASP secure coding practices checklist to address key development items such as input validation, output in coding, authentication and password management, session management, access control, cryptographic practices, error handling and logging, communication security, system configuration, database security, file management, memory management, and general coding practices.”
What does the Define phase in secure application design and development involve?
In this phase, coding standards are determined (usually based on compliance requirements) and functional requirements are identified. In other words, you determine what this application must do from a security perspective. This is, of course, above and beyond any business requirements that the application needs to address.
What does the Design phase in secure application design and development involve?
During the application design phase, you need to determine whether there are any security issues with the design of the application itself. (Note that this is about design, not actual development.) You need to establish an understanding between the security and software development teams as to how the software application is architected, any modules that are being consumed, and so on.
The benefit of going through steps such as threat modelling is that you don’t have to take two steps forward and three steps back after the security team starts reviewing the application code itself. This can save you substantial amounts of time in development. Of course, you need to consider cloud providers and provider services as part of this application review. For example, you could ensure that your provider supports required logging capabilities as part of the design phase.
What does the Development phase in secure application design and development involve?
In the development phase, we finally get to build the application. As with every other system and application ever built the development environment should be an exact replica of the production environment. In other words, developers should never create applications in a production environment or hold actual production data as a part of the development phase. Developers will also probably be using some form of CI/CD pipeline, which needs to be properly secured, with a particular focus on the code repository (such as GitHub). In addition, if you will be leveraging PaaS or serverless development, enhanced logging must be baked into an application to compensate for the lack of logging that is usually available in such scenarios.
What does the testing phase in secure application design and development involve?
testing should be performed while an application is being developed. These tests can include code review, unit testing, static analysis, and dynamic analysis. ”
How has the deployment phase changed over time?
The deployment phase marks the transition or handover of code from developers to operations. Traditionally, this has been the point at which a final quality check occurs, including user acceptance testing. The cloud, DevOps, and continuous delivery are changing that, however, and are enabling tests to be automated and performed earlier in the lifecycle. Many types of application security tests can be integrated into both development and deployment phases
Here are some of the application security tests highlighted in the CSA Guidance:
*Code review This process does not change as a result of moving to the cloud. There are, however, specific cloud features and functions that may be leveraged as part of an application, and you need to ensure that the least privilege is enabled at all times inside the application code and all dependencies. Not only should user permissions follow least privilege, but services and any roles that may be used to access other services should do so as well. The worst thing you could do from an application-permission perspective is to have tight access controls for the users who can access the application and give the application full control over every aspect of a cloud environment. That said, you need to ensure that anything related to authentication, including the credentials used by an application and any required encryption, is reviewed as part of code review.
*Unit testing, regression testing, and functional testing These standard tests are used by developers and should address any API calls being used to leverage the functionality provided by a cloud provider.
*Static application security testing SAST analyzes application code offline. SAST is generally a rules-based test that will scan software code for items such as credentials embedded into application code and a test of input validation, both of which are major concerns for application security.
*Dynamic application security testing While SAST looks at code offline, DAST looks at an application while it is running. An example of DAST is fuzz testing, in which you throw garbage at an application and try to generate an error on the server (such as an “error 500” on a web server, which is an internal server error). Because DAST is a live test against a running system, you may need to get approval in advance from your provider prior to starting.”
“ credentials and encryption in an application are the primary differences between applications that run in a cloud versus those that run a traditional data center.”
“ credentials and encryption in an application are the primary differences between applications that run in a cloud versus those that run a traditional data center.
Cloud Impacts on Vulnerability Assessments.
Vulnerability assessments (VAs) should always be performed on images before they are used to launch instances. VAs can be integrated into the CI/CD pipeline. Testing images should occur in a special locked-down test environment such as a virtual network or separate account. As with all security tests, however, this must be done after approval for any testing is given by the provider.
“With an ongoing VA of running instances, you can use host-based VA tools to get complete visibility into any vulnerabilities on a system. VAs can also be used to test entire virtual infrastructures by leveraging infrastructure as code (IaC) to build this test environment. This enables you to generate an exact replica of a production environment in minutes, so you can properly assess an application and all infrastructure components without the risk of impacting the production environment.