185
1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series

Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

1

Security TestingChecking for what shouldn’t happen

Azqa NadeemPhD Student @ Cyber Security Group

The Cyber Security lecture series

Page 2: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

2

Agenda for today

• Part I

– Latest security news

– Security vulnerabilities in Java

– Types of Security testing

• SAST vs. DAST

• Part II

– SAST under the hood

• Pattern Matching

• Control Flow Analysis

• Data Flow Analysis

– SAST Tools performance

Page 3: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

3

Announcements

• Assignment 2 – Security module

• Exam questions

Page 4: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

4

Page 5: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

5

Agenda for today

• Part I

– Latest security news

– Security vulnerabilities in Java

– Types of Security testing

• SAST vs. DAST

• Part II

– SAST under the hood

• Pattern Matching

• Control Flow Analysis

• Data Flow Analysis

– SAST Tools performance

Page 6: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

6

Software testing

vs.

Security testing

Page 7: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

7

Impact – Stolen chats

https://ivan.barreraoro.com.ar/signal-desktop-html-tag-injection/

Page 8: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

8

Impact – Stolen chats

https://ivan.barreraoro.com.ar/signal-desktop-html-tag-injection/

Page 9: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

9

Impact – Github down

https://thehackernews.com/2018/03/biggest-ddos-attack-github.html

Page 10: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

10

Impact – Github down

https://thehackernews.com/2018/03/biggest-ddos-attack-github.html

Caused by misconfigured Memcached

servers

Page 11: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

11

Is Java Secure?

• Secure from memory corruption

• … but not completely

• Potential targets

– Java Virtual Machine

– Libraries in native code

https://w3techs.com/technologies/details/pl-java/all/all

Page 12: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

12

Vulnerability databases

• OWASP Top Ten project

– Awareness document

– Web application security

• NIST National Vulnerability Database

– U.S govt. repository

– General security flaws

Page 13: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

13

JRE vulnerabilities

https://www.cvedetails.com/product/19116/Oracle-JDK.html?vendor_id=93

Page 14: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

14

JRE vulnerabilities

https://www.cvedetails.com/product/19116/Oracle-JDK.html?vendor_id=93

Page 15: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

15

Some Examples

Page 16: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

16

What’s wrong?

Page 17: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

17

Code Injection vulnerability

• Execute code in unauthorized applications

• Victim to Update Attack

Page 18: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

18

Code Injection vulnerability

• Execute code in unauthorized applications

• Victim to Update Attack

Page 19: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

19

Code Injection vulnerability

• Execute code in unauthorized applications

• Victim to Update Attack

Page 20: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

20

Code Injection vulnerability

• Execute code in unauthorized applications

• Victim to Update Attack

Page 21: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

21

Code Injection vulnerability

• Execute code in unauthorized applications

• Victim to Update Attack

Page 22: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

22

Code Injection vulnerability

• Execute code in unauthorized applications

• Victim to Update Attack

Page 23: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

23

Code Injection vulnerability

• Execute code in unauthorized applications

• Victim to Update Attack

• Top vulnerability in OWASP Top 10

Page 24: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

24

Code Injection vulnerability

• Execute code in unauthorized applications

• Victim to Update Attack

• Top vulnerability in OWASP Top 10

• Tricky to fix

– Stop adding plugins

– Limit privileges

Page 25: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

25

Type confusion vulnerability

https://www.thezdi.com/blog/2018/4/25/when-java-throws-you-a-lemon-make-limenade-sandbox-escape-by-type-confusion

Page 26: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

26

Type confusion vulnerability

https://www.thezdi.com/blog/2018/4/25/when-java-throws-you-a-lemon-make-limenade-sandbox-escape-by-type-confusion

Page 27: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

27

Bypassing Java Security Manager

• Exploit Type confusion vulnerability

https://access.redhat.com/security/cve/cve-2014-3558

Page 28: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

28

Bypassing Java Security Manager

• Exploit Type confusion vulnerability

https://access.redhat.com/security/cve/cve-2014-3558

Java

Security

Manager

Page 29: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

29

Bypassing Java Security Manager

• Exploit Type confusion vulnerability

https://access.redhat.com/security/cve/cve-2014-3558

Java

Security

Manager

Page 30: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

30

Bypassing Java Security Manager

• Exploit Type confusion vulnerability

• Escalated privileges

https://access.redhat.com/security/cve/cve-2014-3558

Java

Security

Manager

Page 31: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

31

Bypassing Java Security Manager

• Exploit Type confusion vulnerability

• Escalated privileges

https://access.redhat.com/security/cve/cve-2014-3558

Java

Security

Manager

Page 32: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

32

Bypassing Java Security Manager

• Exploit Type confusion vulnerability

• Escalated privileges

– Set JSM to null

https://access.redhat.com/security/cve/cve-2014-3558

Java

Security

Manager

Page 33: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

33

Bypassing Java Security Manager

• Vulnerable: Hibernate → Reflection helper

• Exploit Type confusion vulnerability

• Escalated privileges

– Set JSM to null

https://access.redhat.com/security/cve/cve-2014-3558

Java

Security

Manager

Page 34: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

34

Arbitrary Code Execution (ACE)

• Vulnerable: XStream → Converts XML to Object

• Deserialization vulnerability

https://access.redhat.com/security/cve/cve-2013-7285

Page 35: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

35

Arbitrary Code Execution (ACE)

• Vulnerable: XStream → Converts XML to Object

• Deserialization vulnerability

https://access.redhat.com/security/cve/cve-2013-7285

Page 36: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

36

Arbitrary Code Execution (ACE)

• Vulnerable: XStream → Converts XML to Object

• Deserialization vulnerability

https://access.redhat.com/security/cve/cve-2013-7285

Page 37: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

37

Arbitrary Code Execution (ACE)

• Vulnerable: XStream → Converts XML to Object

• Deserialization vulnerability

– Via malicious input XML

https://access.redhat.com/security/cve/cve-2013-7285

Page 38: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

38

Arbitrary Code Execution (ACE)

• Vulnerable: XStream → Converts XML to Object

• Deserialization vulnerability

– Via malicious input XML

https://access.redhat.com/security/cve/cve-2013-7285

Page 39: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

39

Remote Code Execution (RCE)

https://pivotal.io/security/cve-2018-1273

Page 40: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

40

Remote Code Execution (RCE)

https://pivotal.io/security/cve-2018-1273

Page 41: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

41

Remote Code Execution (RCE)

https://pivotal.io/security/cve-2018-1273

Page 42: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

42

Remote Code Execution (RCE)

• Spring Data Commons → DB connections

• Property binder vulnerability

– Via specially crafted request parameters

https://pivotal.io/security/cve-2018-1273

Page 43: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

43https://www.waratek.com/alert-oracle-guidance-cpu-april-2018/

Page 44: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

44

Why test for security?

Attack surface

Exploit

• Security testing → Non-functional testing

• Who’s job is to test for security?

Page 45: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

45https://www.dignitasdigital.com/blog/easy-way-to-understand-sdlc/

When to test for security?

Risk assessment &

Abuse cases

Threat

modelling

Design for

security

Secure

implementationSecurity testing &

Code reviews

Patching &

Updating

SECURE

Page 46: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

46

Classes of Security Testing

• Manual vs. Automated Testing

Manual Automated

Page 47: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

47

Classes of Security Testing

• Manual vs. Automated Testing

• Static vs. Dynamic Testing

Manual Automated

Static Dynamic

Page 48: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

48

Classes of Security Testing

• Manual vs. Automated Testing

• Static vs. Dynamic Testing

• Black vs. White box Testing

Manual Automated

Static Dynamic Blackbox Whitebox

Page 49: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

49

Classes of Security Testing

• Manual vs. Automated Testing

• Static vs. Dynamic Testing

• Black vs. White box Testing

Manual Automated

Static Dynamic Blackbox Whitebox

Reverse

Engineering

Risk

Analysis

Code

checking

Tainting FuzzingDynamic

validation

Penetration

testing

Page 50: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

50

Manual vs. Automated Testing

• Manual

– Code reviews

– Efficient use of human expertise

– Labour intensive

Page 51: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

51

Manual vs. Automated Testing

• Manual

– Code reviews

– Efficient use of human expertise

– Labour intensive

• Automated

– Automated code checking

– Can check MLOC in seconds

– Incomparable to human expertise

Page 52: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

52

Classes of Security Testing

• Manual vs. Automated Testing

• Static vs. Dynamic Testing

• Black vs. White box Testing

Manual Automated

Static Dynamic Blackbox Whitebox

Reverse

Engineering

Risk

Analysis

Code

checking

Tainting FuzzingDynamic

validation

Penetration

testing

Page 53: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

53

Static vs. Dynamic Testing

• (Automated) Static analysis

– Code review by computers

– Checks all possible code paths

– Relatively easy to extract results

– Limited capabilities

Page 54: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

54

Static vs. Dynamic Testing

• (Automated) Static analysis

– Code review by computers

– Checks all possible code paths

– Relatively easy to extract results

– Limited capabilities

• Dynamic analysis

– Execute code and observe behaviour

– Checks functional code paths only

– Much advanced analysis

– Difficult to set up

Page 55: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

55

Classes of Security Testing

• Manual vs. Automated Testing

• Static vs. Dynamic Testing

• Black vs. White box Testing

Manual Automated

Static Dynamic Blackbox Whitebox

Reverse

Engineering

Risk

Analysis

Code

checking

Tainting FuzzingDynamic

validation

Penetration

testing

Page 56: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

56

Black vs. White box Testing

• Black box – Unknown internal structure

– Study Input → Output correlation

– Generic technique

– Requires end-to-end system

– May miss components

Page 57: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

57

Black vs. White box Testing

• Black box – Unknown internal structure

– Study Input → Output correlation

– Generic technique

– Requires end-to-end system

– May miss components

• White box– Known internal structure

– Analysis of internal structure

– GUI not necessarily required

– Thorough testing and debugging

– Time consuming

Page 58: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

58

Classes of Security Testing

• Manual vs. Automated Testing

• Static vs. Dynamic Testing

• Black vs. White box Testing

Manual Automated

Static Dynamic Blackbox Whitebox

Reverse

Engineering

Risk

Analysis

Code

checking

Tainting FuzzingDynamic

validation

Penetration

testing

Page 59: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

59

Static Application Security Testing

• Reverse engineering (System level)

– Disassemble application to extract internal structure

– Black box to White box

– Useful for gaining information

Page 60: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

60

Static Application Security Testing

• Reverse engineering (System level)

• Risk-based testing (Business level)

– Model worst case scenarios

– Threat modelling for test case generation

Page 61: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

61

Static Application Security Testing

• Reverse engineering (System level)

• Risk-based testing (Business level)

• Static code checker (Unit level)

– Checks for rule violations via code structure

– Parsers, Control Flow graphs, Data flow analysis

– Identifies bad coding practices, potential security issues, etc.

Page 62: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

62

Classes of Security Testing

• Manual vs. Automated Testing

• Static vs. Dynamic Testing

• Black vs. White box Testing

Manual Automated

Static Dynamic Blackbox Whitebox

Reverse

Engineering

Risk

Analysis

Code

checking

Tainting FuzzingDynamic

validation

Penetration

testing

Page 63: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

63

Dynamic Application Security Testing

• Taint analysis

– Tracking variable values controlled by user

• Fuzzing

– Bombard with garbage data to cause crashes

• Dynamic validation

– Functional testing based on requirements

• Penetration testing

– End-to-end black box testing

Topic for next lecture

Page 64: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

64

Summary Part I

• Java vulnerabilities have large attack surfaces

• Crucial to adapt Secure SDLC

• Threat modelling can drive test case generation

• Static analysis checks code without executing it

• Dynamic analysis executes code and observes behavior

Page 65: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

65

Quiz Time!

Which type of testing aims to convert a black box system to

white box?

Reverse Engineering

Page 66: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

66

Quiz Time!

Which vulnerability allows a remote attacker to change which

instruction will be executed next?

Remote Code Execution

Page 67: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

67

Quiz Time!

Why is Java safe from buffer overflows?

It’s not!

Page 68: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

68

Agenda for today

• Part I

– Latest security news

– Security vulnerabilities in Java

– Types of Security testing

• SAST vs. DAST

• Part II

– SAST under the hood

• Pattern Matching

• Control Flow Analysis

• Data Flow Analysis

– SAST Tools performance

Page 69: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

69

Why doesn’t the perfect static analysis tool exist?

Page 70: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

70

Static Analysis

• Soundness

• Completeness

Page 71: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

71

Static Analysis

• Soundness

– No missed vulnerability (0 FNs)

– No alarm → no vulnerability exists

• Completeness

Page 72: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

72

Static Analysis

• Soundness

– No missed vulnerability (0 FNs)

– No alarm → no vulnerability exists

• Completeness

– No false alarms (0 FPs)

– Raises an alarm → vulnerability found

Page 73: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

73

Static Analysis

• Soundness

– No missed vulnerability (0 FNs)

– No alarm → no vulnerability exists

• Completeness

– No false alarms (0 FPs)

– Raises an alarm → vulnerability found

• Ideally: ↑Soundness + ↑Completeness

• Reality: Compromise on FPs or FNs

Page 74: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

74

Usable SAST Tools

• ↓ FPs vs. ↓ FNs

• ↑ Interpretability

• ↑ Scalability

Page 75: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

75

SAST under the hood

Pattern matching

Regular

expressions

Page 76: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

76

SAST under the hood

Pattern matching Syntax analysis

Abstract Syntax

Tree

Control flow

graph

Data flow

analysis

Regular

expressions

Page 77: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

77

Pattern Matching

• Look for predefined patterns in code

– Regular Expressions

– Finite State Automata

Page 78: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

78

Pattern Matching

• Look for predefined patterns in code

– Regular Expressions

– Finite State Automata

• Find all instances of “bug”

b u g

!b

!u!g

Page 79: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

79

Pattern Matching

• Look for predefined patterns in code

– Regular Expressions

– Finite State Automata

• Find all instances of “bug”

b u g

!b

!u!g

bug

Page 80: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

80

Pattern Matching

• Look for predefined patterns in code

– Regular Expressions

– Finite State Automata

• Find all instances of “bug”

b u g

!b

!u!g

bug

Page 81: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

81

Pattern Matching

• Look for predefined patterns in code

– Regular Expressions

– Finite State Automata

• Find all instances of “bug”

b u g

!b

!u!g

bug

Page 82: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

82

Pattern Matching

• Look for predefined patterns in code

– Regular Expressions

– Finite State Automata

• Find all instances of “bug”

b u g

!b

!u!g

bug

Page 83: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

83

Pattern Matching

• Look for predefined patterns in code

– Regular Expressions

– Finite State Automata

• Find all instances of “bug”

b u g

!b

!u!g

bug

Page 84: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

84

Pattern Matching

• Look for predefined patterns in code

– Regular Expressions

– Finite State Automata

• Find all instances of “bug”

b u g

!b

!u!g

bugMatch!

Page 85: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

85

Pattern Matching via Regex

• Look for predefined patterns in code

– Regular Expressions

– Finite State Automata

• Find all instances of “bug”

b u g

!b

!u!g

bag

Page 86: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

86

Pattern Matching via Regex

• Look for predefined patterns in code

– Regular Expressions

– Finite State Automata

• Find all instances of “bug”

b u g

!b

!u!g

bag

Page 87: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

87

Pattern Matching via Regex

• Look for predefined patterns in code

– Regular Expressions

– Finite State Automata

• Find all instances of “bug”

b u g

!b

!u!g

bag

Page 88: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

88

Pattern Matching via Regex

• Look for predefined patterns in code

– Regular Expressions

– Finite State Automata

• Find all instances of “bug”

b u g

!b

!u!g

bag

Page 89: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

89

Pattern Matching via Regex

• Look for predefined patterns in code

– Regular Expressions

– Finite State Automata

• Find all instances of “bug”

b u g

!b

!u!g

No Match!

bag

Page 90: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

90

Pattern Matching via Regex

• Look for predefined patterns in code

– Regular Expressions

– Finite State Automata

• Find all instances of “.*bug”

b u g

!u!g

!b

Page 91: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

91

Pattern Matching via Regex

• Look for predefined patterns in code

– Regular Expressions

– Finite State Automata

• Find all instances of “.*bug”

b u g

!u!g

!b

Page 92: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

92

Pattern Matching via Regex

• Look for predefined patterns in code

– Regular Expressions

– Finite State Automata

• Find all instances of “.*bug.*”

b u g

!u!g

!b

anything

Page 93: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

93

Pattern Matching via Regex

• Finds low hanging fruit

– Misconfigurations (port 22 open for everyone)

– Bad imports (System.io.*)

– Call to dangerous functions (strcpy, memcpy)

Page 94: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

94

Pattern Matching via Regex

• Finds low hanging fruit

– Misconfigurations (port 22 open for everyone)

– Bad imports (System.io.*)

– Call to dangerous functions (strcpy, memcpy)

• Shortcomings

– Lots of FPs

– Limited support

Page 95: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

95

Pattern Matching via Regex

• Finds low hanging fruit

– Misconfigurations (port 22 open for everyone)

– Bad imports (System.io.*)

– Call to dangerous functions (strcpy, memcpy)

• Shortcomings

– Lots of FPs

– Limited support

Page 96: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

96

Pattern Matching via Regex

• Finds low hanging fruit

– Misconfigurations (port 22 open for everyone)

– Bad imports (System.io.*)

– Call to dangerous functions (strcpy, memcpy)

• Shortcomings

– Lots of FPs

– Limited support

Page 97: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

97

Syntactic Analysis

• Performed via Parsers

• Tokens → Hierarchal data structures

– Parse Tree – Concrete representation

– Abstract Syntax Tree – Abstract representation

Lexer ParserStream Tokens Parse Tree

Page 98: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

98

Abstract Syntax Tree (AST)

Page 99: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

99

Abstract Syntax Tree (AST)

Page 100: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

100

Abstract Syntax Tree (AST)

5 1

SUB

Page 101: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

101

Abstract Syntax Tree (AST)

5 1

MUL

4SUB

Page 102: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

102

Abstract Syntax Tree (AST)

5 1

MUL

4

SUM

2

SUB

Page 103: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

103

Abstract Syntax Tree (AST)

Page 104: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

104

Abstract Syntax Tree (AST)

Page 105: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

105

Abstract Syntax Tree (AST)

=

DEBUG false

Page 106: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

106

Abstract Syntax Tree (AST)

if=

DEBUG false

Page 107: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

107

Abstract Syntax Tree (AST)

if=

DEBUG false cond

EQ

trueDEBUG

Page 108: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

108

Abstract Syntax Tree (AST)

if=

DEBUG false cond

EQ

trueDEBUG

body

Println() Debug line 1

Println() Debug line 2

Println() Debug line 3

Page 109: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

109

Abstract Syntax Tree (AST)

if=

DEBUG false cond

EQ

trueDEBUG

body

Println() Debug line 1

Println() Debug line 2

Println() Debug line 3

Page 110: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

110

Syntactic Analysis via AST

SAST ToolErrors

AST

Ruleset

Page 111: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

111

Syntactic Analysis via AST

SAST ToolErrors

Rule # 1: Allow 3 methods

AST

Ruleset

Page 112: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

112

Syntactic Analysis via AST

SAST ToolErrors

Rule # 1: Allow 3 methods

AST

Ruleset

Page 113: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

113

Syntactic Analysis via AST

SAST ToolErrors

xyz()abc() akw()blah()

class

methods members

Rule # 1: Allow 3 methods

AST

Ruleset

Page 114: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

114

Syntactic Analysis via AST

SAST ToolErrors

xyz()abc() akw()blah()

class

methods members

Rule # 1: Allow 3 methods

Error: Too many methods!

AST

Ruleset

Page 115: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

115

Syntactic Analysis via AST

Rule # 2: printf(format_string, args_to_print)

SAST ToolErrors

AST

Ruleset

Page 116: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

116

Syntactic Analysis via AST

Rule # 2: printf(format_string, args_to_print)

SAST ToolErrors

AST

Ruleset

Page 117: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

117

Syntactic Analysis via AST

Rule # 2: printf(format_string, args_to_print)

func

x

printf=

Hello World!x

SAST ToolErrors

AST

Ruleset

Page 118: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

118

Syntactic Analysis via AST

Rule # 2: printf(format_string, args_to_print)

Error: Missing param!

func

x

printf=

Hello World!x

SAST ToolErrors

AST

Ruleset

Page 119: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

119

Control Flow Graphs

• Shows all execution paths a program might take

• Trace execution without executing program

• Nodes → Basic blocks

• Transitions → Control transfers

https://dzone.com/articles/how-draw-control-flow-graph

Page 120: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

120

Control Flow Graphs

• Shows all execution paths a program might take

• Trace execution without executing program

• Nodes → Basic blocks

• Transitions → Control transfers

If-then-else while case

https://dzone.com/articles/how-draw-control-flow-graph

Page 121: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

121

Control Flow Graphs

Page 122: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

122

Control Flow Graphs

Page 123: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

123

Control Flow Graphs

Page 124: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

124

Control Flow Graphs

T

Page 125: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

125

Control Flow Graphs

T

Page 126: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

126

Control Flow Graphs

TF

Page 127: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

127

Control Flow Graphs

TF

n=?

Only traces control

Page 128: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

128

Control Flow Graphs

TF

n=?

Only traces control

Page 129: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

129

Control Flow Graphs

TF

n=?

Only traces control

Page 130: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

130

Control Flow Graphs

TF

n=?

Only traces control

Page 131: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

131

Control Flow Graphs

TF

n=?

Only traces control

Page 132: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

132

Control Flow Graphs

TF

n=?

Only traces control

Page 133: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

133

Control Flow Graphs

TF

n=?

Only traces control

Page 134: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

134

Control Flow Graphs

TF

n=?

Only traces control

Page 135: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

135

Data Flow Analysis

• Tracks data values throughout program

• Shows all values variables might have

• User controlled variable (Source) → Tainted

• Rest (Sink) → Untainted

Page 136: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

136

Data Flow Analysis

• Prove that

– No untainted data is expected

– No tainted data is used

Page 137: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

137

Data Flow Analysis

• Prove that

– No untainted data is expected

– No tainted data is used

SQL st.Sink:

Database

Source:

Contact

Page 138: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

138

Data Flow Analysis

• Prove that

– No untainted data is expected

– No tainted data is used

SQL st.Sink:

Database

Source:

Contact

‘ or 1=1#

Page 139: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

139

Source/Sink Clash

data is

tainted

println() expects

untainted

Page 140: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

140

Data Flow Analysis

• Reaching definitions

– Top-down approach

– Possible values of a variable

Page 141: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

141

Data Flow Analysis

• Reaching definitions

– Top-down approach

– Possible values of a variable

Page 142: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

142

Data Flow Analysis

• Reaching definitions

– Top-down approach

– Possible values of a variable

Page 143: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

143

Data Flow Analysis

• Reaching definitions

– Top-down approach

– Possible values of a variable

Page 144: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

144

Data Flow Analysis

• Reaching definitions

– Top-down approach

– Possible values of a variable

Page 145: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

145

Data Flow Analysis

• Reaching definitions

– Top-down approach

– Possible values of a variable

Page 146: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

146

Data Flow Analysis

• Reaching definitions

– Top-down approach

– Possible values of a variable

Page 147: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

147

Data Flow Analysis

• Reaching definitions

– Top-down approach

– Possible values of a variable

Page 148: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

148

Data Flow Analysis

• Reaching definitions

– Top-down approach

– Possible values of a variable

Page 149: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

149

Data Flow Analysis

• Reaching definitions

– Top-down approach

– Possible values of a variable

Page 150: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

150

Page 151: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

151

b1

b2

b3

b4 b5

b6

Page 152: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

152

a b c

b1 - 0 1

b2 0, a++ - -

b3 - - -

b4 - 10 -

b5 - - b

b6 - - -

b1

b2

b3

b4 b5

b6

Page 153: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

153

a b c

b1 - 0 1

b2 0, a++ - -

b3 - - -

b4 - 10 -

b5 - - b

b6 - - -

b1

b2

b3

b4 b5

b6

Page 154: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

154

a b c

b1 - 0 1

b2 0, a++ - -

b3 - - -

b4 - 10 -

b5 - - b

b6 - - -

b1

b2

b3

b4 b5

b6

Page 155: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

155

a b c

b1 - 0 1

b2 0, a++ - -

b3 - - -

b4 - 10 -

b5 - - b

b6 - - -

b1

b2

b3

b4 b5

b6

Page 156: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

156

a b c

b1 - 0 1

b2 0, a++ - -

b3 - - -

b4 - 10 -

b5 - - b

b6 - - -

b1

b2

b3

b4 b5

b6

Page 157: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

157

a b c

b1 - 0 1

b2 0, a++ - -

b3 - - -

b4 - 10 -

b5 - - b

b6 - - -

b1

b2

b3

b4 b5

b6

Page 158: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

158

a b c

b1 - 0 1

b2 0, a++ - -

b3 - - -

b4 - 10 -

b5 - - b

b6 - - -

b1

b2

b3

b4 b5

b6

Page 159: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

159

a b c

b1 - 0 1

b2 0, a++ - -

b3 - - -

b4 - 10 -

b5 - - b

b6 - - -

b1

b2

b3

b4 b5

b6

a = {0, 1, 2, 3, …}b = {0, 10}c = {1, b} → {0, 1, 10}

Data Flow Analysis

Page 160: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

160

a b c

b1 - 0 1

b2 0, a++ - -

b3 - - -

b4 - 10 -

b5 - - b

b6 - - -

b1

b2

b3

b4 b5

b6

a = {0, 1, 2, 3, …}b = {0, 10}c = {1, b} → {0, 1, 10}

Data Flow Analysis

Page 161: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

161

a b c

b1 - 0 1

b2 0, a++ - -

b3 - - -

b4 - 10 -

b5 - - b

b6 - - -

b1

b2

b3

b4 b5

b6

a = {0, 1, 2, 3, …}b = {0, 10}c = {1, b} → {0, 1, 10}

Data Flow Analysis

Page 162: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

162

a b c

b1 - 0 1

b2 0, a++ - -

b3 - - -

b4 - 10 -

b5 - - b

b6 - - -

b1

b2

b3

b4 b5

b6

a = {0, 1, 2, 3, …}b = {0, 10}c = {1, b} → {0, 1, 10}

Data Flow Analysis

Page 163: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

163

a b c

b1 - 0 1

b2 0, a++ - -

b3 - - -

b4 - 10 -

b5 - - b

b6 - - -

b1

b2

b3

b4 b5

b6

a = {0, 1, 2, 3, …}b = {0, 10}c = {1, b} → {0, 1, 10}

Data Flow Analysis

Page 164: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

164

a b c

b1 - 0 1

b2 0, a++ - -

b3 - - -

b4 - 10 -

b5 - - b

b6 - - -

b1

b2

b3

b4 b5

b6

a = {0, 1, 2, 3, …}b = {0, 10}c = {1, b} → {0, 1, 10}

Data Flow Analysis

Sound but

imprecise

Page 165: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

165

Data Flow Analysis in Security

• Source/Sink clash

Page 166: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

166

Data Flow Analysis in Security

• Source/Sink clash

– Sanitization problems

– Code injection (Update attack)

– Deserialization vulnerability

Page 167: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

167

Data Flow Analysis in Security

• Source/Sink clash

– Sanitization problems

– Code injection (Update attack)

– Deserialization vulnerability

• Control and Data flow analysis

Page 168: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

168

Data Flow Analysis in Security

• Source/Sink clash

– Sanitization problems

– Code injection (Update attack)

– Deserialization vulnerability

• Control and Data flow analysis

– Type confusion vulnerability

– Use-after-free vulnerability

Page 169: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

169

Data Flow Analysis in Security

• Source/Sink clash

– Sanitization problems

– Code injection (Update attack)

– Deserialization vulnerability

• Control and Data flow analysis

– Type confusion vulnerability

– Use-after-free vulnerability

• Denial of Service??

• Crashes??

Page 170: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

170

• Open source–

– SpotBugs

– FindSecBugs

• Proprietary– Coverity

– CheckMarx

Static Analysis Tools

Page 171: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

171

• Open source–

• Ruleset based code checker

• Checks coding standards

– SpotBugs

• Checks Java bytecode for bad practices, code style, and injections

– FindSecBugs

• Checks for OWASP Top 10 vulnerabilities

• Proprietary– Coverity

• SAST platform for defects and security vulnerabilities

– CheckMarx

• Full fledge platform for static analysis and exposure management

Static Analysis Tools

Page 172: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

172

• Open source–

• Ruleset based code checker

• Checks coding standards

– SpotBugs

• Checks Java bytecode for bad practices, code style, and injections

– FindSecBugs

• Checks for OWASP Top 10 vulnerabilities

• Proprietary– Coverity

• SAST platform for defects and security vulnerabilities

– CheckMarx

• Full fledge platform for static analysis and exposure management

Static Analysis Tools

Page 173: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

173

SAST Tools Performance

• Telenor Digital wants to incorporate security into SDLC

• Investigate developer perceptions of SAST tools

Page 174: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

174

SAST Tools Performance

• Using Juliet Test Suite – 24,000 test cases

• Precision – Ability to guess correct type of flaw

Page 175: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

175

SAST Tools Performance

• Using Juliet Test Suite – 24,000 test cases

• Precision – Ability to guess correct type of flaw

• Recall – Ability to find flaws

Page 176: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

176

SAST Tools Performance

• Using Juliet Test Suite – 24,000 test cases

• Precision – Ability to guess correct type of flaw

• Recall – Ability to find flaws

Page 177: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

177

SAST Dev Perceptions

• “. . . Making the things actually work, that usually is the worst thing. The hassle-factor is not to be underestimated. . . ”

• “. . . At least from my experience with the Sonar tool is that it sometimes complains about issues that are not really issues...”

• “. . . And of course in itself is not productive, nobody gives you a hug after fixing SonarQube reports...”

Page 178: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

178

SAST Dev Perceptions

• “. . . Making the things actually work, that usually is the worst thing. The hassle-factor is not to be underestimated. . . ”

• “. . . At least from my experience with the Sonar tool is that it sometimes complains about issues that are not really issues...”

• “. . . And of course in itself is not productive, nobody gives you a hug after fixing SonarQube reports...”

• Using one SAST tool is not enough

• Low capability of SAST tools in general.

• Commercial tool not an exception

Page 179: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

179

Summary Part II

• Perfect static analysis is not possible

• Pattern matching can find limited but easy to find

problems

• ASTs make code structure analysis easy

• Control and Data FGs are better at finding security

vulnerabilities

• Current SAST Tools are

– Useful

– Difficult to integrate

– Limited in capabilities

Page 180: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

180

Additional Material

• https://www.theserverside.com/feature/Stay-ahead-of-Java-security-issues-like-

SQL-and-LDAP-injections

• https://www.upguard.com/articles/top-10-java-vulnerabilities-and-how-to-fix-

them

• https://en.wikipedia.org/wiki/Static_program_analysis

• https://youtu.be/Heor8BVa4A0

• https://youtu.be/7KCMK-LY-WM

• Aktas, Kursat, and Sevil Sen. "UpDroid: Updated Android Malware and Its

Familial Classification." Nordic Conference on Secure IT Systems. Springer,

Cham, 2018.

Icons courtesy: www.flaticons.com by FlatIcons, FreePik, SmashIcons, Eucalyp, Monkik

Page 181: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

181

Time for questions

Page 182: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

182

Data Flow Analysis

Control

Page 183: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

183

Data Flow Analysis

ControlData

Page 184: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

184

Data Flow Analysis

ControlData

a ← {0}

a ← {7}

a ← {0, 7}

Page 185: Security Testing - Software engineering1 Security Testing Checking for what shouldn’t happen Azqa Nadeem PhD Student @ Cyber Security Group The Cyber Security lecture series2 Agenda

185

Overflow vulnerability

• This vulnerability allows remote attackers to execute arbitrary

code on vulnerable installations of Oracle Java. The user must

visit a malicious page or open a malicious file to exploit this

vulnerability.

• The flaw exists within the handling of image data. The issue lies

in insufficient validation of supplied image data inside the native

function readImage(). An attacker can leverage this vulnerability

to execute arbitrary code under the context of the current

process.

https://www.zerodayinitiative.com/advisories/ZDI-16-032/