31
Unusual security vulnerabilities Yuriy Bilyk

Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

Embed Size (px)

Citation preview

Page 1: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

Unusual security vulnerabilities

Yuriy Bilyk

Page 2: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

Agenda

RegExp

Cryptography

Page 3: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

RegExp? It’s simple!

e-m ail va lidation RegExp

e-mail validation RegExp

Page 4: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

Not sure if Chinese

or Egyptian

Page 5: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

Problems

RegExp DoS attacks

Issues in RegExp engine

Page 6: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

RegExp: ^(([a-z])+.)+[A-Z]([a-z])+$

Input data: aaaaaaaaaaaaaaaa…aa

45

40

30

20

CHARS

0.003

TIME

0.339

41

466

RegExp DoS attacks

Page 7: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

For the input aaaaX there are 16 possible paths in the above graph.

But for aaaaaaaaaaaaaaaaX there are 65536 possible paths

RegExp: ^(a+)+$  

Where is the problem?

a

a2 51 4

3

a a

aa

aa

Page 8: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

Broken engine

Page 9: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

• OpenID like auth, but we trust only local host

• EXT HOST send AUTENICATED, if OK

• We can set EXT HOST URL

• RegExp to check RESPOND: /[^\

w]AUTHENTICATED[^\w]*$/

RegExp Engine Issues Example

Page 10: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

OpenID example

TO EXTERNAL HOST->login:pass

AUTHENTICATED

LOCAL EXTERNAL HOST

1

2

Page 11: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

Movie time

Page 12: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

Double Request

http://192.168.22.129/?pingback= -> http://192.168.22.129/?pingback=http://192.168.130

TO EXTERNAL HOST->login:pass

!AUTHENTICATED!\n

TO LOCAL HOST->login:pass

1

2

3

Page 13: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

RegExp attack (Step 1)

http://192.168.130 responded with: !AUTHENTICATED!\n

RegExp body =~ /[^\w]AUTHENTICATED[^\w]*$/ PASSED

2

http://192.168.22.129/?pingback= -> http://192.168.22.129/?pingback=http://192.168.130

!AUTHENTICATED!\n

Page 14: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

RegExp attack (Step 2)

http://192.168.22.129/?pingback=http://192.168.130 responded with:

blablabla !AUTHENTICATED!\n … blabla\n!AUTHENTICATED!\n

TO LOCAL HOST->login:pass3

http://192.168.22.129/?pingback= -> http://192.168.22.129/?pingback=http://192.168.130

RegExp body =~ /[^\w]AUTHENTICATED[^\w]*$/ PASSED AGAIN

Page 15: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

RegExp attack (Final Step)

[Problem is]: body =~ /[^\w]AUTHENTICATED[^\w]*$/

• Normal RegExp engine stop after first line ($ - EOL):blablabla !AUTHENTICATED!\n … blabla

• Ruby interpreter $ as just EOL character, but scans next lines in the “file”

http://192.168.22.129/?pingback=http://192.168.130 responded with:

blablabla !AUTHENTICATED!\n … blabla\n!AUTHENTICATED!\n

Page 16: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

• ReDoS Static Analysis – RXXR

– http://www.cs.bham.ac.uk/~hxt/research/rxxr.shtml

• Issues – know features of platform/language

How to mitigate

Page 17: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

Cryptography in God we trust

the rest we test

Page 18: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

Cryptography is cool

Bitcoin – distributed cryptocurrency

Kryptos - encrypted sculpture. One of the most famous unsolved codes in the world

Crypto is widely used – wireless (WiFi,GSM,RFID etc.), banking, games (X-Box, PS3 etc.), e-mail anti-spam (DKIM)

Page 19: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

I changed all my passwords to "incorrect", So whenever I forget, It will tell me "Your password is incorrect."

some ideas need audit

Page 20: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

Wrong usage is bad

Using hash algorithms as crypto, and weak or custom realizations of crypto algorithms

Neutralization all advantages of crypto through user comfort

The believe, that crypto will secure you by itself

Low level of understanding, why you need crypto

Page 21: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

• User can send points to other user

• All URL options/values signed by secret key

• All transactions are visible to all

SHA Length Extension Example

Page 22: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

SHA: Message sign (MAC)

http://...?to_user=guest&points=200|sign:675fsdg87gs3vh

MSG

Block 1 Block 2 Block N

HASH

KEY

+

Page 23: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

SHA Padding: Theory (Hash BOX)KEY

MESSAGE

NULL Bytes Padding

MESSAGE+KEY Length

Just 1 Bit

Page 24: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

SHA: Length extension attack

MSG

Block 1 Block 2 Block N

http://...?to_user=guest&points=200 &<PADDING>to_user=hacker|sign:f97h23n483a2ce

PADDING +DATA

HASH

+

KEY

Page 25: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

SHA Padding: Theory (Attack)

KEY Original MSG

NULL Bytes Padding

MESSAGE Length

BOX 1 BOX 2Extended Part

Page 26: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

Where is the problem?

HASH (KEY+MSG) is BAD - extension attack is possible

HASH (MSG+KEY) is GOOD - extension attack is impossible

Page 27: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

Order is important

Page 28: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

• Use HMAC for signing• Use SHA-256 etc• Don’t create own crypto (only if you are

not a genius in mathematic, but even you’re don’t do it!)

How to mitigate

Page 29: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

Kryptography is kind of art

Page 30: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

Review

• RegExp is powerful tool:–Even for DoS–Some engines work not as expected

• Cryptography isn’t safe by itself:–Use industry standards–Understand how crypto is working–Make sure that your

implementation/improvement isn’t broken

Page 31: Security Hole #11 - Unusual security vulnerabilities - Yuriy Bilyk

Questions?