3.6 Summarize secure application development and deployment concepts Flashcards

1
Q

Development lifecycle models

A

Waterfall vs Agile.

Waterfall: each phase must be completed sequentially.

Agile: iterates through phases concurrently.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Secure DevOps

A

DevOps means that there is much more collaboration between developers and system administrators.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Security automation

A

The concept of scripted or programmed infrastructure can also be applied to security infrastructure (firewalls, IDS, SIEM, and privilege management). For example, security automation might mean that a user account is provisioned by running a script for the appropriate role rather than relying on a human administrator to select the appropriate security groups and policy settings.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Continuous integration

A

The principle that developers should commit updates often (every day or sometimes even more frequently).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Immutable systems

A

This approach first strictly divides data from the components processing data. Once designed and provisioned as instances, the components are never changed or patched in place. Deploying a patch or adding a new application means building a new instance and deploying that.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Infrastructure as code

A

This is the principle that when deploying an application, the SERVER INSTANCE supporting the application can be defined and provisioned through the software code. Imagine a setup program that not only installs the application but also creates a VM and OS on which to run the application.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Version control and change management

A

An ID system for each iteration of a software product.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Provisioning and deprovisioning

A

Provisioning is the process of deploying an application to the target environment, such as enterprise desktops, mobile devices, or cloud infrastructure.

Deprovisioning is the process of removing an application from packages or instances.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Proper error handling

A

Ideally, the programmer will have written an error or exception handler to dictate what the application should then do in case of invalid user input, a loss of network connectivity, another server or process failing.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Proper input validation

A

To mitigate this risk, all input methods should be documented with a view to reducing the potential attack surface exposed by the application. There must be routines to check user input, and anything that does not conform to what is required must be rejected. Can reduce risk of injection attacks.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Normalization

A

Means that a string is stripped of illegal characters or substrings and converted to the accepted character set. This ensures that the string is in a format that can be processed correctly by the input validation routines.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Stored procedures

A

A part of a database that executes a custom query. The procedure is supplied an input by the calling program and returns a pre-defined output for matched records.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Code signing

A

The principal means of proving the authenticity and integrity of code (an executable or a script). The developer creates a cryptographic hash of the file then signs the hash using his or her private key.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Obfuscation/camouflage

A

A software that randomizes the names of variables, constants, functions, and procedures, removes comments and white space, and performs other operations to make the compiled code physically and mentally difficult to read and follow.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Code reuse/dead code

A

Dead code is executed but has no effect on the program flow.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Server-side vs. client-side execution and validation

A

The main issue with client-side validation is that the client will always be more vulnerable to some sort of malware interfering with the validation process. The main issue with server-side validation is that it can be time-consuming, as it may involve multiple transactions between the server and client. Consequently, client-side validation is usually restricted to informing the user that there is some sort of problem with the input before submitting it to the server.

17
Q

Use of third-party libraries and SDKs

A

Third-party library—a binary package (such as a Dynamic Link Library) that implements some sort of standard functionality, such as establishing a network connection or performing cryptography. Each library must be monitored for vulnerabilities and patched promptly.

(SDK)—the programming environment used to create the software might provide sample code or libraries of pre-built functions. As with other third-party libraries or code, it is imperative to monitor for vulnerabilities.

18
Q

Data exposure

A

A fault that allows privileged information (such as a token, password, or PII) to be read without being subject to the appropriate access controls.

19
Q

Static code analyzers

A

Software that can scan code for known security risks.

20
Q

Dynamic analysis (e.g., fuzzing)

A

Software that tests code for vulnerabilities in the runtime environment.

21
Q

Stress testing

A

Tests an application performance under extreme usage.

22
Q

Sandboxing

A

Each development environment should be segmented from the others. No processes should be able to connect to anything outside the sandbox. Only the minimum tools and services necessary to perform code development and testing should be allowed in each sandbox.

23
Q

Model verification

A

A compliance testing process to ensure that the product or system meets its design goals.

24
Q

Compiled vs. runtime code

A

Compiled code is syntactically correct.

Runtime code is functioning properly without errors.