(8) Secure Software Testing Flashcards

1
Q

What is static code analysis?

A

Static code analysis is about reviewing the code of an application, it allows the testers to find issues that other tests might miss, because the logic isn’t exposed to other testing methods.

Static code analysis doesn’t run the program, it focuses on understanding how the program is written and what it is intended to do. Automated tools can be used too and are very effective. The process is called code understanding.

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

What is Dynamic Code Analysis?

A

Dynamic code analysis is about executing the code while providing it with input to test the software.

This can be done through automated or manual testing. Automated is preferred due to the volume of tests that need to be conducted

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

What is fuzzing?

A

Fuzzing is about sending random or junk data to the app to determine if it can handle unexpected data. This is to test if the app crashes or fails to respond properly.

Fuzzing data is normally automated and is useful for detecting input validation and logic issues.

Fuzzing admittedly only finds simple problems, it doesn’t account for complex logic or business process issues and may not provide total coverage of the code if the process is not monitored

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

What is fault injection?

A

Fault injection is about inserting faults into error handling paths, specifically error handling mechanisms that are sparingly used or could be missed during normal testing.

Fault injection is often automated

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

In terms of fault injection, what is compile time injection?

A

Compile time injection is about inserting faults by modifying the source code of the application

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

In terms of fault injection, what is protocol software fault injection?

A

Protocol software fault injection uses fuzzing techniques to send unexpected or protocol non compliant data to an app or service that expects protocol compliant input

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

In terms fault injection, what is runtime injection?

A

Runtime injection is about putting data into running memory or by injecting the faults in a way that causes the program to have to deal with them

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

What is mutation testing?

A

Mutation testing is related to fuzzing and fault injection. It makes small modifications to the program itself. These mutations are then and rejected if they cause failures.

The mutations are guided by rules that are meant to create common errors to replicate the type of errors that are more likely to happen.

Mutation testing helps find issues with code that is infrequently used, it also helps identify issues with test data and scripts by finding places where the scripts don’t test for possible issues

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

What is stress/load testing

A

Stress testing is about putting the app under full load and in the case of stress testing, go beyond the normal level of load to see how the app or system will respond when tested to the breaking point

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

What other parts of an application can be stress tested?

A

Stress tests can be conducted against individual components of an app to make sure they can handle load conditions.

Fault injection may be used to make sure that problems during heavy loads are properly handled by the app

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

What is security regression testing?

A

Security regression testing is about making sure that any new app updates, patches, or new features cause new vulnerabilities, misconfigurations, and other issues are introduced.

Testing tools that are automated like web app vulnerability scanners are used as part of an automated or semi automated regression testing. Reports are generated to review the state of the app before and after changes are made to make sure security happens

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

What is User Acceptance Testing (UAT)?

A

UAT is about testing an app to its fullest by having the end users test the application itself, developers don’t get a chance to use the app the same way that users do, so this part of the process is super important.

This needs acceptance criteria that demonstrate what requirements must be satisfied to consider the work good and ready to move into production

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

What are debuggers?

A

Debuggers are made to support devs in troubleshooting their work and perform dynamic analysis of executable files

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

What is the immunity debugger?

A

Immunity debugger is designed to support pentesting and the reverse engineering of malware

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

What is the GNU Debugger (GDB)?

A

GDB is a widely used open source debugger on the Linux OS that works with a variety of programming languages

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

Describe how pentesters attempt to use debuggers to perform decompilation of code?

A

Debuggers that decompile code is about taking an executable file and performing reverse engineering to convert it back to source code. It is hard to do and rarely successful