caret analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the...

80
CARET analysis of multithreaded programs Huu-Vu Nguyen 1 , Tayssir Touili 2 1 University Paris Diderot and LIPN 2 LIPN, CNRS and University Paris 13

Upload: others

Post on 30-Jul-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

CARET analysis of multithreaded programs

Huu-Vu Nguyen1, Tayssir Touili21 University Paris Diderot and LIPN

2 LIPN, CNRS and University Paris 13

Page 2: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Motivation

Malware detection is a big challenge.

Existing Techniques (not robust)

Signature-matching based technique: can easily be overcome byobfuscation techniques

Code emulation based techniques: limitation in execution time

Solution to have a robust technique

Model-checking for malware detection

allow us to analyse the behaviors (not the syntax) of the programwithout executing it

CARET analysis of multithreaded programs 2 / 42

Page 3: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Motivation

Malware detection is a big challenge.

Existing Techniques (not robust)

Signature-matching based technique: can easily be overcome byobfuscation techniques

Code emulation based techniques: limitation in execution time

Solution to have a robust technique

Model-checking for malware detection

allow us to analyse the behaviors (not the syntax) of the programwithout executing it

CARET analysis of multithreaded programs 2 / 42

Page 4: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Model-checking for Malware Detection

CARET analysis of multithreaded programs 3 / 42

Page 5: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Model-checking for Malware Detection

CARET analysis of multithreaded programs 4 / 42

Page 6: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Model-checking for Malware Detection

CARET analysis of multithreaded programs 5 / 42

Page 7: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Model-checking for Malware Detection

CARET analysis of multithreaded programs 6 / 42

Page 8: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Model-checking for Malware Detection

CARET analysis of multithreaded programs 7 / 42

Page 9: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Model-checking for Malware Detection

CARET analysis of multithreaded programs 8 / 42

Page 10: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Model-checking for Malware Detection

CARET analysis of multithreaded programs 9 / 42

Page 11: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Model-checking for Malware Detection

CARET analysis of multithreaded programs 10 / 42

Page 12: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Model-checking for Malware Detection

CARET analysis of multithreaded programs 11 / 42

Page 13: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Model-checking for Malware Detection

CARET analysis of multithreaded programs 12 / 42

Page 14: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Why Pushdown Systems?

Stack of binary codes

important for malware detection [Song and Touili 2012, 2013]

Pushdown Systems (PDSs)

natural model of sequential programs

allow taking into account the procedure contexts and stack content inthe model

PDSs for Binary Codes

Control locations of PDSs correspond to program points

Stack of PDSs correspond to stack of binary programs

CARET analysis of multithreaded programs 13 / 42

Page 15: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Why Pushdown Systems?

Stack of binary codes

important for malware detection [Song and Touili 2012, 2013]

Pushdown Systems (PDSs)

natural model of sequential programs

allow taking into account the procedure contexts and stack content inthe model

PDSs for Binary Codes

Control locations of PDSs correspond to program points

Stack of PDSs correspond to stack of binary programs

CARET analysis of multithreaded programs 13 / 42

Page 16: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Model-checking for Malware Detection

=⇒ Problem: This can be applied only forsequential programs. However, several malware isconcurrent.

CARET analysis of multithreaded programs 14 / 42

Page 17: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Concurrent Malware Example

The email worm Bagle

is a multithreaded malware:

Main thread: register itself into the registry listing: to be started at the boot time

Thread 2: listen on port 6777 to receive different commands; allow the attackersto upload new file, ...

Thread 3: contacts a list of websites every 10 minutes: to announce the infectionof the current machine

Thread 4: is spawn to search on local drives to look for valid email addresses,...then send itself to these found emails.

How instances of threads are spawn?

Thread 1 dynamically spawn instances of Thread 2,3,4 depending on the needs

The number of instances is not fixed, depending on specific executions

Instances of threads can be spawn dynamically during executions

=⇒ Bagle is a multithreaded malware, withdynamic thread creation during its execution. Howto model such a concurrent malware?

CARET analysis of multithreaded programs 15 / 42

Page 18: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Concurrent Malware Example

The email worm Bagle

is a multithreaded malware:

Main thread: register itself into the registry listing: to be started at the boot time

Thread 2: listen on port 6777 to receive different commands; allow the attackersto upload new file, ...

Thread 3: contacts a list of websites every 10 minutes: to announce the infectionof the current machine

Thread 4: is spawn to search on local drives to look for valid email addresses,...then send itself to these found emails.

How instances of threads are spawn?

Thread 1 dynamically spawn instances of Thread 2,3,4 depending on the needs

The number of instances is not fixed, depending on specific executions

Instances of threads can be spawn dynamically during executions

=⇒ Bagle is a multithreaded malware, withdynamic thread creation during its execution. Howto model such a concurrent malware?

CARET analysis of multithreaded programs 15 / 42

Page 19: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Concurrent Malware Example

The email worm Bagle

is a multithreaded malware:

Main thread: register itself into the registry listing: to be started at the boot time

Thread 2: listen on port 6777 to receive different commands; allow the attackersto upload new file, ...

Thread 3: contacts a list of websites every 10 minutes: to announce the infectionof the current machine

Thread 4: is spawn to search on local drives to look for valid email addresses,...then send itself to these found emails.

How instances of threads are spawn?

Thread 1 dynamically spawn instances of Thread 2,3,4 depending on the needs

The number of instances is not fixed, depending on specific executions

Instances of threads can be spawn dynamically during executions

=⇒ Bagle is a multithreaded malware, withdynamic thread creation during its execution. Howto model such a concurrent malware?

CARET analysis of multithreaded programs 15 / 42

Page 20: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

How to model such concurrent malware?

Ideas

1 PDS is a natural model for sequential malware.

2 =⇒ networks of PDSs can model concurrent malware.

3 =⇒ networks of PDSs with dynamic creation can model concurrentmalware with dynamic creations.

4 =⇒ Dynamic Pushdown Networks [Bouajjani, Muller-Olm and Touili2005] match our needs.

Dynamic Pushdown Networks (DPNs)

A DPN: a networks of Dynamic PDSs

a Dynamic PDS: is a PDS with the ability to spawn new instances ofPDSs during its runs

CARET analysis of multithreaded programs 16 / 42

Page 21: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

How to model such concurrent malware?

Ideas

1 PDS is a natural model for sequential malware.

2 =⇒ networks of PDSs can model concurrent malware.

3 =⇒ networks of PDSs with dynamic creation can model concurrentmalware with dynamic creations.

4 =⇒ Dynamic Pushdown Networks [Bouajjani, Muller-Olm and Touili2005] match our needs.

Dynamic Pushdown Networks (DPNs)

A DPN: a networks of Dynamic PDSs

a Dynamic PDS: is a PDS with the ability to spawn new instances ofPDSs during its runs

CARET analysis of multithreaded programs 16 / 42

Page 22: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Definition of PDSs

A Pushdown System (PDS) P is a tuple (P, Γ,∆), where

P is a finite set of control locations

Γ is a finite set of stack alphabet

∆ is the set of transition rules of the following form:

(r1): pγcall−−→ p1γ1γ2

(r2): pγret−→ p1ε

(r3): pγint−→ p1ω

where p, p1 ∈ P, γ, γ1, γ2 ∈ Γ, ω ∈ Γ∗

A rule of the form pγcall−−→ p1γ1γ2 corresponds to a call statement

usually models a statement of the form γcall proc−−−−−→ γ2

γ is the control point of the program where the function call is made, γ1 is theentry point of the called procedure and γ2 is the return point of the call.

A configuration: pω where p ∈ P is the current control location, ω ∈ Γ∗ is the currentstack content.

CARET analysis of multithreaded programs 17 / 42

Page 23: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Definition of PDSs

A Pushdown System (PDS) P is a tuple (P, Γ,∆), where

P is a finite set of control locations

Γ is a finite set of stack alphabet

∆ is the set of transition rules of the following form:

(r1): pγcall−−→ p1γ1γ2

(r2): pγret−→ p1ε

(r3): pγint−→ p1ω

where p, p1 ∈ P, γ, γ1, γ2 ∈ Γ, ω ∈ Γ∗

A rule of the form pγcall−−→ p1γ1γ2 corresponds to a call statement

usually models a statement of the form γcall proc−−−−−→ γ2

γ is the control point of the program where the function call is made, γ1 is theentry point of the called procedure and γ2 is the return point of the call.

A configuration: pω where p ∈ P is the current control location, ω ∈ Γ∗ is the currentstack content.

CARET analysis of multithreaded programs 17 / 42

Page 24: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Definition of PDSs

A Pushdown System (PDS) P is a tuple (P, Γ,∆), where

P is a finite set of control locations

Γ is a finite set of stack alphabet

∆ is the set of transition rules of the following form:

(r1): pγcall−−→ p1γ1γ2

(r2): pγret−→ p1ε

(r3): pγint−→ p1ω

where p, p1 ∈ P, γ, γ1, γ2 ∈ Γ, ω ∈ Γ∗

A rule of the form pγcall−−→ p1γ1γ2 corresponds to a call statement

usually models a statement of the form γcall proc−−−−−→ γ2

γ is the control point of the program where the function call is made, γ1 is theentry point of the called procedure and γ2 is the return point of the call.

A configuration: pω where p ∈ P is the current control location, ω ∈ Γ∗ is the currentstack content.

CARET analysis of multithreaded programs 17 / 42

Page 25: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Definition of DPNs

A Dynamic Pushdown Network (DPN) M is a set {P1, ...,Pn} s.t. forevery 1 ≤ i ≤ n, Pi = (Pi , Γi ,∆i ) is a Dynamic Pushdown System(DPDS)

where psωs ∈⋃

1≤j≤n Pj × Γ∗j

(NonSpawn)(r1) pγcall−−→i p1γ1γ2

(NonSpawn)(r2) pγret−→i p1ε

(NonSpawn)(r3) pγint−→i p1ω1

CARET analysis of multithreaded programs 18 / 42

Page 26: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Definition of DPNs

A Dynamic Pushdown Network (DPN) M is a set {P1, ...,Pn} s.t. forevery 1 ≤ i ≤ n, Pi = (Pi , Γi ,∆i ) is a Dynamic Pushdown System(DPDS) where psωs ∈

⋃1≤j≤n Pj × Γ∗j

(NonSpawn)(r1) pγcall−−→i p1γ1γ2

(NonSpawn)(r2) pγret−→i p1ε

(NonSpawn)(r3) pγint−→i p1ω1

(Spawn) (r4) pγcall−−→i p1γ1γ2B psωs

(Spawn) (r5) pγret−→i p1εB psωs

(Spawn) (r6) pγint−→i p1ω1B psωs

CARET analysis of multithreaded programs 18 / 42

Page 27: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Model-checking for Malware Detection

CARET analysis of multithreaded programs 19 / 42

Page 28: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Specification Formalisms for Malware Behaviors

Recent works: extensions of LTL, CTL were used as specifications

CTPL [Kinder, Katzenbeisser,Schallhart and Veith 2005]

SLTPL, SCTPL [Song and Touili 2012, 2013]

However, these are not expressive enough for malicious behaviors

CARET analysis of multithreaded programs 20 / 42

Page 29: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Malicious Behavior Example

Spyware Behavior

search directories for personal information (emails, bank account info, ...)

To do that

Firstly, call the API FindFirstFileA =⇒ return a search handle h

After that, call the API FindNextFileA with h as parameter =⇒search remaining matching files

Then,..

Cannot be expressed by LTL or CTL since it requires that the returnvalue of the function FindFirstFileA should be used as the input tothe function FindNextFileA

=⇒ we need a formalism that can talk about matching calls andreturns =⇒ CARET.

CARET analysis of multithreaded programs 21 / 42

Page 30: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Malicious Behavior Example

Spyware Behavior

search directories for personal information (emails, bank account info, ...)

To do that

Firstly, call the API FindFirstFileA =⇒ return a search handle h

After that, call the API FindNextFileA with h as parameter =⇒search remaining matching files

Then,..

Cannot be expressed by LTL or CTL since it requires that the returnvalue of the function FindFirstFileA should be used as the input tothe function FindNextFileA

=⇒ we need a formalism that can talk about matching calls andreturns =⇒ CARET.

CARET analysis of multithreaded programs 21 / 42

Page 31: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Malicious Behavior Example

Spyware Behavior

search directories for personal information (emails, bank account info, ...)

To do that

Firstly, call the API FindFirstFileA =⇒ return a search handle h

After that, call the API FindNextFileA with h as parameter =⇒search remaining matching files

Then,..

Cannot be expressed by LTL or CTL since it requires that the returnvalue of the function FindFirstFileA should be used as the input tothe function FindNextFileA

=⇒ we need a formalism that can talk about matching calls andreturns =⇒ CARET.

CARET analysis of multithreaded programs 21 / 42

Page 32: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

CARET

linear temporal logic of Calls and Returns [Alur, Etessami andMadhusudan 2004]

Interpreted over transition systems where each state is associatedwith a tag in the set {call, ret, int}

call : a call statementret : a return statementint : an internal statement (neither call nor return)

CARET analysis of multithreaded programs 22 / 42

Page 33: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Global Successor

Global Successor(X g ): standard successor (X g (si ) = si+1)

Global Path: standard path like for LTL

B

C

D

s0 s1 s2

s3 s4 s5

s6 s7 s8

s9 s10

sk

call

call

ret

CARET analysis of multithreaded programs 23 / 42

Page 34: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Abstract Successor

Abstract Successor (X a)

The abstract successor of a call is its corresponding return-point

Abstract Path: apply repeatedly the abstract successor

B

C

D

s0 s1 s2

s3 s4 s5

s6 s7 s8

s9 s10

sk

call

call

ret

CARET analysis of multithreaded programs 24 / 42

Page 35: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Abstract Path

Abstract path:

From s0: s0s1s2sk ....

B

C

D

s0 s1 s2

s3 s4 s5

s6 s7 s8

s9 s10

sk

call

call

ret

CARET analysis of multithreaded programs 25 / 42

Page 36: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Abstract Path

Abstract path:

From s3: s3s4s5s9s10....

B

C

D

s0 s1 s2

s3 s4 s5

s6 s7 s8

s9 s10

sk

call

call

ret

CARET analysis of multithreaded programs 26 / 42

Page 37: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Caller Successor

Caller Successors (X c)

the caller successor of a point is the caller point of the currentprocedure

Caller Path: apply repeatedly the caller successor

B

C

D

s0 s1 s2

s3 s4 s5

s6 s7 s8

s9 s10

sk

call

call

ret

CARET analysis of multithreaded programs 27 / 42

Page 38: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

CARET successors

B

C

D

s0 s1 s2

s3 s4 s5

s6 s7 s8

s9 s10

sk

call

call

ret

global-successor

abstract-successor caller-successor

CARET analysis of multithreaded programs 28 / 42

Page 39: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

CARET Definition

Given a finite set of atomic propositions AP. A CARET formula over AP isdefined as follows:

ψ := e | {call , ret, int} | ψ ∨ ψ | ¬ψ | X gψ | X aψ | X cψ | ψUaψ | ψUgψ | ψUcψ

where

e ∈ AP: atomic proposition

X g : global successor

X a: abstract successor

X c : caller successor

Ug : until operator on global path

Ua: until operator on abstract path

Uc : until operator on caller path

CARET analysis of multithreaded programs 29 / 42

Page 40: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Malicious Behavior Example

Spyware Behavior

search directories for personal information (emails, bank account info, ...)

To do that

Firstly, call the API FindFirstFileA =⇒ return a search handle h

After that, call the API FindNextFileA with h as parameter =⇒search remaining matching files

Using CARET to describe ...

ψsf =∨

d∈D F g (call(FindFirstFileA) ∧ X a(eax = d) ∧ F a(call(FindNextFileA) ∧ dΓ∗))

CARET analysis of multithreaded programs 30 / 42

Page 41: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Malicious Behavior Example

Spyware Behavior

search directories for personal information (emails, bank account info, ...)

To do that

Firstly, call the API FindFirstFileA =⇒ return a search handle h

After that, call the API FindNextFileA with h as parameter =⇒search remaining matching files

Using CARET to describe ...

ψsf =∨

d∈D F g (call(FindFirstFileA) ∧ X a(eax = d) ∧ F a(call(FindNextFileA) ∧ dΓ∗))

CARET analysis of multithreaded programs 30 / 42

Page 42: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Spyware Behavior Formula

Malicious behavior by CARET

ψsf =∨d∈D

F g (call(FindFirstFileA) ∧ X a(eax = d) ∧ F a(call(FindNextFileA) ∧ dΓ∗))

∨d∈D : disjunction over all possible memory addresses d containing search handles

call(FindFirstFileA) ∧ X a(eax = d)

eax : contain the return value of an API function when the functionfinish its executionX a of a call is its corresponding return point

→ there is a call to FindFirstFileA and the return value is d

call(FindNextFileA) ∧ dΓ∗

dΓ∗: d is on top of the stackparameters: passed to function by pushing on the stack

→ there is a call to FindNextFileA where d is used as parameter.

F g : the standard F operator

F a: in the future after call(FindFirstFileA) finishes

=⇒ ψsf : there exists a path s.t there is a call to FindFirstFileA where the return value isd , and after this call finishes, there is a call to FindNextFileA s.t d is used as parameter.

CARET analysis of multithreaded programs 31 / 42

Page 43: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Spyware Behavior Formula

Malicious behavior by CARET

ψsf =∨

d∈D F g ( call(FindFirstFileA) ∧ X a(eax = d) ∧ F a(call(FindNextFileA) ∧ dΓ∗))

∨d∈D : disjunction over all possible memory addresses d containing search handles

call(FindFirstFileA) ∧ X a(eax = d)

eax : contain the return value of an API function when the functionfinish its executionX a of a call is its corresponding return point

→ there is a call to FindFirstFileA and the return value is d

call(FindNextFileA) ∧ dΓ∗

dΓ∗: d is on top of the stackparameters: passed to function by pushing on the stack

→ there is a call to FindNextFileA where d is used as parameter.

F g : the standard F operator

F a: in the future after call(FindFirstFileA) finishes

=⇒ ψsf : there exists a path s.t there is a call to FindFirstFileA where the return value isd , and after this call finishes, there is a call to FindNextFileA s.t d is used as parameter.

CARET analysis of multithreaded programs 31 / 42

Page 44: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Spyware Behavior Formula

Malicious behavior by CARET

ψsf =∨

d∈D F g (call(FindFirstFileA) ∧ X a(eax = d) ∧ F a( call(FindNextFileA) ∧ dΓ∗ ))

∨d∈D : disjunction over all possible memory addresses d containing search handles

call(FindFirstFileA) ∧ X a(eax = d)

eax : contain the return value of an API function when the functionfinish its executionX a of a call is its corresponding return point

→ there is a call to FindFirstFileA and the return value is d

call(FindNextFileA) ∧ dΓ∗

dΓ∗: d is on top of the stackparameters: passed to function by pushing on the stack

→ there is a call to FindNextFileA where d is used as parameter.

F g : the standard F operator

F a: in the future after call(FindFirstFileA) finishes

=⇒ ψsf : there exists a path s.t there is a call to FindFirstFileA where the return value isd , and after this call finishes, there is a call to FindNextFileA s.t d is used as parameter.

CARET analysis of multithreaded programs 31 / 42

Page 45: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Spyware Behavior Formula

Malicious behavior by CARET

ψsf =∨

d∈D F g (call(FindFirstFileA) ∧ X a(eax = d) ∧ F a (call(FindNextFileA) ∧ dΓ∗))

∨d∈D : disjunction over all possible memory addresses d containing search handles

call(FindFirstFileA) ∧ X a(eax = d)

eax : contain the return value of an API function when the functionfinish its executionX a of a call is its corresponding return point

→ there is a call to FindFirstFileA and the return value is d

call(FindNextFileA) ∧ dΓ∗

dΓ∗: d is on top of the stackparameters: passed to function by pushing on the stack

→ there is a call to FindNextFileA where d is used as parameter.

F g : the standard F operator

F a: in the future after call(FindFirstFileA) finishes

=⇒ ψsf : there exists a path s.t there is a call to FindFirstFileA where the return value isd , and after this call finishes, there is a call to FindNextFileA s.t d is used as parameter.

CARET analysis of multithreaded programs 31 / 42

Page 46: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Spyware Behavior Formula

Malicious behavior by CARET

ψsf =∨

d∈D F g (call(FindFirstFileA) ∧ X a(eax = d) ∧ F a(call(FindNextFileA) ∧ dΓ∗))

∨d∈D : disjunction over all possible memory addresses d containing search handles

call(FindFirstFileA) ∧ X a(eax = d)

eax : contain the return value of an API function when the functionfinish its executionX a of a call is its corresponding return point

→ there is a call to FindFirstFileA and the return value is d

call(FindNextFileA) ∧ dΓ∗

dΓ∗: d is on top of the stackparameters: passed to function by pushing on the stack

→ there is a call to FindNextFileA where d is used as parameter.

F g : the standard F operator

F a: in the future after call(FindFirstFileA) finishes

=⇒ ψsf : there exists a path s.t there is a call to FindFirstFileA where the return value isd , and after this call finishes, there is a call to FindNextFileA s.t d is used as parameter.

CARET analysis of multithreaded programs 31 / 42

Page 47: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Model-checking for Malware Detection

CARET analysis of multithreaded programs 32 / 42

Page 48: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Problem: DPNs � CARET??

1 model-checking LTL properties for networks of PDSs is undecidable[Kahlon and Gupta 2006], e.g., for properties that mix differentindices of different threads like F (ai ∧ bj)

2 LTL is a subclass of CARET

3 =⇒ model-checking CARET properties for networks of PDSs isundecidable

4 =⇒ We consider: model-checking single-indexed CARET propertiesfor DPNs, where:

single-indexed properties: properties in the form f = f1 ∧ f2... ∧ fn,where fi is the CARET formula corresponding to Pi

CARET analysis of multithreaded programs 33 / 42

Page 49: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Problem: DPNs � CARET??

1 model-checking LTL properties for networks of PDSs is undecidable[Kahlon and Gupta 2006], e.g., for properties that mix differentindices of different threads like F (ai ∧ bj)

2 LTL is a subclass of CARET

3 =⇒ model-checking CARET properties for networks of PDSs isundecidable

4 =⇒ We consider: model-checking single-indexed CARET propertiesfor DPNs, where:

single-indexed properties: properties in the form f = f1 ∧ f2... ∧ fn,where fi is the CARET formula corresponding to Pi

CARET analysis of multithreaded programs 33 / 42

Page 50: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Problem: DPNs � CARET??

1 model-checking LTL properties for networks of PDSs is undecidable[Kahlon and Gupta 2006], e.g., for properties that mix differentindices of different threads like F (ai ∧ bj)

2 LTL is a subclass of CARET

3 =⇒ model-checking CARET properties for networks of PDSs isundecidable

4 =⇒ We consider: model-checking single-indexed CARET propertiesfor DPNs, where:

single-indexed properties: properties in the form f = f1 ∧ f2... ∧ fn,where fi is the CARET formula corresponding to Pi

CARET analysis of multithreaded programs 33 / 42

Page 51: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Problem: DPNs � CARET??

1 model-checking LTL properties for networks of PDSs is undecidable[Kahlon and Gupta 2006], e.g., for properties that mix differentindices of different threads like F (ai ∧ bj)

2 LTL is a subclass of CARET

3 =⇒ model-checking CARET properties for networks of PDSs isundecidable

4 =⇒ We consider: model-checking single-indexed CARET propertiesfor DPNs, where:

single-indexed properties: properties in the form f = f1 ∧ f2... ∧ fn,where fi is the CARET formula corresponding to Pi

CARET analysis of multithreaded programs 33 / 42

Page 52: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Problem: DPNs � CARET??

1 model-checking LTL properties for networks of PDSs is undecidable[Kahlon and Gupta 2006], e.g., for properties that mix differentindices of different threads like F (ai ∧ bj)

2 LTL is a subclass of CARET

3 =⇒ model-checking CARET properties for networks of PDSs isundecidable

4 =⇒ We consider: model-checking single-indexed CARET propertiesfor DPNs, where:

single-indexed properties: properties in the form f = f1 ∧ f2... ∧ fn,where fi is the CARET formula corresponding to Pi

CARET analysis of multithreaded programs 33 / 42

Page 53: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Problem to solve

Given:

a DPN M = {P1,P2, ...,Pn}a single-indexed CARET formula f = f1 ∧ f2... ∧ fn

Model-checking problem:

Does there exist an execution of M s.t. every instance of the DPDSPi satisfies the corresponding CARET formula fi?

CARET analysis of multithreaded programs 34 / 42

Page 54: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Single-indexed CARET Model Checking for DPNs

Theorem

Single-indexed CARET Model Checking for DPNs is decidable.

Intuition:

We reduce this problem to the emptiness problem of Buchi DynamicPushdown Networks (BDPNs) [Song and Touili 2013, 2016].

a BDPN BM is a set {BP1, ...,BPn} where BP i (1 ≤ i ≤ n) is aBuchi Dynamic Pushdown Systema Buchi Dynamic Pushdown System BP i = (Pi , Γi ,∆i ,Fi ) is a PDSwith a set of accepting control locations Fi

We compute BDPNs BM = {BP1, ...,BPn} such that BP i is a kindof product between Pi and the CARET formula fi which ensures that:

The problem of checking whether an instance of Pi starting from pωsatisfies fi can be reduced to the membership problem of BP i

CARET analysis of multithreaded programs 35 / 42

Page 55: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Single-indexed CARET Model Checking for DPNs

Theorem

Single-indexed CARET Model Checking for DPNs is decidable.

Intuition:

We reduce this problem to the emptiness problem of Buchi DynamicPushdown Networks (BDPNs) [Song and Touili 2013, 2016].

a BDPN BM is a set {BP1, ...,BPn} where BP i (1 ≤ i ≤ n) is aBuchi Dynamic Pushdown System

a Buchi Dynamic Pushdown System BP i = (Pi , Γi ,∆i ,Fi ) is a PDSwith a set of accepting control locations Fi

We compute BDPNs BM = {BP1, ...,BPn} such that BP i is a kindof product between Pi and the CARET formula fi which ensures that:

The problem of checking whether an instance of Pi starting from pωsatisfies fi can be reduced to the membership problem of BP i

CARET analysis of multithreaded programs 35 / 42

Page 56: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Single-indexed CARET Model Checking for DPNs

Theorem

Single-indexed CARET Model Checking for DPNs is decidable.

Intuition:

We reduce this problem to the emptiness problem of Buchi DynamicPushdown Networks (BDPNs) [Song and Touili 2013, 2016].

a BDPN BM is a set {BP1, ...,BPn} where BP i (1 ≤ i ≤ n) is aBuchi Dynamic Pushdown Systema Buchi Dynamic Pushdown System BP i = (Pi , Γi ,∆i ,Fi ) is a PDSwith a set of accepting control locations Fi

We compute BDPNs BM = {BP1, ...,BPn} such that BP i is a kindof product between Pi and the CARET formula fi which ensures that:

The problem of checking whether an instance of Pi starting from pωsatisfies fi can be reduced to the membership problem of BP i

CARET analysis of multithreaded programs 35 / 42

Page 57: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Single-indexed CARET Model Checking for DPNs

Theorem

Single-indexed CARET Model Checking for DPNs is decidable.

Intuition:

We reduce this problem to the emptiness problem of Buchi DynamicPushdown Networks (BDPNs) [Song and Touili 2013, 2016].

a BDPN BM is a set {BP1, ...,BPn} where BP i (1 ≤ i ≤ n) is aBuchi Dynamic Pushdown Systema Buchi Dynamic Pushdown System BP i = (Pi , Γi ,∆i ,Fi ) is a PDSwith a set of accepting control locations Fi

We compute BDPNs BM = {BP1, ...,BPn} such that BP i is a kindof product between Pi and the CARET formula fi which ensures that:

The problem of checking whether an instance of Pi starting from pωsatisfies fi can be reduced to the membership problem of BP i

CARET analysis of multithreaded programs 35 / 42

Page 58: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Single-indexed CARET Model Checking for DPNs

Theorem

Single-indexed CARET Model Checking for DPNs is decidable.

Intuition:

We reduce this problem to the emptiness problem of Buchi DynamicPushdown Networks (BDPNs) [Song and Touili 2013, 2016].

a BDPN BM is a set {BP1, ...,BPn} where BP i (1 ≤ i ≤ n) is aBuchi Dynamic Pushdown Systema Buchi Dynamic Pushdown System BP i = (Pi , Γi ,∆i ,Fi ) is a PDSwith a set of accepting control locations Fi

We compute BDPNs BM = {BP1, ...,BPn} such that BP i is a kindof product between Pi and the CARET formula fi which ensures that:

The problem of checking whether an instance of Pi starting from pωsatisfies fi can be reduced to the membership problem of BP i

CARET analysis of multithreaded programs 35 / 42

Page 59: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

BDPDS Computation - Intuition

At state si , we encode a set of formulas Ai such that for every φ ∈ Ai , φholds at si

B

C

D

s0 s1 s2

s3 s4 s5

s6 s7 s8

s9 s10

A0

A8

AkA2

call

ret

CARET analysis of multithreaded programs 36 / 42

Page 60: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

BDPDS Computation-X Operators-Call statements

call

Φ0

ret

p0ω0 piωi

pi+1ωi+1 pk−1ωk−1

pkωk

for piγcall−−→ pi+1γ

′γ′′ in Pi :

Lpi , {X gφ}Mγ −→ Lpi+1, {φ}Mγγ′′ inBP i

Lpi , {X aφ}Mγ −→ pi+1γ′ Lγ′′, {φ}M in

BP i

for pk−1βret−→ pkε in Pi :

pk Lγ′′, {φ}M −→ Lpk , {φ} Mγ′′

CARET analysis of multithreaded programs 37 / 42

Page 61: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

BDPDS Computation-X Operators-Call statements

call

Φ0

ret

p0ω0 piωi

pi+1ωi+1 pk−1ωk−1

pkωk

for piγcall−−→ pi+1γ

′γ′′ in Pi :

Lpi , {X gφ}Mγ −→ Lpi+1, {φ}Mγγ′′ inBP i

Lpi , {X aφ}Mγ −→ pi+1γ′ Lγ′′, {φ}M in

BP i

for pk−1βret−→ pkε in Pi :

pk Lγ′′, {φ}M −→ Lpk , {φ} Mγ′′

CARET analysis of multithreaded programs 37 / 42

Page 62: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

BDPDS Computation-X Operators-Call statements

call

Φ0

ret

p0ω0 piωi

pi+1ωi+1 pk−1ωk−1

pkωk

for piγcall−−→ pi+1γ

′γ′′ in Pi :

Lpi , {X gφ}Mγ −→ Lpi+1, {φ}Mγγ′′ inBP i

Lpi , {X aφ}Mγ −→ pi+1γ′ Lγ′′, {φ}M in

BP i

for pk−1βret−→ pkε in Pi :

pk Lγ′′, {φ}M −→ Lpk , {φ} Mγ′′

CARET analysis of multithreaded programs 37 / 42

Page 63: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

BDPDS Computation-X Operators-Call statements

call

Φ0X gφ

φ ret

p0ω0 piωi

pi+1ωi+1 pk−1ωk−1

pkωk

piωi � X gφ iff pi+1ωi+1 � φ

for piγcall−−→ pi+1γ

′γ′′ in Pi :

Lpi , {X gφ}Mγ −→ Lpi+1, {φ}Mγγ′′ inBP i

Lpi , {X aφ}Mγ −→ pi+1γ′ Lγ′′, {φ}M in

BP i

for pk−1βret−→ pkε in Pi :

pk Lγ′′, {φ}M −→ Lpk , {φ} Mγ′′

CARET analysis of multithreaded programs 37 / 42

Page 64: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

BDPDS Computation-X Operators-Call statements

call

Φ0

φ

X aφ

ret

p0ω0 piωi

pi+1ωi+1 pk−1ωk−1

pkωk

piωi � X aφ iff pkωk � φ

for piγcall−−→ pi+1γ

′γ′′ in Pi :

Lpi , {X gφ}Mγ −→ Lpi+1, {φ}Mγγ′′ inBP i

Lpi , {X aφ}Mγ −→ pi+1γ′ Lγ′′, {φ}M in

BP i

for pk−1βret−→ pkε in Pi :

pk Lγ′′, {φ}M −→ Lpk , {φ} Mγ′′

CARET analysis of multithreaded programs 37 / 42

Page 65: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

BDPDS Computation-X Operators-Call statements

call

Φ0

φ

X aφ

ret

p0ω0 piωi

pi+1ωi+1 pk−1ωk−1

pkωk

piωi � X aφ iff pkωk � φ

for piγcall−−→ pi+1γ

′γ′′ in Pi :

Lpi , {X gφ}Mγ −→ Lpi+1, {φ}Mγγ′′ inBP i

Lpi , {X aφ}Mγ −→ pi+1γ′ Lγ′′, {φ}M in

BP i

for pk−1βret−→ pkε in Pi :

pk Lγ′′, {φ}M −→ Lpk , {φ} Mγ′′

CARET analysis of multithreaded programs 37 / 42

Page 66: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

BDPDS Computation-X Operators-Call statements

call

Φ0

φ

X aφ Lγ′′, {φ}M

ret

p0ω0 piωi

pi+1ωi+1 pk−1ωk−1

pkωk

piωi � X aφ iff pkωk � φ

for piγcall−−→ pi+1γ

′γ′′ in Pi :

Lpi , {X gφ}Mγ −→ Lpi+1, {φ}Mγγ′′ inBP i

Lpi , {X aφ}Mγ −→ pi+1γ′ Lγ′′, {φ}M in

BP i

for pk−1βret−→ pkε in Pi :

pk Lγ′′, {φ}M −→ Lpk , {φ} Mγ′′

CARET analysis of multithreaded programs 37 / 42

Page 67: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

BDPDS Computation-X Operators-Call statements

call

Φ0

φ

X aφ Lγ′′, {φ}M

ret

p0ω0 piωi

pi+1ωi+1 pk−1ωk−1

pkωk

piωi � X aφ iff pkωk � φ

for piγcall−−→ pi+1γ

′γ′′ in Pi :

Lpi , {X gφ}Mγ −→ Lpi+1, {φ}Mγγ′′ inBP i

Lpi , {X aφ}Mγ −→ pi+1γ′ Lγ′′, {φ}M in

BP i

for pk−1βret−→ pkε in Pi

pk Lγ′′, {φ}M −→ Lpk , {φ} Mγ′′

CARET analysis of multithreaded programs 37 / 42

Page 68: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

BDPDS Computation-X Operators-Call statements

call

Φ0

φ

X aφ Lγ′′, {φ}M

ret

p0ω0 piωi

pi+1ωi+1 pk−1ωk−1

pkωk

piωi � X aφ iff pkωk � φ

for piγcall−−→ pi+1γ

′γ′′ in Pi :

Lpi , {X gφ}Mγ −→ Lpi+1, {φ}Mγγ′′ inBP i

Lpi , {X aφ}Mγ −→ pi+1γ′ Lγ′′, {φ}M in

BP i

for pk−1βret−→ pkε in Pi :

pk Lγ′′, {φ}M −→ Lpk , {φ} Mγ′′

CARET analysis of multithreaded programs 37 / 42

Page 69: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

BDPDS Computation-X Operators- Int statements

call

for piγint−→ pi+1ω in Pi :

Lpi , {X gφ}Mγ −→ Lpi+1, {φ}Mω inBP i

Lpi , {X aφ}Mγ −→ Lpi+1, {φ}Mω inBP i

for piγint−→ pi+1ωB psωs in Pi

(psωs ∈ Pj ):

Lpi , {X gφ}Mγ −→Lpi+1, {φ}MωB Lps , fjMωs in BP i

Lpi , {X aφ}Mγ −→Lpi+1, {φ}MωB Lps , fjMωs in BP i

CARET analysis of multithreaded programs 38 / 42

Page 70: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

BDPDS Computation-X Operators- Int statements

call

for piγint−→ pi+1ω in Pi :

Lpi , {X gφ}Mγ −→ Lpi+1, {φ}Mω inBP i

Lpi , {X aφ}Mγ −→ Lpi+1, {φ}Mω inBP i

for piγint−→ pi+1ωB psωs in Pi

(psωs ∈ Pj ):

Lpi , {X gφ}Mγ −→Lpi+1, {φ}MωB Lps , fjMωs in BP i

Lpi , {X aφ}Mγ −→Lpi+1, {φ}MωB Lps , fjMωs in BP i

CARET analysis of multithreaded programs 38 / 42

Page 71: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

BDPDS Computation-X Operators- Int statements

call

piωi pi+1ωi+1

X gφ φ

piωi � X gφ iff pi+1ωi+1 � φ

for piγint−→ pi+1ω in Pi :

Lpi , {X gφ}Mγ −→ Lpi+1, {φ}Mω inBP i

Lpi , {X aφ}Mγ −→ Lpi+1, {φ}Mω inBP i

for piγint−→ pi+1ωB psωs in Pi

(psωs ∈ Pj ):

Lpi , {X gφ}Mγ −→Lpi+1, {φ}MωB Lps , fjMωs in BP i

Lpi , {X aφ}Mγ −→Lpi+1, {φ}MωB Lps , fjMωs in BP i

CARET analysis of multithreaded programs 38 / 42

Page 72: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

BDPDS Computation-X Operators- Int statements

call

for piγint−→ pi+1ω in Pi :

Lpi , {X gφ}Mγ −→ Lpi+1, {φ}Mω inBP i

Lpi , {X aφ}Mγ −→ Lpi+1, {φ}Mω inBP i

for piγint−→ pi+1ωB psωs in Pi

(psωs ∈ Pj ):

Lpi , {X gφ}Mγ −→Lpi+1, {φ}MωB Lps , fjMωs in BP i

Lpi , {X aφ}Mγ −→Lpi+1, {φ}MωB Lps , fjMωs in BP i

CARET analysis of multithreaded programs 38 / 42

Page 73: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

BDPDS Computation-X Operators- Int statements

call

φX aφ

piωi � X aφ iff pi+1ωi+1 � φ

for piγint−→ pi+1ω in Pi :

Lpi , {X gφ}Mγ −→ Lpi+1, {φ}Mω inBP i

Lpi , {X aφ}Mγ −→ Lpi+1, {φ}Mω inBP i

for piγint−→ pi+1ωB psωs in Pi

(psωs ∈ Pj ):

Lpi , {X gφ}Mγ −→Lpi+1, {φ}MωB Lps , fjMωs in BP i

Lpi , {X aφ}Mγ −→Lpi+1, {φ}MωB Lps , fjMωs in BP i

CARET analysis of multithreaded programs 38 / 42

Page 74: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

BDPDS Computation-X Operators- Int statements

call

for piγint−→ pi+1ω in Pi :

Lpi , {X gφ}Mγ −→ Lpi+1, {φ}Mω inBP i

Lpi , {X aφ}Mγ −→ Lpi+1, {φ}Mω inBP i

for piγint−→ pi+1ωB psωs in Pi

(psωs ∈ Pj ):

Lpi , {X gφ}Mγ −→Lpi+1, {φ}MωB Lps , fjMωs in BP i

Lpi , {X aφ}Mγ −→Lpi+1, {φ}MωB Lps , fjMωs in BP i

CARET analysis of multithreaded programs 38 / 42

Page 75: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

BDPDS Computation-X Operators- Int statements

call

for piγint−→ pi+1ω in Pi :

Lpi , {X gφ}Mγ −→ Lpi+1, {φ}Mω inBP i

Lpi , {X aφ}Mγ −→ Lpi+1, {φ}Mω inBP i

for piγint−→ pi+1ωB psωs in Pi

(psωs ∈ Pj ):

Lpi , {X gφ}Mγ −→Lpi+1, {φ}MωB Lps , fjMωs in BP i

Lpi , {X aφ}Mγ −→Lpi+1, {φ}MωB Lps , fjMωs in BP i

CARET analysis of multithreaded programs 38 / 42

Page 76: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Theorem

Theorem

Given a DPN M = {P1, ...,Pn}, a single-indexed CARET formulaf = f1 ∧ f2... ∧ fn, we can compute a BDPN BM = {BP1, ...,BPn} suchthat M � f iff BM has an accepting run.

CARET analysis of multithreaded programs 39 / 42

Page 77: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

DPNs communicating via Locks (L-DPNs)

L-DPNs

a L-DPN is a DPN where pushdown processes communicate via locks.

Nested Lock Access

a L-DPNs with Nested Lock Access: is a L-DPN s.t. in all executions, thelocks are accessed in a well-nested manner, i.e, an execution can onlyrelease the latest lock it acquired that is not released yet.

Theorem

Single-indexed CARET model-checking for L-DPNs with nested Lockaccess can be reduced to single-indexed CARET model-checking for DPNs

CARET analysis of multithreaded programs 40 / 42

Page 78: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

DPNs communicating via Locks (L-DPNs)

L-DPNs

a L-DPN is a DPN where pushdown processes communicate via locks.

Nested Lock Access

a L-DPNs with Nested Lock Access: is a L-DPN s.t. in all executions, thelocks are accessed in a well-nested manner, i.e, an execution can onlyrelease the latest lock it acquired that is not released yet.

Theorem

Single-indexed CARET model-checking for L-DPNs with nested Lockaccess can be reduced to single-indexed CARET model-checking for DPNs

CARET analysis of multithreaded programs 40 / 42

Page 79: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

DPNs communicating via Locks (L-DPNs)

L-DPNs

a L-DPN is a DPN where pushdown processes communicate via locks.

Nested Lock Access

a L-DPNs with Nested Lock Access: is a L-DPN s.t. in all executions, thelocks are accessed in a well-nested manner, i.e, an execution can onlyrelease the latest lock it acquired that is not released yet.

Theorem

Single-indexed CARET model-checking for L-DPNs with nested Lockaccess can be reduced to single-indexed CARET model-checking for DPNs

CARET analysis of multithreaded programs 40 / 42

Page 80: CARET analysis of multithreaded programsallow us to analyse the behaviors (not the syntax) of the program without executing it CARET analysis of multithreaded programs 2/42. Motivation

Q & A

Thank you for your listening!

CARET analysis of multithreaded programs 41 / 42