CS6301 W1.1-1.2

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

1/75

flashcard set

Earn XP

Description and Tags

CS6301

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

76 Terms

1
New cards

What is the primary focus of CS 6301 Secure Software Development?

Engineering software to continue functioning correctly under malicious attacks rather than just achieving normal functionality

2
New cards

What are the three main parts of the CS 6301 course?

• Part I: Secure Software Concepts
• Part II: Secure Coding
• Part III: Program Analysis for Secure Software Development

3
New cards

What programming language experience is required for CS 6301?

C/C++ programming experience is required to understand secure coding topics

4
New cards

What are the 7 Touchpoints in software security?

• Code Review
• Architectural Risk Analysis
• Penetration Testing
• Risk-Based Security Testing
• Abuse Cases
• Security Requirements
• Security Operations

5
New cards

What is the grading breakdown for CS 6301?

• 20% Individual Assignments
• 45% Team Lab Exercises
• 35% Final Exam

6
New cards

How many students are in each lab team?

Teams of 4 students work together on lab exercises

7
New cards

What are the three lab exercises in the course?

• Lab 1: Buffer Overflow Vulnerability
• Lab 2: Format String Vulnerability
• Lab 3: Race Condition Vulnerability

8
New cards

What is the late penalty structure for assignments?

• 10% off within 24h
• 25% off 24-48h
• 50% off 48-72h
• 100% off after 72h

9
New cards

What special allowance do teams get for lab reports?

Each team is allowed one late submission without penalty for lab reports

10
New cards

How does software security differ from correctness?

Correctness focuses on achieving desired behavior under expected circumstances while security prevents undesired behavior under all circumstances including malicious attacks

11
New cards

What is the key difference between normal users and adversaries?

Normal users accidentally find bugs and try to avoid them while adversaries actively seek bugs and deliberately try to exploit them

12
New cards

What are the three factors increasing software security risks?

• Increased complexity
• Increased extensibility
• Increased connectivity

13
New cards

What is the CIA triad in security?

• Confidentiality: prevent improper disclosure
• Integrity: prevent improper modification
• Availability: prevent improper denial of access

14
New cards

Give an example of confidentiality in a commercial setting

An employee should not know their manager's salary

15
New cards

Give an example of integrity in a commercial setting

An employee should not be able to modify their own salary

16
New cards

Give an example of availability in a commercial setting

Paychecks should be printed on time as required by law

17
New cards

What are the three components needed to achieve security?

• Security Policy: what to protect
• Security Mechanism: how to protect
• Security Assurance: how well protection works

18
New cards

What are the three types of security mechanisms?

• Prevention: stop attacks before they happen
• Detection: identify attacks in progress
• Tolerance: continue operating despite attacks

19
New cards

Which type of security mechanism is most fundamental?

Prevention is more fundamental because detection relies on threat of punishment and requires protected audit trails

20
New cards

What are the main security services provided to users?

• Confidentiality
• Authentication
• Integrity
• Non-repudiation
• Access Control
• Monitor and Response

21
New cards

What is the security tradeoff triangle?

Security exists in tension with Functionality and Ease of Use with Cost at the center

22
New cards

Why is security by obscurity problematic?

It's less applicable in a world of open standards widespread computer knowledge and reverse engineering capabilities

23
New cards

Why is security by legislation insufficient?

• Users make mistakes
• Policies can't cover every scenario
• Human behavior is unpredictable under pressure

24
New cards

What is the difference between bugs and flaws in software security?

Bugs are implementation-level vulnerabilities detectable by tools while flaws are design-level vulnerabilities requiring manual analysis

25
New cards

What are examples of software security bugs?

• Buffer overflows
• Null pointer dereferences
• Race conditions

26
New cards

What are examples of software security flaws?

• Authentication bypasses
• Privilege escalation paths
• Architectural design problems

27
New cards

What was the Heartbleed vulnerability?

A bug in OpenSSL versions 1.0.1-1.0.1f that allowed attackers to read server memory potentially exposing passwords and private keys

28
New cards

When was Heartbleed discovered and how long had it existed?

Discovered in March 2014 but had existed in released code since March 2012 for 2 years

29
New cards

Why did traditional security approaches fail against Heartbleed?

• OS security couldn't detect it (not at system call level)
• Firewalls could be bypassed with packet chunking
• Antivirus had nothing to scan

30
New cards

What is the key insight about software security approaches?

Software security addresses the root cause (buggy code) rather than trying to detect or block attacks after the fact

31
New cards

What are the six options for addressing software security?

• Do nothing
• Ad-hoc evaluation
• Add security features after the fact
• Identify vulnerabilities
• Test security levels
• Incorporate security throughout SDLC

32
New cards

Which approach to software security is recommended?

Incorporate security throughout the Software Development Life Cycle (SDLC)

33
New cards

What is the fundamental challenge in security testing?

Correctness testing verifies software does what it should under expected conditions but security testing must verify it doesn't do what it shouldn't under ALL possible conditions

34
New cards

What does a programmer focus on in software security?

Properties of source code such as correctness performance and security

35
New cards

What does a system integrator do?

Integrates new and existing software components to create programs or systems that satisfy customer requirements

36
New cards

What does a system administrator handle?

Managing and securing systems including installing/removing software patches and managing privileges

37
New cards

What does a vulnerability analyst do?

Analyzes vulnerabilities in existing and deployed programs

38
New cards

What does a security analyst focus on?

Properties of security defects and how to identify them

39
New cards

What does an attacker/adversary do?

A malicious actor who exploits vulnerabilities to achieve objectives varying by threat type

40
New cards

What is the first software security design flaw?

Earn or give but never assume trust - trust must be explicitly established and maintained

41
New cards

What should you do regarding trust and client data?

Validate all data from untrusted clients and design systems to handle potential client compromise

42
New cards

What should you avoid with trust assumptions?

Never perform authorization access control or policy enforcement in client code

43
New cards

What is the second software security design flaw?

Use an authentication mechanism that cannot be bypassed or tampered with

44
New cards

What are the "big three" authentication factors?

• Something you are (biometrics)
• Something you have (token)
• Something you know (password)

45
New cards

What should you avoid in authentication?

• Shared resources like IP addresses and MAC addresses as credentials
• Predictable tokens

46
New cards

What is the third software security design flaw?

Authorize after authentication - never assume authorization automatically follows authentication

47
New cards

What is the difference between authentication and authorization?

Authentication verifies who you are while authorization determines what you can do - both checks are necessary

48
New cards

What is the fourth software security design flaw?

Strict separation between data and code - never allow untrusted data to be executed as code

49
New cards

What are examples of code/data separation violations?

• SQL injection
• XSS (cross-site scripting)
• Shell injection using functions like system() and eval()

50
New cards

What is the fifth software security design flaw?

All data are explicitly validated - every piece of input must be validated against expected format and content

51
New cards

What is the difference between whitelisting and blacklisting in validation?

Whitelisting allows known good inputs (preferred) while blacklisting blocks known bad inputs (less secure)

52
New cards

What are canonical mappings in data validation?

Converting all input data to a single standardized format through one validation point rather than having multiple point-to-point validation paths

53
New cards

What is the sixth software security design flaw?

Use cryptography correctly - cryptography is extremely difficult to implement properly

54
New cards

What should you do with cryptographic implementation?

• Use standard algorithms and libraries
• Centralize crypto operations
• Design for crypto agility
• Get expert help

55
New cards

What should you never do with cryptography?

• Never implement your own cryptographic algorithms
• Never use weak randomness sources

56
New cards

What is the seventh software security design flaw?

Identify and protect sensitive data - know what data is sensitive and protect it throughout its lifecycle

57
New cards

What should you consider about data sensitivity?

Data sensitivity is often context-dependent and can change over time

58
New cards

What is the eighth software security design flaw?

Always consider the users - security systems must be usable by real humans in real environments

59
New cards

What should you do regarding users and security?

• Make systems secure by default
• Don't make users responsible for critical security decisions

60
New cards

What is the ninth software security design flaw?

Correctly integrate external components - third-party components inherit their security properties into your system

61
New cards

What should you do with external components?

• Security test all components
• Include dependencies in reviews
• Isolate components when possible

62
New cards

What should you not assume about external components?

Don't assume they're secure just because they're popular or open source

63
New cards

What is the tenth software security design flaw?

Be flexible for future changes - security systems must adapt as threats and technology evolve

64
New cards

What should you plan for in flexible security design?

• Plan for secret compromise recovery
• Plan for crypto algorithm changes
• Plan for security updates

65
New cards

What makes security brittle?

Hardcoding security assumptions that can't be updated or making security so complex that updates won't be applied

66
New cards

What was the Foxconn ransomware attack?

November 2020 attack that encrypted 1200 servers stole 100GB of data deleted 20-30TB of backups and demanded 34 million in Bitcoin

67
New cards

What was the Marriott data breach?

November 2018 breach that exposed 500 million customer records including passport numbers travel info and credit card data

68
New cards

What was the Equifax data breach?

July 2017 breach exposing personal information of 143 million consumers including SSNs birth dates addresses and driver's license numbers

69
New cards

What are the limitations of operating system security?

• Cannot enforce application-specific policies due to semantic gap
• Cannot precisely enforce information-flow policies

70
New cards

What are the limitations of firewall filtering?

• Coarse-grained and unsound
• Port 80 assumed benign but can carry malicious traffic
• Previously benign sources can become malicious

71
New cards

What are the limitations of IDS patterns?

• Fine-grained but still unsound
• Attack traffic can be modified to bypass syntactic filters
• Too much filtering hurts performance

72
New cards

What are the limitations of anti-virus scanners?

• Frequently bypassed by new variants
• Performance overhead limits detection depth
• Ongoing cat-and-mouse game with attackers

73
New cards

What is application security?

Security measures applied after software is built such as sandboxing network-centric approaches and input checking

74
New cards

Why is adding security after the fact problematic?

Adding more code doesn't make faulty software correct - security must be built into the design

75
New cards

What does NOT constitute software security?

• Security software (programs designed to enhance security)
• Application security (added after building)
• Operating system security mechanisms

76
New cards

What IS software security?

Engineering software so it continues to function correctly under malicious attacks focusing on eliminating bugs and design flaw