Top Banner
HTTP Encrypted Information can be Stolen through TCP-windows by Mathy Vanhoef & Tom Van Goethem
53

HEIST: HTTP encrypted information can be stolen through TCP windows

Jan 20, 2017

Download

Technology

Priyanka Aash
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: HEIST: HTTP encrypted information can be stolen through TCP windows

HTTP!Encrypted!Information can be!Stolen through!TCP-windows

by!

Mathy Vanhoef & Tom Van Goethem

Page 2: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

Agenda• Technical background!

• Same-Origin Policy!

• Compression-based attacks!

• SSL/TLS & TCP!

• Nitty gritty HEIST details!

• Demo!

• Countermeasures

2

Page 3: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

Same-Origin Policy

3

Mr. Sniffleshttps://bunnehbank.com

GET /vault

Page 4: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

Same-Origin Policy

3

Mr. Sniffleshttps://bunnehbank.com

GET /vault

Page 5: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T 4

the World Wide Web

Mr. Sniffles https://bunnehbank.com

Page 6: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T 4

the World Wide Web

Mr. Sniffles https://bunnehbank.com

Page 7: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T 4

the World Wide Web

Mr. Sniffles https://bunnehbank.com

GET /vault

Page 8: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T 4

the World Wide Web

Mr. Sniffles https://bunnehbank.com

GET /vault

Page 9: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T 4

the World Wide Web

Mr. Sniffles https://bunnehbank.com

GET /vault

Page 10: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T 4

the World Wide Web

Mr. Sniffles https://bunnehbank.com

GET /vault

Page 11: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

the World Wide Web

Mr. Sniffles https://bunnehbank.com

GET /vault

5

Page 12: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T 6

the World Wide Web

Mr. Sniffles https://bunnehbank.com

GET /vault

Page 13: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

Agenda• Technical background!

• Same-Origin Policy!

• Compression-based attacks!

• SSL/TLS & TCP!

• Nitty gritty HEIST details!

• Demo!

• Countermeasures

7

Page 14: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

You requested: /vault

_secret=carrots4life

8

/vault

Uncompressed Compressed

You requested: /vault

vault_secret=carrots4life

→ 51 bytes → 47 bytes

Page 15: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

You requested: /vault?secret=c

_ arrots4life

9

/vault?secret=a

→ 49 bytes

You requested: /vault?secret=a

_ carrots4life

→ 50 bytes

/vault?secret=c

Page 16: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

You requested: /vault?secret=c

_ arrots4life

10

/vault?secret=a

→ 49 bytes

You requested: /vault?secret=a

_ carrots4life

→ 50 bytes

/vault?secret=c

49 bytes < 50 bytes → 'c' is a correct guess

Page 17: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

You requested: /vault?secret=cb

_ arrots4life

11

/vault?secret=ca

→ 50 bytes

You requested: /vault?secret=ca

_ rrots4life

→ 49 bytes

/vault?secret=cb

Page 18: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

You requested: /vault?secret=cb

_ arrots4life

12

/vault?secret=ca

→ 50 bytes

You requested: /vault?secret=ca

_ rrots4life

→ 49 bytes

/vault?secret=cb

49 bytes < 50 bytes → 'ca' is a correct guess

Page 19: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

Compression-based Attacks• Compression and Information Leakage of Plaintext [FSE'02]!

• Chosen plaintext + compression = plaintext leakage!

• Phonotactic Reconstruction of Encrypted VoIP Conversations [S&P'11]!• Packet length + bitrate encoding !

• CRIME [ekoparty'12]!• Exploits SSL compression!

• BREACH [Black Hat USA'13]!• Exploits HTTP compression

13

Page 20: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

Agenda• Technical background!

• Same-Origin Policy!

• Compression-based attacks!

• SSL/TLS & TCP!

• Nitty gritty HEIST details!

• Demo!

• Countermeasures

14

Page 21: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T 15

GET /vault

SYN

SYN, ACK

ACK

Client Hello

Server Hello

Pre-Master Secret

TCP handshake

SSL handshake

Page 22: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T 16

GET /vault

encrypt( GET /vault HTTP/1.1 Cookie: user=mr.sniffles! Host: bunnehbank.com! ....)

1 TCP data packet

Page 23: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T 17

encrypt( ) = 19 TCP data packets

Page 24: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T 18

encrypt( ) = 19 TCP data packets

TCP packet 1TCP packet 2

TCP packet 10...

initcwnd = 10

Page 25: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

TCP Slow-start• Not all TCP packets are sent at once!

• TCP packets are sent in congestion windows!• Congestion windows determine the amount of TCP packets that can be sent!

• Starts with the initial congestion window, initcwnd, typically set to 10!

• When the packets of the first congestion window are ACK'd, the next congestion window is sent!• Size of the next congestion window is doubled

19

Page 26: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T 20

encrypt( ) = 19 TCP data packets

TCP packet 1TCP packet 2

TCP packet 10...

ACK

TCP packet 11...

TCP packet 19

initcwnd = 10

Page 27: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

HEIST• A set of techniques that allow attacker to determine the

exact size of a network response!

• ... purely in the browser!

• Leverages browser side-channels!

• Can be used to perform compression-based attacks, such as CRIME and BREACH, in the browser

21

Page 28: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

Browser Side-channels

• Send authenticated request to /vault resource!

• Returns a Promise, which resolves as soon as browser receives the first byte of the response

22

• Returns time when response was completely downloaded

fetch('https://bunnehbank.com/vault', {mode: "no-cors", credentials:"include"})

performance.getEntries()[-1].responseEnd

Page 29: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

HEIST

• Step 1: find out if response fits in a single TCP window

23

Page 30: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T 24

time

fetch('...')

TCP handshake complete

SSL handshake complete

GET /vault

initial TCPwindow sent

first byte received

Promiseresolves

initial TCPwindow received

responseEnd

T1 T2

Page 31: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T 25

time

fetch('...')

TCP handshake complete

SSL handshake complete

GET /vault

initial TCPwindow sent

first byte received

Promiseresolves

initial TCPwindow received

ACK sent

second TCPwindow sent

second TCPwindow received

responseEnd

T1 T2

Page 32: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

HEIST

• Step 1: find out if response fits in a single TCP window!

• Step 2: discover exact response size

26

Page 33: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

Discover Exact Response Size

27

initcwnd second TCP window

Resource size: ?? bytes Reflected content: x bytes

Page 34: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

Discover Exact Response Size

28

initcwnd second TCP window

Resource size: ?? bytes Reflected content: x/2 bytes

Page 35: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

Discover Exact Response Size

29

initcwnd second TCP window

Resource size: ?? bytes Reflected content: x/4 bytes

Page 36: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

Discover Exact Response Size

30

initcwnd second TCP window

Resource size: ?? bytes Reflected content: x/4+x/8 bytes

Page 37: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T 31

initcwnd second TCP window

Resource size: ?? bytes Reflected content: y bytes

After log(n) checks, we find:! y bytes of reflected content = 1 TCP window!! y+1 bytes of reflected content = 2 TCP windows → resource size = initcwnd - y bytes

Page 38: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

HEIST

• Step 1: find out if response fits in a single TCP window!

• Step 2: discover exact response size!

• Step 3: do the same for large responses ( > initcwnd)

32

Page 39: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

Determine size of large responses• initcwnd is typically set to 10 TCP packets!

• ~14kB!

• TCP windows grow as packets are acknowledged!• Second TCP window is 20 TCP packets, third is 40, ...!

• We can arbitrarily increase window size!• Send request to resource of known size!• After response is in, send request to target resource, repeat step 2

33

Page 40: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T 34

CWND = 10GET /foo

10 TCP packets

ACKCWND = 20GET /vault

= 19 TCP data packets

19 TCP packets

ACK sent in single TCP window

Page 41: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

HEIST

• Step 1: find out if response fits in a single TCP window!

• Step 2: discover exact response size!

• Step 3: do the same for large responses ( > initcwnd)!

• Step 4: if available, leverage HTTP/2

35

Page 42: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

Leveraging HTTP/2• HTTP/2 is the new HTTP version!

• Preserves the semantics of HTTP!

• Main changes are on the network level!• Only a single TCP connection is used for parallel requests!

• Headers are compressed using HPACK!• Client and server build same lookup table!• Header is now just a reference to an entry in the table!• Mitigates CRIME

36

Page 43: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

Leveraging HTTP/2• HTTP/2 allows us to determine exact response size without

needing reflected content in the same response!• Only a single TCP connection is used for parallel requests!

• Use (reflected) content in other responses on the same server!• Note that BREACH still requires reflective content in the same resource!

• Response size can still be used to leak sensitive data (see examples later)

37

Page 44: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T 38

CWND = 10GET /reflect?x=[1 TCP packet]

GET /vault

= 6 TCP packets

/reflect = 2 TCP packets + reflected

contains both/reflect

and /vault

9 TCP packets

ACKresponseEnd

Promiseresolves

Page 45: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T 39

CWND = 10GET /reflect?x=[3 TCP packet]

1 TCP packet

GET /vault

= 6 TCP packets

ACK

/reflect = 2 TCP packets + reflected

contains both/reflect and

part of /vault

CWND = 20

10 TCP packets

ACK

responseEnd

Promiseresolves

Page 46: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

HEIST• Step 1: find out if response fits in a single TCP window!

• Step 2: discover exact response size!

• Step 3: do the same for large responses ( > initcwnd)!

• Step 4: if available, leverage HTTP/2!

• Step 5: exploit & profit

40

Page 47: HEIST: HTTP encrypted information can be stolen through TCP windows
Page 48: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

Exploit & profit

• Use HEIST to exploit BREACH/CRIME!• Extract CSRF tokens, private message content, ...!

• Only 2 requirements: gzip/SSL compression + reflected content!

• Obtain sensitive content from web services!• Response size is related to user (victim) state

42

Page 49: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

DEMO

43

Page 50: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

Other targets• Compression-based attacks!

• gzip compression is used by virtually every website!

• Size-exposing attacks!• Uncover victim's demographics from popular social networks!

• Reveal victim's health conditions from online health websites!

• Disclose victim's financial information!

• Hard to find sites that are not vulnerable

44

Page 51: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

Countermeasures• Browser layer!

• Prevent side-channel leak (infeasible)!

• Disable third-party cookies (complete)!

• HTTP layer!• Block illicit requests (inadequate)!

• Disable compression (incomplete)!

• Network layer!• Randomize TCP congestion window (inadequate)!

• Apply random padding (inadequate)

45

Page 52: HEIST: HTTP encrypted information can be stolen through TCP windows

H E I S T

Conclusion• Collection of techniques to discover network response size

in the browser, for all authenticated cross-origin resources!

• Exploits the subtle interplay of browser and network layer !

• HTTP/2 makes exploitation easier!

• Allows for compression-based and size-exposing attacks!

• Many countermeasures, few that actually work

46

Page 53: HEIST: HTTP encrypted information can be stolen through TCP windows

Questions?

Mathy Vanhoef!@vanhoefm!

[email protected]

Tom Van Goethem!@tomvangoethem!

[email protected]

H E I S T