Domain 8: Software Development Security Flashcards
When in the development cycle should security be addressed?
Security should be addressed in each phase of system development.
It should not be addressed only at the end of development because of the added cost time and effort and the lack of functionality.
Attack surface
The attack surface is the collection of possible entry points for an attacker.
The reduction of this surface reduces the possible ways that an attacker can exploit a system.
Threat modeling
Threat modeling is a systematic approach used to understand how different threats could be realized and how a successful compromise could take place.
Computer-aided software engineering
Computer-aided software engineering refers to any type of software that allows for the automated development of software which can come in the form of:
- Program editors
- Debuggers
- Code analyzers
- Version-control mechanisms
The goals are to increase development speed and productivity and reduce errors.
Software testing levels (list 6)
- Unit testing (testing individual components)
- Integration testing (verifying components work together in the production environment)
- Acceptance testing (ensuring code meets customer requirements)
- Regression testing (testing after changes take place)
- Static analysis testing (reviewing programming code)
- Dynamic analysis testing (reviewing code during execution)
Fuzzing
Fuzzing is the act of sending random data to the target program in order to trigger failures.
Zero-day vulnerabilities
Zero-day vulnerabilities are vulnerabilities that do not currently have a resolution or solution.
What does the ISO/IEC 27034 standard cover?
The ISO/IEC 27034 standard covers the following items:
- Application security overview and concepts
- Organization normative framework
- Application security management process
- Protocols and application security control data structure
- Case studies
- Application security assurance prediction
OWASP
The Open Web Application Security Project (OWASP) is an organization dedicated to helping the industry develop more secure software.
IPT
An integrated product team (IPT) is a multidisciplinary development team with representatives from many or all the stakeholder populations.
CMMI Model levels
- 1 = Initial
- 2 = Repeatable
- 3 = Defined
- 4 = Managed
- 5 = Optimizing
CMMI
CMMI (Capability Maturity Model Integration) is a process improvement approach that provides organizations with the essential elements of effective processes which will improve their performance.
Change management vs. change control
Change management is a systematic approach to deliberately regulating the changing nature of projects.
Change control which is a subpart of change management deals with controlling specific changes to a system.
SDLC methodologies
- Waterfall (sequential approach that requires each phase to complete before the next one can begin)
- V-shaped (emphasizes verification and validation at each phase)
- Prototyping (creating a sample of the code for proof-of-concept purposes)
- Incremental (multiple development cycles are carried out on a piece of software throughout its development stages)
- Spiral (iterative approach that emphases risk analysis per iteration)
- Rapid Application Development (combines prototyping and iterative development procedures with the goal of accelerating the software development process)
- Agile (iterative and incremental development processes that encourage team-based collaboration where flexibility and adaptability are used instead of a strict process structure)
SCM
Software configuration management (SCM) is the task of tracking and controlling changes in the software through the use of
- Authentication
- Revision control
- Establishment of baselines
- Auditing
It has the purpose of maintaining software integrity and traceability throughout the software development life cycle.
Generations of programming languages
- Generation one is machine language (binary format)
- Generation two is assembly language (which is translated by an assembler into machine code)
- Generation three is high-level language (which provides a level of abstraction)
- Generation four is a very high-level language (which provides more programming abstraction)
- Generation five is natural language (which is translated using artificial intelligence)
Data modeling
Data modeling is a process used to define and analyze data requirements needed to support the business processes within the scope of corresponding systems and software applications.
Object-oriented programming
Object-oriented programming provides:
- Modularity
- Reusability
- More granular control within the programs themselves
compared to classical programming languages.
Objects (OOP)
Objects are members or instances of classes. The classes dictate the objects ’ data types structure and acceptable actions.
Object communication
In OOP objects communicate with each other through messages and a method is functionality that an object can carry out. Objects can communicate properly because they use standard interfaces.
Polymorphism
Polymorphism is when different objects are given the same input and react differently.
Data hiding
Data and operations internal to objects are hidden from other objects which is referred to as data hiding. Each object encapsulates its data and processes.
Low coupling
If an object does not require much interaction with other modules it has low coupling.
Object programming design
The best programming design enables objects to be as independent and as modular as possible; therefore the higher the cohesion and the lower the coupling the better.
ORB
An object request broker (ORB) manages communications between objects and enables them to interact in a heterogeneous and distributed environment.
CORBA
Common Object Request Broker Architecture (CORBA) provides a standardized way for objects within different applications platforms and environments to communicate. It accomplishes this by providing standards for interfaces between objects.
COM
Component Object Model (COM) provides an architecture for components to interact on a local system. Distributed COM (DCOM) uses the same interfaces as COM but enables components to interact over a distributed or networked environment.
ODBC
Open Database Connectivity (ODBC) enables several different applications to communicate with several different types of databases by calling the required driver and passing data through that driver.
OLE
Object linking and embedding (OLE) enables a program to call another program (linking) and permits a piece of data to be inserted inside another program or document (embedding).
SOA
Service-oriented architecture (SOA) provides standardized access to the most needed services to many different applications at one time. Service interactions are self-contained and loosely coupled so that each interaction is independent of any other interaction.
Java security
Java security employs a sandbox so the applet is restricted from accessing the user’s hard drive or system resources. Programmers have figured out how to write applets that escape the sandbox.
SOAP
SOAP allows programs created with different programming languages and running on different operating systems to interact without compatibility issues.
XSS attack examples (list 3)
There are three main types of cross-site scripting (XSS) attacks:
- Nonpersistent XSS (exploiting the lack of proper input or output validation on dynamic websites)
- Persistent XSS (attacker loads malicious code on a server that attacks visiting browsers)
- DOM (attacker uses the DOM environment to modify the original client-side JavaScript).
DBMS
A database management system (DBMS) is the software that controls the access restrictions data integrity redundancy and the different types of manipulation available for a database.
Primary key
A database primary key is how a specific row is located from other parts of the database in a relational database.
View
A view is an access control mechanism used in databases to ensure that only authorized subjects can access sensitive information.