Você está na página 1de 17

www.gfi.

es
Seguridad en tus APIs
Soluciones a problemas habituales
Contenido
APIs, el futuro de la Web
Servicios REST
Seguridad REST
OAUTH 2.0
Cmo hacerlo?
A tener en cuenta
Servicios GFI

2 26/08/2014 Seguridad en tus APIs
APIs, el futuro de la Web

> Un API define unas funciones (iniciar sesin, ver a tus amigos y escribir comentarios,
por ejemplo) y sirve para usarse internamente o para permitir que la usen otros.
> Las APIs abren una parte de la tecnologa de una compaa para que pueda ser
utilizada por terceros en el desarrollo de nuevos productos










> Esta cadena de valor, las mejoras que terceros consiguen y la movilidad, hacen que sea
prcticamente obligatorio exponer APIs para las grandes empresas.
> Tecnologas sin estado, menos pesadas hacen que Arquitecturas SOAP vayan dejando
paso a Arquitecturas REST para la implantacin de estas APIs
3 26/08/2014 Seguridad en tus APIs
C
a
d
e
n
a

d
e

v
a
l
o
r

Integrador de
aplicaciones
Proveedor del
servicio
Consumidor
Nuevo canal de relacin y venta
Posicionamiento de marca
Integracin rpida con 3
Movilizacin rpida de servicios
Satisfaccin del consumidor
Ingresos por porcentaje de
ventas
Ingresos por publicidad
Ingresos por descargas
Servicio movilizado
Servicio personalizado
Reconocimiento de marca

APIs, el futuro de la Web
4 26/08/2014 Seguridad en tus APIs
Los gobiernos y administraciones ofrecen APIs de
tipo Open Government con informacin de la
gestin pblica y estadsticas.
En Espaa algunas CCAA ya ofrecen estos servicios
mucho antes de la elaboracin del primer borrador de
inminente Ley de Transparencia
El nmero de
funcionalidades en
forma de APIs en el
sector turstico es
igual de abrumador
que el nmero de aplicaciones mviles
disponibles en las stores: seguimiento
de vuelos, booking, comparadores,
planificadores, guas, bases de datos de
hoteles, brokering, checking, crticas y
recomendaciones...
Los operadores de logstica abrieron sus servicios
paralelamente a la explosin del comercio electrnico.
Todos ofrecen APIs de seguimiento de envos, validacin
de direcciones e incluso estimacin de precios de tasas e
impuestos para envos internacionales.
En banca hay
movimientos
incipientes para
ofrecer APIs bsicos
para gestin de
servicios esenciales
como cuentas y tarjetas, por ahora
restringidos a la consulta de posicin
global, saldo y movimientos.
Las operadoras
de telco estn
abriendo los
servicios de sus
redes de
telefona para mensajera y
localizacin principalmente.
Algunas operadoras
proporcionan un servicio de
pagos que se adjuntan a la
factura mensual del contrato
del cliente.
El sector inmobiliario
ofrece sus productos ms
all de los portales
especializados, ahora como
APIs pblicos.
Los retailers abren al
pblico sus catlogos de
productos, directorios y
ofertas. Alrededor del
eCommerce surgen APIs
para pagos, recomendaciones, fidelizacin,
crticas, comparadores, subastas y
publicidad.
Las grandes empresas de internet como
Google, facebook, Twitter, LinkeIn y
dems ofrecen todo tipo de APIs para
convertir en social cualquier
experiencia en la web.
Servicios REST
> REST es un estilo de arquitectura que abstrae los elementos de dicha arquitectura
dentro de un sistema hypermedia distribuido
> Principios Bsicos:
Arquitectura cliente-servidor
Utiliza los mtodos HTTP de manera explcita
No mantiene estado pero si cacheable
Interfaz uniforme. Expone URIs con forma de directorios
Transfiere XML, JavaScript Object Notation (JSON), o ambos

> Sus beneficios se ajustan para la creacin de APIs
Flexible en cuanto a formato
Facilita integracin
Total desacoplamiento
Ligeros
> No todo son ventajas
Seguridad ( WS-* y sin estado ) Seguridad personalizada!
Respuesta no estandar
Soporte HTTP como DELETE (peligroso)
5 26/08/2014 Seguridad en tus APIs
Seguridad REST
> Existen muchas recomendaciones sobre seguridad en servicios SOAP pero nada de
ello aplica directamente sobre REST
> Debido a este problema, cada desarrollador investiga una forma
> EL DILEMA

FUENTE: Blog Intel. http://blogs.intel.com/application-security/2012/05/11/enterprise-apis-and-oauth-have-it-all/
Autenticacin mutua SSL
Seguridad: Alta
Impacto: Muy alto
Gestin: Muy alto
Desarrollador: Odio mi vida
Resultado: No se usa y no da valor a la empresa

HTTP Bsico con SSL
Seguridad: Media-baja
Impacto: Alto
Gestin: Alto
Desarrollador: Realmente, hacemos esto?
Resultado: Sospechosa seguridad

OAuth
Seguridad: Media
Impacto: Media baja
Gestin: Media
Desarrollador: Amo mi trabajo. Es como
Facebook!
Resultado: Se usa rpidamente y evita impactos
con contraseas
Custom
Seguridad: Media-baja
Impacto: Media
Gestin: Medio-alto
Desarrollador: No es Oauth, pero por lo menos no
es X509
Resultado: Uso razonable, no estandard
6 26/08/2014 Seguridad en tus APIs
OAUTH 2.0. Bsico
> El marco de autorizacin OAuth 2.0 permite a aplicaciones de terceros solicitar acceso
limitado a un servicio HTTP. Basado en RFC6749 aprobado por IETF
> Evoluciona OAuth 1.0 y 1.0a, simplificndolo y centrado el foco en el cliente

> Roles:
Propietario del recurso. Entidad capaz de conceder acceso a un recurso protegido (usuario)
Servidor de recurso. Almacena los recursos protegidos
Cliente. Aplicacin que accede al recurso protegido
Servidor de Autorizacin. Servidor que emite Access token al cliente

> Funcionamiento Bsico:









Cliente
Servidor de
recurso
Servidor de
Autorizacin
1 Peticin de autorizacin
2 Concesin
3 Concesin
4 Access token
5 Access token
6 Acceso al recurso protegido
7 26/08/2014 Seguridad en tus APIs
OAUTH 2.0. Caractersticas
8 26/08/2014 Seguridad en tus APIs
> Cuando usarlo
Aplicaciones de terceros
Aplicaciones nativas
Aplicaciones mviles
> No es necesario en:
API solo son consumidas en entornos servidor-servidor (usar seguridad perimetral,
certificados, etc)
API siempre consumida desde la misma aplicacin

> Beneficios
No se comparten contraseas entre consumidores
No existen contraseas en almacenes de mviles
Minimiza o limita los impactos de seguridad
Perdida o robo de dispositivo mvil, el usuario puede revocar el acceso
Si el cliente es pirateado, el usuario puede revocar el acceso
Si el API es pirateada, el usuario puede cambiar su contrasea en el servidor de autorizaicn y/o revocar acceso

> A continuacin se explica como obtener el Access token, en diferentes escenarios
que contempla OAUTH2.0, en funcin del cliente y/o el entorno
> Habitualmente existe una fase de registro de clientes para su identificacin





OAUTH 2.0. Autorization Code
Cliente
Servidor de
Autorizacin
1 Identifica cliente y redirecciona
2 Autenticacin usuario
4 Credenciales cliente,
Cdigo Autorizacin, y URL

9 26/08/2014 Seguridad en tus APIs
> Un cdigo de autorizacin es obtenido del servidor de autorizacin y usado entre el
cliente y el usuario. En vez de solicitar acceso directamente, el cliente redirecciona al
usuario al Servidor de Autorizacin (mediante un Agente normalmente navegador)
> El usuario autentica y autoriza el acceso, obteniendo as el cdigo de autorizacin. Con
este cdigo se puede obtener el Access Token
> Este tipo de autorizacin tiene grandes beneficios y es el ms recomendado, ya que
nunca se comparte las credenciales con el cliente, pero requiere de la capacidad de
redireccin. Muy recomendado para Aplicaciones Web

Agente 2
3 Cdigo Autorizacin
3
1
5 Access token
OAUTH 2.0. Implicit

10 26/08/2014 Seguridad en tus APIs
> Este tipo de concesin simplifica el flujo de Authorization Code, ajustndose a
clientes implementados en un navegador tipo script. En esta caso el Access Token es
emitido directamente despus de la autenticacin.
> El cliente no es autenticado, debido a que no es confidencial, pero se puede validar la
redireccin de la URL y campos adicionales
> Debe usarse de forma cuidadosa, debido a que el Access Token es transmitido en la
URI, y por posibles manipulaciones de los campos de comprobacin.


Cliente
Servidor de
Autorizacin
1 Identifica cliente y redirecciona
2 Autenticacin usuario
User
Agent
2
7
1
Servidor con
script cliente
3 Redireccin con Access Token
6
OAUTH 2.0. Password
Cliente
Servidor de
Autorizacin
2 Credenciales usuario y cliente
3 Access token
> Resource Owner Password Credentials (Password), es un tipo de autorizacin que se
ajusta donde el propietario del recurso y el cliente tiene una relacin de confianza.
> Gracias a las credenciales del usuario y las claves del cliente se puede obtener un
Access token
> Es peligroso porque las credenciales pasan por el cliente (podra hacer con ellas lo que
quisiera)
> Debera ser usado en clientes de absoluta confianza (gestionados por el propio
proveedor). Aunque a veces se usa a veces en mviles (peligroso, aunque los grandes
distribuidores de software dan cierta confianza Google Play o Apple Store), mejor usar
el escenario Autorization code

11 26/08/2014 Seguridad en tus APIs
OAUTH 2.0. Client Credentials
Cliente
Servidor de
Autorizacin
1 Credenciales cliente
2 Access token
> Client credentials, es un tipo de autorizacin que se ajusta en clientes de absoluta
confianza (aplicaciones internas o externas pero confidenciales, propia aplicacin del
proveedor) donde el usuario no importa.
> Solo con las credenciales del cliente se puede obtener un Access token
> Es peligroso porque las credenciales pueden estar expuestas (de ah solo usar
entornos de confianza)
> En este contexto el usuario desaparece del protocolo.
12 26/08/2014 Seguridad en tus APIs
OAUTH 2.0. Otros

13 26/08/2014 Seguridad en tus APIs
> Se definen extensiones en el estndar con otras opciones para el intercambio de
Access token

> Las ms destacables son:

Refresco de Access token
Habitualmente cuando se obtiene un Access token se suele obtener un objeto formateado
como JSON, uno de los campos es validez del objeto y otro Refresh token, con el cual un cliente
podra recuperar otro Access token valido transcurrido el tiempo de validez.
Este escenario puede ser peligroso, y debera limitarse su utilizacin ya que se podra refrescar
indefinidamente sin realizar el flujo de autorizacin completo.

SAML
Mediante aserciones SAML, se puede recuperar un Access token, habilitando de una forma
sencilla y estandarizada la cualidad de Single Sign On
De esta forma se puede combinar SAML y OAUTH.
Este escenario es muy interesante y potente, pero un poco complejo, por ello es importante
plantearse si los requerimiento de seguridad lo necesitan. Sobre todo teniendo en cuenta que en
entornos de movilidad SAML (debido al peso del protocolo) no es recomendable.



Como hacerlo?
> Existen varias alternativas para implantar una solucin de securizacin de APIs:
> Hazlo t mismo:
Delegar el servicio de Autorizacin a un tercero (Google, Facebook, etc) y hacer filtros para tus
APIs
Implemntalo t mismo, con frameworks validados para ello (Spring Security, PHP OAuth 2.0)

Existe documentacin interesante en http://oauth.net/2/
Algunos frameworks estn ms maduros que otros, en general an estn verdes, salvo libreras
con terceros (Google por ejemplo es un muy buen ejemplo)

> Gestin de APIs
Esta solucin adems de securizar tus APIs introduce el concepto de gobierno de APIs y de
consumidores
A la hora de exponer APIs en Internet es importante tener un sistema con un servicio muy
fuerte en seguridad y mnima latencia (por ellos a veces las soluciones caseras pueden ser
peligrosas)
Existen varios productos tanto Open Source como comerciales que cubren la funcionalidades
bsicas. Ejemplo WSO2 API Manager



14 26/08/2014 Seguridad en tus APIs
A tener en cuenta
> Ataques DOS
Tanto el servidor del recurso como el servidor de autorizacin pueden ser victimas con
llamadas masivas, pudiendo colapsar el servicio.
El concepto de throttling, establece umbrales de llamadas por consumidor, ayudando a
evitar ataques y/o estadsticas de uso.

> Secuestro de sesin
Obligatorio uso de HTTPS (envo de cookies solo por SSL)

> Ataques CSRF
Con redirecciones del navegador se pueden conseguir ataques CSRF
http://tools.ietf.org/html/rfc6749#page-43
Existen campos adicionales definidos en OAUTH, para validar acciones y evitar as ataques de
este tipo, los clientes deben tener en cuenta estas validaciones.

> Restringir llamadas peligrosas (buenas practicas creacin APIs):
Minimizar uso de POST, identificado muy bien verbos
Cuidado con uso de Ajax (https://developer.chrome.com/extensions/xhr)
Limitar tipos validos de peticiones (DELETE especialmente)



15 26/08/2014 Seguridad en tus APIs
Servicios GFI

Definicin,
desarrollo y
securizacin de
APIs
Asesoramiento
en desarrollo
REST
Medicin y
evaluacin
del retorno de
APIs
Asesoramiento
en seguridad
REST
Prospeccin de
candidatos
a API
Soluciones
de gestin
APIs
Definicin,
desarrollo
de APIs
16 26/08/2014 Seguridad en tus APIs
Buenas
practicas
para tus APIs
Ms informacin:
www.gfi.es | marketing@gfi.es | @GFI_Informatica | facebook.com/gfiinformatica

Você também pode gostar