apis y seguridad

133
Enlighten your soſtware ¿API primero? Seguridad primero: lo que necesitas saber para crear APIs seguras Fernando Perales

Upload: software-guru

Post on 05-Aug-2015

297 views

Category:

Software


0 download

TRANSCRIPT

Page 1: APIs y seguridad

Enlighten your software

¿API primero? Seguridad primero: lo que necesitas saber para crear APIs seguras

Fernando Perales

Page 2: APIs y seguridad

<me>

Page 3: APIs y seguridad

Fernando Perales

Software Engineer @ Crowd InteractiveFLOSS Advocate

/(.*) metal and 🍺 lover/Passionate about web development and lean

startup

Page 4: APIs y seguridad

FerPeralesM

Page 5: APIs y seguridad

FerPerales

Page 6: APIs y seguridad

</me>

Page 7: APIs y seguridad

Why an API?

Page 8: APIs y seguridad

http://www.apiacademy.co/sites/default/files/Web-APIs-v5_0.png

Page 9: APIs y seguridad

API first

Page 10: APIs y seguridad

When to not API first

Page 11: APIs y seguridad

Extracted from

monolithic

Page 12: APIs y seguridad

Goingmobile

Page 13: APIs y seguridad

PublicAPI

Page 14: APIs y seguridad

Decisions

Page 15: APIs y seguridad

Technology

Page 16: APIs y seguridad

SOAP vs REST

Page 17: APIs y seguridad

XML vs JSON

Page 18: APIs y seguridad

Let's gofor...

Page 19: APIs y seguridad

REST +JSON

Page 20: APIs y seguridad

REST

Page 21: APIs y seguridad

Roy Fielding

Page 22: APIs y seguridad

“REST's client–server separation of concerns simplifies component

implementation, reduces the complexity of connector semantics, improves the

effectiveness of performance tuning, and increases the scalability of pure server

components.”

Page 23: APIs y seguridad

Architectural constraints

Page 24: APIs y seguridad

Client-server

Page 25: APIs y seguridad

https://en.wikipedia.org/wiki/Client%E2%80%93server_model#/media/File:Client-server-model.svg

Page 26: APIs y seguridad

Stateless

Page 27: APIs y seguridad

Cacheable

Page 28: APIs y seguridad

Layered system

Page 29: APIs y seguridad

Code on demand

(optional)

Page 30: APIs y seguridad

Uniform interface

Page 31: APIs y seguridad
Page 32: APIs y seguridad
Page 33: APIs y seguridad

REST is an architectural style, not an standard

Page 34: APIs y seguridad

Considerations for APIs

(and pretty much, every system)

Page 35: APIs y seguridad

Correctness

Page 36: APIs y seguridad

Performance

Page 37: APIs y seguridad

Reliability

Page 38: APIs y seguridad

Robustness

Page 39: APIs y seguridad

Scalability

Page 40: APIs y seguridad

Security

Page 41: APIs y seguridad

Security

Page 42: APIs y seguridad

Security

Page 43: APIs y seguridad
Page 44: APIs y seguridad
Page 45: APIs y seguridad
Page 46: APIs y seguridad
Page 47: APIs y seguridad
Page 48: APIs y seguridad

Why shouldI care?

Page 49: APIs y seguridad

Commonmisperceptions

Page 50: APIs y seguridad

I'm nota big company

Page 51: APIs y seguridad

Nobody willcare about my

data

Page 52: APIs y seguridad

My API is notpublic

Page 53: APIs y seguridad

I didn'tknow

Page 54: APIs y seguridad

Ignorantia juris non excusat

Page 55: APIs y seguridad

owasp.org

Page 56: APIs y seguridad

Let'sstart

Page 57: APIs y seguridad

Know what you arefighting

Page 58: APIs y seguridad

http://fc04.deviantart.net/fs71/i/2013/107/9/5/it_s_dangerous_to_go_alone_by_michaelmayne-d621qgq.png

Page 59: APIs y seguridad

OWASP WASC Web Hacking Incidents Database Project

Page 60: APIs y seguridad
Page 61: APIs y seguridad
Page 62: APIs y seguridad
Page 63: APIs y seguridad
Page 64: APIs y seguridad

Denial of Service

Page 65: APIs y seguridad

An attempt to make a machine or network resource

unavailable to its intended users.

https://en.wikipedia.org/wiki/Denial-of-service_attack

Page 66: APIs y seguridad
Page 67: APIs y seguridad

Can be from malicious

users

Page 68: APIs y seguridad

Or legit users trying to take advantage

Page 69: APIs y seguridad
Page 70: APIs y seguridad

How to dealWith?

Page 71: APIs y seguridad

Throttle / limitrequest

Page 72: APIs y seguridad
Page 73: APIs y seguridad

Rack::Attack

Page 74: APIs y seguridad

kickstarter/rack-attack

Page 75: APIs y seguridad
Page 76: APIs y seguridad
Page 77: APIs y seguridad

Return: HTTP code 429

Page 78: APIs y seguridad
Page 79: APIs y seguridad

How to test?

Page 80: APIs y seguridad

Apache Benchmark

Page 81: APIs y seguridad

httpd.apache.org/docs/2.2/programs/ab.html

Page 82: APIs y seguridad

ab -c 5 -n 100 http://127.0.0.1:3000/login

Page 83: APIs y seguridad

SQLinjections

Page 84: APIs y seguridad

SQL injection is a code injection technique, used to attack data-

driven applications, in which malicious SQL statements are inserted into an entry field for

execution

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

Page 85: APIs y seguridad

http://example.com/api/v1/user/123

Page 86: APIs y seguridad

“SELECT * FROM users WHERE userID='”

+ user_id +”‘”;

Page 87: APIs y seguridad

“SELECT * FROM users WHERE usetID =

‘123’”

Page 88: APIs y seguridad

Consider this:

Page 89: APIs y seguridad

http://example.com/api/v1/user/’%20or

%20’1’=’1

Page 90: APIs y seguridad

SELECT * FROM users WHERE

userID = ‘’ or ‘1’ = ‘1’

Page 91: APIs y seguridad

PredictableResourcelocation

Page 92: APIs y seguridad

An attack technique used to uncover hidden web site content and

functionality. By making educated guesses, the attack is a brute force

search looking for content that is not intended for public viewing.

http://www.infosecpro.com/applicationsecurity/a54.htm

Page 93: APIs y seguridad

example.com/v1/users/1

Page 94: APIs y seguridad

example.com/v1/users/1

Page 95: APIs y seguridad

UUID

Page 96: APIs y seguridad

example.com/v1/users/1

Page 97: APIs y seguridad

example.com/v1/users/de305d54-75b4-431b-adb2-eb6b9e546014

Page 98: APIs y seguridad

Who doesthis?

Page 99: APIs y seguridad
Page 100: APIs y seguridad

Charges:ch_16KD5K2eZvKYlo2

Cm5vtG9HJ

Page 101: APIs y seguridad

Cards:card_16KD5F2eZvKYlo

2CzRqSKsIR

Page 102: APIs y seguridad

Transactions:txn_16Hn2s2eZvKYlo2

CSKkdbSPq

Page 103: APIs y seguridad

Unintendeddisclosure ofinformation

Page 104: APIs y seguridad

Letting unauthorized users to access information they shouldn't

Page 105: APIs y seguridad

It has happened to

Page 106: APIs y seguridad

me �

Page 107: APIs y seguridad

and many others

Page 108: APIs y seguridad

How to dealwith this?

Page 109: APIs y seguridad

Apply authentication to your API as

well

Page 110: APIs y seguridad

And respond with the minimal

information needed

Page 111: APIs y seguridad

Protip:

Page 112: APIs y seguridad

API interactionsfrom client to

server are still user input

Page 113: APIs y seguridad

This happened

to

Page 114: APIs y seguridad
Page 115: APIs y seguridad

Several times...

Page 116: APIs y seguridad
Page 117: APIs y seguridad

NOTE: Does not work anymore

Page 118: APIs y seguridad
Page 119: APIs y seguridad

Meet Charles

Page 120: APIs y seguridad
Page 121: APIs y seguridad
Page 122: APIs y seguridad

Charles can be used as a man-in-the-middle HTTPS proxy, enabling

you to view in plain text the communication between web browser and SSL web server.

Page 123: APIs y seguridad

Page 124: APIs y seguridad
Page 125: APIs y seguridad

(._. U)

Page 126: APIs y seguridad

Wrapping up

Page 127: APIs y seguridad

Requirements

Page 128: APIs y seguridad

Knowledge

Page 129: APIs y seguridad

Prevention

Page 130: APIs y seguridad

Monitoring

Page 131: APIs y seguridad

Awareness

Page 132: APIs y seguridad

Questions?

Page 133: APIs y seguridad

Thanks! [email protected]

FerPeralesM