CISSP考试指南笔记:8.2 软件开发生命周期

admin 2022年6月27日09:46:47评论36 views字数 4732阅读15分46秒阅读模式

There have been several software development life cycle (SDLC) models developed over the years, the crux of each model deals with the following phases:

  • Requirements gathering
  • Design
  • Development
  • Testing
  • Operations and maintenance

Project Management

Project management is an important part of product development, and security management is an important part of project management.

A security plan should be drawn up at the beginning of a development project and integrated into the functional plan to ensure that security is not overlooked.

The security plan and project management activities may likely be audited so security-related decisions can be understood.

If a software product is being developed for a specific customer, it is common for a Statement of Work (SOW) to be developed, which describes the product and customer requirements.

Sticking to what is outlined in the SOW is important so that scope creep does not take place.

A work breakdown structure (WBS) is a project management tool used to define and group a project’s individual work elements in an organized manner.

Requirements Gathering Phase

As it pertains to security, the following items should be accomplished in this phase:

  • Security requirements
  • Security risk assessment
  • Privacy risk assessment
  • Risk-level acceptance

The security requirements of the product should be defined in the categories of availability, integrity, and confidentiality.

An initial security risk assessment should be carried out to identify the potential threats and their associated consequences.

After a privacy risk assessment, a Privacy Impact Rating can be assigned, which indicates the sensitivity level of the data that will be processed or accessible. Some software vendors incorporate the following Privacy Impact Ratings in their software development assessment processes:

  • P1, High Privacy Risk
  • P2, Moderate Privacy Risk
  • P3, Low Privacy Risk

A clear risk-level acceptance criteria needs to be developed to make sure that mitigation efforts are prioritized.

Design Phase

The software design phase is a process used to describe the requirements and the internal behavior of the software product.

Software requirements commonly come from three models:

  • Informational model Dictates the type of information to be processed and how it will be processed
  • Functional model Outlines the tasks and functions the application needs to carry out
  • Behavioral model Explains the states the application will be in during and after specific transitions take place

From a security point of view, the following items should also be accomplished in this phase:

  • Attack surface analysis
  • Threat modeling

An attack surface is what is available to be used by an attacker against the product itself.

The aim of an attack surface analysis is to identify and reduce the amount of code and functionality accessible to untrusted users. The basic strategies of attack surface reduction are to reduce the amount of code running, reduce entry points available to untrusted users, reduce privilege levels as much as possible, and eliminate unnecessary services.

Threat modeling is a systematic approach used to understand how different threats could be realized and how a successful compromise could take place.

It is common for software development teams to develop threat trees.

Development Phase

There are many computer-aided software engineering (CASE) tools that programmers can use to generate code, test software, and carry out debugging activities.

A buffer overflow takes place when too much data is accepted as input to a specific process.

Privilege escalation is the process of exploiting a process or configuration setting in order to gain access to resources that would normally not be available to the process or its user.

What is important to understand is that secure coding practices need to be integrated into the development phase of SDLC.

Static analysis is a technique meant to help identify software defects or security policy violations and is carried out by examining the code without executing the program, and therefore is carried out before the program is compiled.

Testing Phase

Unit testing is concerned with ensuring the quality of individual code modules or classes.

Unit testing usually continues throughout the development phase.

Security attacks and penetration tests usually take place during this phase to identify any missed vulnerabilities.

Testing Types

The following are some of the most common testing approaches:

  • Unit testing Testing individual components in a controlled environment where programmers validate data structure, logic, and boundary conditions
  • Integration testing Verifying that components work together as outlined in design specifications
  • Acceptance testing Ensuring that the code meets customer requirements
  • Regression testing After a change to a system takes place, retesting to ensure functionality, performance, and protection

Fuzzing is a technique used to discover flaws and vulnerabilities in software by sending large amounts of malformed,unexpected, or random data to the target program in order to trigger failures.

Dynamic analysis refers to the evaluation of a program in real time, when it is running.

Operations and Maintenance Phase

Verification determines if the product accurately represents and meets the specifications.

Validation determines if the product provides the necessary solution for the intended real-world problem.

Zero-day vulnerabilities are vulnerabilities that do not currently have a resolution.


原文始发于微信公众号(debugeeker):CISSP考试指南笔记:8.2 软件开发生命周期

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月27日09:46:47
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CISSP考试指南笔记:8.2 软件开发生命周期https://cn-sec.com/archives/923229.html

发表评论

匿名网友 填写信息