CNIT 271: Software Security

0.0(0)
studied byStudied by 2 people
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
Card Sorting

1/57

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

58 Terms

1
New cards

Three categories of security vulnerabilities resulting from poor programming?

Insecure interaction between components, risky resource management, porous defenses

2
New cards

What are some software error examples from insecure interactions between components?

SQL injection, OS command injection, Cross-site scripting, reverse shells, cross-site request forgery, “open redirect”

3
New cards

What are some software error examples from risky resource management?

Buffer copy wihtout checking size, path traversal, download of code without integrity checks, using dangerous functions, interger overflow or wraparound

4
New cards

What are some software error examples from porous defenses?

Missing authentication and authorization, use of hard-coded credentials, missing encryption, reliance on untrusted inputs, incorrect access controls, one way hashes without a salt

5
New cards

What are the five critical web application security flaws?

Unvalidated input, cross-site scripting, buffer overflow, injection flaws, improper error handling

6
New cards

T/F: Emphasis should be placed on the need for software developers to address these known areas of concern when addressing critical web application security flaws.

True

7
New cards

Why do critical web application security flaws occur?

They often occur due to a lack of secure coding practices, insufficient testing, and failure to properly validate user inputs.

8
New cards

What is software quality and reliability concerned with?

Accidental failure of programs as a result of some theoretically random, unanticipaed input, system interaction, or use of incorrect code.

9
New cards

How are software quality and reliability improved?

By using structured design and testing to identify and eliminate as many bugs as possible from a program

10
New cards

What is a big concern with software quality and reliability?

How often bugs are triggered rather than how many bugs there are.

11
New cards

What is defensive programming?

Designing and implementing software so that it continues to function even when under attack.

12
New cards

What does defensive programming require attention to?

All aspects of program execution, environment, and type of data it processes

13
New cards

T/F: Defensive programming is also known as blue teaming.

False

14
New cards

What is defensive programming also known as?

Secure programming

15
New cards

T/F: Assumptions must be validated by the program and all potential failures must be handled gracefully and safely

True

16
New cards

T/F: Programmers are often sure in what types of input a program will receive and the environment it executes in.

False, they assume

17
New cards

What are the steps of the software development lifecycle (SDLC)?

Initiate, define, design, build, test, roll out, operate, dispose

18
New cards

What are the steps of the waterfall development cycle?

Requirement gathering and analysis, system design, implementation, integration and testing, deployment of system, maintenance

19
New cards

What is the agile development cycle?

Agile is based on small project iterations, or sprints, for developing the software instead of long project schedules

20
New cards

T/F: Organizations that use the SDLC produce smaller deliverables more frequently and evalue a large project in terms of its individual pieces as they are completed.

False, agile development cycle is used to do this

21
New cards

How long is the typical duration of a sprint in the agile development cycle?

One to four weeks

22
New cards

What organization develops publications outlining industry best practices for software assurance and providing practical advice for implementing proven methods for secure software development?

SAFECode

23
New cards

What is a very common failing when handling prgram input?

Incorrect handling.

24
New cards

How do you prevent incorrect handling?

Identify all data sources and explicitly validate assumptions on size and types of values before use.

25
New cards

T/F: Programmers often make assumptions about the minimum expected size of input.

False, maximum

26
New cards

T/F: Oftentimes, the allocated buffer size is not confirmed, which leads to buffer overflow.

True

27
New cards

T/F: Safe coding treats all input as secure

False

28
New cards

T/F: Testing of inputs may not identify the vulnerability since the inputs are unlikely to include large enough inputs to trigger the overflow

True

29
New cards

Program may be _______ or _______.

binary, text

30
New cards

What is a recent example of a failure to check the validity of a binary input value?

2014 Heartbleed OpenSSL bug.

31
New cards

What is an injection attack?

A flaw related to invalid handling of input data, specifically when program input data can accidentally or deliberately influence the flow of execution of the program.

32
New cards

Where do injection attacks most often occur in?

scripting languages

33
New cards

What are the two ways to interact with the OS?

Reading and writing system files from disk, and direct command execution

34
New cards

T/F: Both ways to interact with the OS are restricted by privileges and permissions

True

35
New cards

What are some countermeasures of SQL injection attacks?

Secure software development, input validation and sanitization

36
New cards

__________ is used for internationalization.

Unicode

37
New cards

T/F: Many Unicode decoders accept any valid equivalent sequence

True

38
New cards

What is canonicalization?

Transforming input data into a single, standard, minimal representation

39
New cards

What happens after canonicalization?

Input data can be compared with a single representation of acceptable input values

40
New cards

T/F: Floating point numbers depend on the processor used

True

41
New cards

T/F: Values may be signed or unsigned in validating numeric input

True

42
New cards

What is input fuzzing?

Software testing technique that uses randomly generated data as inputs to a program to discover vulnerabilities and unexpected behavior.

43
New cards

T/F: Input fuzzing can use templates to generate classes of known problem inputs

False

44
New cards

What is the disadvantage of using templates in input fuzzing?

Bugs triggered by other forms of input would be missed

45
New cards

What are cross site scripting attacks?

Attacks where input provided by one user is subsequently output to another user

46
New cards

XSS attacks are commonly seen in __________

Scripted web applications.

47
New cards

How are XSS attacks carried out?

Involves the inclusion of script code in the HTML context.

48
New cards

What is the XSS reflection vulnerability?

Attackers include the malicious script content in data supplied to a site

49
New cards

T/F: The XSS attack assumes that all content from one site is equally trusted and hence is permitted to interact with other content from the site

True

50
New cards

Security issues mainly arise due to issues in the following:

Correct algorithm implementation, correct machine instructions for algorithm, valid manipulation of data

51
New cards

T/F: A consequence of an incorrect algorithm implementation results in a bug that could be exploited

True

52
New cards

T/F: Another variant is when the programmers deliberately include

additional code in a program to help test and debug it

True

53
New cards

T/F: There are no issues with dynamic memory allocation

False, dynamic memory allocation can cause vulnerabilities like memory leaks and buffer overflows.

54
New cards

T/F: Programs execute on systems under the control of a processor clock

False, an operating system

55
New cards

What is a race condition vulnerability?

Occurs when an application has access to the same shared data and attempts to change variables within it simultaneously.

56
New cards

Applications can become vulnerable to race conditions if they interact with other applications that use parallel processing or multiple threads

parallel processing, multiple threads

57
New cards

If shared memory locations are not adequately secured, race conditions can occur – results into

data corruption, application errors, system crashes

58
New cards

Most common technique to prevent race conditions is

acquire a lock on the shared file for synchronization