(No)SQL Timing Attacks for Data Retrieval

22
(no)SQL timing attacks PHDays IV, Moscow, 22/05/14 research

Transcript of (No)SQL Timing Attacks for Data Retrieval

Page 1: (No)SQL Timing Attacks for Data Retrieval

(no)SQL timing attacksPHDays IV, Moscow, 22/05/14

research

Page 2: (No)SQL Timing Attacks for Data Retrieval

Timing attacks basics

time to execution ofFunction(UserData,PrivateData)depends from UserData and PrivateData

this time can be use to determine PrivateData by UserData

Page 3: (No)SQL Timing Attacks for Data Retrieval

What isFunction(UserData,PrivateData)?

Basically - SELECT, but not only

no(SQL) timing attacks

Page 4: (No)SQL Timing Attacks for Data Retrieval

Timing attacks intro

execution time of search operation depends on:● search string● data on which searches for

attack concept is determine data by timings on different search strings

Page 5: (No)SQL Timing Attacks for Data Retrieval

Timing attacks intro

execution time of search operation depends on:● search string● data on which searches for

attack concept is determine data by timings on different search strings

Page 6: (No)SQL Timing Attacks for Data Retrieval

● BH-USA-07 “Timing Attacks for Recovering Private Entries From Database Engines”

● Attacking page split on update operation

https://www.blackhat.com/presentations/bh-usa-07/Waissbein_Futoransky_and_Saura/Whitepaper/bh-usa-07-waissbein_futoransky_and_saura-WP.pdf

Related work

Page 7: (No)SQL Timing Attacks for Data Retrieval

● Indexed data (CREATE INDEX …)● Non-indexed data (exhaustive search)

+ cache mechanism

SQL search basics

Page 8: (No)SQL Timing Attacks for Data Retrieval

● Cache does not prevent

timing attacks

● Cache remove disk

operations noises

Non-indexed data

● Really rare● Full list iterations● Strings comparation

Page 9: (No)SQL Timing Attacks for Data Retrieval

Data indexing mechanism● Hash● B-Tree (not binary tree) variations● GiST variations (GIN/GiST/SP-GIST)

+ cache mechanism

SQL search basics

Page 10: (No)SQL Timing Attacks for Data Retrieval

Database INDEX algo Hash type Cache

MySQL B-Tree (all storage angines)/HASH (only for memory/heap and NDB)

Fowler/Noll/Vo hash

+

Postgres B-Tree/GiST/GIN and SP-GiST (9.2+), HASH

? +

SQLite B+-Tree - +

SQL databases index overview

Page 11: (No)SQL Timing Attacks for Data Retrieval

Database INDEX algo Hash type Cache

memcache HASH Jenkins/murmur3 Really? )

redis HASH murmur2->SipHash -

mongodb HASH murmur3 +

noSQL databases index overview

Page 12: (No)SQL Timing Attacks for Data Retrieval

Hash performance

http://blog.teamleadnet.com/2012/08/murmurhash3-ultra-fast-hash-algorithm.html

Page 13: (No)SQL Timing Attacks for Data Retrieval

● Cache does not prevent

timing attacks

● Cache remove disk

operations noises

To cache or not to cache

Page 14: (No)SQL Timing Attacks for Data Retrieval

● Data from disk to memory

● Memory size can not afford to

store all data

● Attacker can do cache

warmup anytime

Cache warmup

Page 15: (No)SQL Timing Attacks for Data Retrieval

Cache warmup● Attacker can do cache

warmup anytime

Page 16: (No)SQL Timing Attacks for Data Retrieval

Hash table reconstructions● What we measured

Page 17: (No)SQL Timing Attacks for Data Retrieval

Hash table reconstructions● What we expected

Page 18: (No)SQL Timing Attacks for Data Retrieval

Hash table reconstructions● What we measured

N 2N

Page 19: (No)SQL Timing Attacks for Data Retrieval

Hash table reconstructions● 0x01020304

○ SESSION1

○ SESSION2

○ SESSION3

○ SESSION4

○ SESSION5

Page 20: (No)SQL Timing Attacks for Data Retrieval

PoC● Simple tool that can demonstrate timing

anomaly● Just PoC, not a framework● Framework soon ;)

https://github.com/wallarm/researches/blob/master/no-and-sqli-timing/timing.c

Page 21: (No)SQL Timing Attacks for Data Retrieval

Real case from a wild● Session entropy reduction● Formatted logins checks (user-<N>)● Passwords hash reduction. Fill the difference:

○ SELECT id,role,password FROM users WHERE login=...○ SELECT id,role FROM users WHERE login=... AND

password=...● ...

Page 22: (No)SQL Timing Attacks for Data Retrieval

The endContacts:

@wallarm, @d0znpp

http://github.com/wallarm

research