80
Compression Oracle Attacks on VPN Networks Nafeez Defcon 26

Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Compression Oracle Attacks on VPN

NetworksNafeez

Defcon 26

Page 2: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

About

Nafeez - @sketpic_fx

Interested in AppSec and writing software

Maker @ assetwatch.io, Attacker Surface Discovery as a Service

Page 3: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

OverviewCompression Side Channel and Encryption

History of attacks

VPNs and how they use compression

Demo - Voracle Tool

How to find if your "VPN" is vulnerable

Way forward

Page 4: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Data CompressionLZ77

Replace redundant patterns

102 CharactersEverything looked dark and bleak, everything looked gloomy, and everything was under

a blanket of mist

89 CharactersEverything looked dark and bleak, (-34,18)gloomy, and (-54,11)was under a blanket of mist

Page 5: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Data CompressionHuffman Coding

Replace frequent bytes with shorter codes

https://en.wikipedia.org/wiki/Huffman_coding

Page 6: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Data Compression

DEFLATE - LZ77 + Huffman Coding

ZLIB, GZIP are well known DEFLATE libraries

Page 7: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Compression Side Channel

First known research in 2002

Page 8: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

The Side Channel

Length of encrypted payloads

Page 9: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Compression Oracle

Chosen Plain Text Attack

Brute force the secret byte by byte

Force a compression between the chosen byte and the existing bytes in the secret

Page 10: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Compression Oracle

Cookie: secret=637193 -some-data- Cookie: secret=1

Cookie: secret=637193 -some-data- (-34,15)1

Encrypted Payload Length = 43

Page 11: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Compression Oracle

Cookie: secret=637193 -some-data- Cookie: secret=2

Cookie: secret=637193 -some-data- (-34,15)2

Encrypted Payload Length = 43

Page 12: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Compression Oracle

Cookie: secret=637193 -some-data- Cookie: secret=3

Cookie: secret=637193 -some-data- (-34,15)3

Encrypted Payload Length = 43

Page 13: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Compression Oracle

Cookie: secret=637193 -some-data- Cookie: secret=4

Cookie: secret=637193 -some-data- (-34,15)4

Encrypted Payload Length = 43

Page 14: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Compression Oracle

Cookie: secret=637193 -some-data- Cookie: secret=5

Cookie: secret=637193 -some-data- (-34,15)5

Encrypted Payload Length = 43

Page 15: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Compression Oracle

Cookie: secret=637193 -some-data- Cookie: secret=6

Cookie: secret=637193 -some-data- (-34,16)

Encrypted Payload Length = 42

Page 16: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

How can we convert this into an attack using

browsers?

Page 17: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

EkoParty 2012

Back in 2012

Page 18: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Ingredients

Attacker on the data path can sniff packet length

Browser attaches cookies as part of any cross-domain request

Attacker controls HTTP request body

Page 19: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

You get!

Chosen Plain Text attack using browsers

Page 20: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

TIME Attack 2013 Tal Be'ery, Amichai Shulman

Breachattack.com

Timing side channel purely via browsers

Extending CRIME to HTTP Responses

Page 21: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

BREACH Attack 2013 Angelo Prado, Neal Harris, Yoel Gluck

BreachAttack.com

Page 22: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

So far

CRIME style attacks have been mostly targeted on HTTPS

Researchers have possibly explored all possible side channels to efficiently leak sensitive data

Page 23: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Lets talk VPNs

TLS VPNS

IPSEC

L2TP/ PPTP

Page 24: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

TLS VPNs are pretty common these days

Page 25: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked
Page 26: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

What do most of these SaaS VPNs have in

common?

Page 27: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked
Page 28: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Compression

Page 29: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Almost all VPNs support compression by default

Page 30: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

OpenVPN Client Configuration (*.OVPN)

Page 31: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

OpenVPN Compression Algorithms

LZO

LZ4

-LZ77 Family-

Page 32: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

High level overview

Authentication & Key Negotiation (Control Channel)

Data Channel Encryption

Page 33: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

High level overview

Authentication & Key Negotiation (Control Channel)

Data Channel Compression

Data Channel Encryption

Page 34: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Compress everything

UDP

TCP

Bi-Directional

Page 35: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

We have a compress then encrypt on all of data channel

Page 36: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

CRIME + BREACH on VPN Networks

Page 37: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Existing TLS channel are safe

Page 38: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Things are safe, if the underlying app layer already uses HTTPS / TLS.

Page 39: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Things might go bad, if the VPN is helping you to encrypt

already encrypted data

Page 40: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Lets see how this attack works on an HTTP website using an encrypted VPN

Page 41: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Given a HTTP Website through VPN, Can we leak Sensitive Cookie Data from a

Cross-Domain Website?

Page 42: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Ingredients

• VPN Server and Client has compression turned on by default

• VPN User using a vulnerable browser

• Visits attacker controlled website

Page 43: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Vulnerable Browser?

Yes, the browser plays a huge role in how it sends plain HTTP requests.

Page 44: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Browser needs to send HTTP requests in single TCP Data Packet

Page 45: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Google Chrome splits HTTP packets into Header and Body

So we can't get the compression window in the same request

Page 46: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Mozilla Firefox sends them all in a single TCP data packet

Now we get the compression window in the same request

Page 47: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Attack Setup

VPN User

Page 48: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Attack Setup

VPN User

Vulnerable Browser

Page 49: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Attack Setup

VPN User

Vulnerable Browser

HTTP WebApp

Page 50: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Attack Setup

VPN User

Vulnerable Browser

HTTP WebApp

Trusted VPN with Compression

Page 51: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Attack Setup

VPN User

Vulnerable Browser

HTTP WebApp

Trusted VPN with Compression

Page 52: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Attack Setup

VPN User

Vulnerable Browser

HTTP WebApp

Trusted VPN with Compression

Attacker

Page 53: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Attack Setup

VPN User

Vulnerable Browser

HTTP WebApp

Trusted VPN with Compression

Attackerattacker.com

Page 54: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Attack Setup

VPN User

Vulnerable Browser

HTTP WebApp

Trusted VPN with Compression

Attackerattacker.com

Passive MITM

Page 55: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Attack Setup

VPN User

Vulnerable Browser

HTTP WebApp

Trusted VPN with Compression

Attackerattacker.com

Passive MITM

Injected Ads,Malicous Blogs,

etc.

Page 56: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Attack Setup

VPN User

Vulnerable Browser

HTTP WebApp

Trusted VPN with Compression

Attackerattacker.com

Passive MITM

Injected Ads,Malicous Blogs,

etc.

Can Observe VPN Data packet Lengths

Page 57: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Attack Setup

VPN User

Vulnerable Browser

HTTP WebApp

Trusted VPN with Compression

Attackerattacker.com

Passive MITM

Injected Ads,Malicous Blogs,

etc.

Can Observe VPN Data packet Lengths

Can Send Cross Domain requests to the HTTP WebApp

Page 58: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Attacker can now conduct CRIME Style attacks on HTTP requests and responses

Page 59: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Demo

Page 60: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Voracle

https://github.com/skepticfx/voracle

Page 61: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

How to tell if your VPN is vulnerable?

Page 62: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Ingredients

Wireshark

Terminal with Curl

Connected to your VPN under test

Observe VPN Payload Length

Page 63: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

curl -s -o /dev/null -X POST http://website.com -d "--some-data-- Secret=37346282; --blah-- Secret=1 Secret=1"

Length = x

Curl and Observe Length

Page 64: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

curl -s -o /dev/null -X POST http://website.com -d "--some-data-- Secret=37346282; --blah-- Secret=2 Secret=2"

Length = x

Curl and Observe Length

Page 65: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

curl -s -o /dev/null -X POST http://website.com -d "--some-data-- Secret=37346282; --blah-- Secret=3 Secret=3"

Length = x-1

Curl and Observe Length

Page 66: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

curl -s -o /dev/null -X POST http://website.com -d "--some-data-- Secret=37346282; --blah-- Secret=1 Secret=1"

Length = x

Curl and Observe Length

Page 67: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Fix?

Page 68: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Fixing Compression is an interesting problem

Page 69: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Selectively disable Compression - HPACK in HTTP2

Page 70: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Remember when SPDY was vulnerable to CRIME?

HPACK selectively disabled header compression for sensitive fields

Page 71: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

https://http2.github.io/http2-spec/compression.html

Page 72: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

For VPNs, Disable compression completely for any plain text transactions

Page 73: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Turning compression off by default is

opinionated.

Page 74: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

OpenVPN chose to warn the implementors more explicitly to turn off data

Compression.

Page 75: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

https://github.com/OpenVPN/openvpn/commit/a59fd147

Page 76: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

turned off compression entirely

Page 77: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Its time, everything moves to HTTPS

Page 78: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Takeaway

If you are using VPNs to access plain text websites over the internet, its time to move them to HTTPs.

Most corporates using VPN still allow plain text HTTP websites, because they think VPN protects them.

Page 79: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked

Thank you!

@skeptic_fx

Page 80: Compression Oracle Attacks on VPN Networks CON 26/DEF CON 26... · Data Compression LZ77 Replace redundant patterns 102 Characters Everything looked dark and bleak, everything looked