Reach

Grow

Manage

Automate

Reach

Grow

Manage

Automate

Lista blanca de IP para claves API

Correo electrónico

1 min read

Lista blanca de IP para claves API

Correo electrónico

1 min read

Lista blanca de IP para claves API

Hay muchas formas de construir autenticación en un producto basado en API como SparkPost, y la que elegimos desde el principio es el uso de claves de API. Inyectar tu clave de API como un encabezado de Autorización en bruto o a través de la autenticación básica HTTP estándar facilita mucho el uso de nuestras API. Las claves de API como esta son un estándar común para los servicios web, pero ¿cuán seguro es este sistema?

Hay muchas maneras de construir la autenticación en un producto con prioridad en API como SparkPost, y la que elegimos desde el principio es el uso de claves de API. Inyectar tu clave de API como un encabezado de Autorización bruto o a través de HTTP Basic Auth estándar hace que sea muy fácil usar nuestras APIs. Las claves de API como esta son un estándar común para los servicios web, pero ¿qué tan seguro es este sistema?

Los riesgos

Cuando se utiliza cualquier servicio web, si un atacante obtiene su clave API, puede actuar en su nombre y hacer cosas como (en nuestro caso):

  • enviar su correo electrónico de forma gratuita a través de su cuenta

  • descargar su lista de destinatarios y enviarla a spammers (si no son ellos mismos spammers)

  • editar sus plantillas para inyectar enlaces de phishing

  • enviar spam o phishing en su nombre

Cualquiera de estos resultados podría ser muy perjudicial para su reputación y para su negocio, y en el caso de phishing, potencialmente dañar directamente a sus usuarios finales. Por esta razón, es extremadamente importante asegurarse de que nadie pueda descubrir su clave API.

Las probabilidades

¿Escuché bruteforce? Nuestras claves API son cadenas hexadecimales aleatorias de 40 caracteres. Esto representa un total de 1.4615e+48 claves API. Si los 3 mil millones de computadoras y teléfonos inteligentes en el mundo intentaran 100 claves API por segundo, suponiendo que nuestros servidores lo permitieran, pasar por todas las posibles claves API llevaría más de 150,000,000,000,000,000,000,000,000,000 años. Así que forzar la clave API simplemente no tiene sentido.

Entonces, ¿cómo puede alguien encontrar tu clave API? Debido a que la clave se pasa como un encabezado, puede ser leída con ataques de intermediario, por lo que siempre debes asegurarte de que tu cliente está verificando los certificados SSL al conectarse a nuestras APIs (esta es una razón principal por la que requerimos https para conexiones a la API). Además, si no tienes cuidado con tu uso de repositorios de código público como github, tu clave API puede quedar fácilmente expuesta al público. Este no es un problema teórico: hay bots conocidos escaneando github para encontrar claves API, y ha habido ataques exitosos a través de ese vector.

¿Escuché bruteforce? Nuestras claves API son cadenas hexadecimales aleatorias de 40 caracteres. Esto representa un total de 1.4615e+48 claves API. Si los 3 mil millones de computadoras y teléfonos inteligentes en el mundo intentaran 100 claves API por segundo, suponiendo que nuestros servidores lo permitieran, pasar por todas las posibles claves API llevaría más de 150,000,000,000,000,000,000,000,000,000 años. Así que forzar la clave API simplemente no tiene sentido.

Entonces, ¿cómo puede alguien encontrar tu clave API? Debido a que la clave se pasa como un encabezado, puede ser leída con ataques de intermediario, por lo que siempre debes asegurarte de que tu cliente está verificando los certificados SSL al conectarse a nuestras APIs (esta es una razón principal por la que requerimos https para conexiones a la API). Además, si no tienes cuidado con tu uso de repositorios de código público como github, tu clave API puede quedar fácilmente expuesta al público. Este no es un problema teórico: hay bots conocidos escaneando github para encontrar claves API, y ha habido ataques exitosos a través de ese vector.

¿Escuché bruteforce? Nuestras claves API son cadenas hexadecimales aleatorias de 40 caracteres. Esto representa un total de 1.4615e+48 claves API. Si los 3 mil millones de computadoras y teléfonos inteligentes en el mundo intentaran 100 claves API por segundo, suponiendo que nuestros servidores lo permitieran, pasar por todas las posibles claves API llevaría más de 150,000,000,000,000,000,000,000,000,000 años. Así que forzar la clave API simplemente no tiene sentido.

Entonces, ¿cómo puede alguien encontrar tu clave API? Debido a que la clave se pasa como un encabezado, puede ser leída con ataques de intermediario, por lo que siempre debes asegurarte de que tu cliente está verificando los certificados SSL al conectarse a nuestras APIs (esta es una razón principal por la que requerimos https para conexiones a la API). Además, si no tienes cuidado con tu uso de repositorios de código público como github, tu clave API puede quedar fácilmente expuesta al público. Este no es un problema teórico: hay bots conocidos escaneando github para encontrar claves API, y ha habido ataques exitosos a través de ese vector.

IP whitelisting al rescate

Cuando creas una clave API, ahora puedes especificar una lista de IPs autorizadas para usar esta clave. Puedes especificar varias IP, así como bloques de IP, usando la notación CIDR, para que no tengas que enumerar tus servidores individualmente. Cuando se utiliza la clave API, ya sea para APIs REST o SMTP, compararemos la IP que se conecta con esta lista para permitir o denegar el acceso.

Con esta característica, incluso si tu clave API se encuentra o es robada, solo tus servidores podrán usarla. Dados los riesgos y lo fácil que es configurarlo, recomendamos encarecidamente a todos nuestros clientes que utilicen esta característica.

Últimas palabras

Algunas recomendaciones personales sobre seguridad:

  • No mantengas tus claves API en el código. Hay muchos beneficios en mantenerlas como variables de entorno, como hace Heroku

  • Puedes crear una cantidad ilimitada de claves API, y es mejor para la seguridad dividir las responsabilidades entre varias claves API, en lugar de solo una clave multiusos. Esto también te permitiría tener diferentes listas blancas de IP por clave, para una mejor separación de responsabilidades

  • Si trabajas con terceros, no compartas tu clave API, sino crea una nueva para ellos, solo con los permisos necesarios, y vinculada a sus IPs

  • Ya que las claves API solo se pueden crear a través de la interfaz, habilitar la autenticación de dos factores en tu cuenta de SparkPost es imprescindible y solo toma 2 minutos

Conectémosle con un experto de Bird.
Vea el poder completo del Bird en 30 minutos.

Al enviar, aceptas que Bird pueda contactarte sobre nuestros productos y servicios.

Puedes darte de baja en cualquier momento. Consulta el Aviso de Privacidad de Bird para obtener detalles sobre el procesamiento de datos.

Company

Newsletter

Mantente al día con Bird a través de actualizaciones semanales en tu buzón.

Al enviar, aceptas que Bird pueda contactarte sobre nuestros productos y servicios.

Puedes darte de baja en cualquier momento. Consulta el Aviso de Privacidad de Bird para obtener detalles sobre el procesamiento de datos.

Conectémosle con un experto de Bird.
Vea el poder completo del Bird en 30 minutos.

Al enviar, aceptas que Bird pueda contactarte sobre nuestros productos y servicios.

Puedes darte de baja en cualquier momento. Consulta el Aviso de Privacidad de Bird para obtener detalles sobre el procesamiento de datos.

Company

Newsletter

Mantente al día con Bird a través de actualizaciones semanales en tu buzón.

Al enviar, aceptas que Bird pueda contactarte sobre nuestros productos y servicios.

Puedes darte de baja en cualquier momento. Consulta el Aviso de Privacidad de Bird para obtener detalles sobre el procesamiento de datos.

Conectémosle con un experto de Bird.
Vea el poder completo del Bird en 30 minutos.

Al enviar, aceptas que Bird pueda contactarte sobre nuestros productos y servicios.

Puedes darte de baja en cualquier momento. Consulta el Aviso de Privacidad de Bird para obtener detalles sobre el procesamiento de datos.

R

Reach

G

Grow

M

Manage

A

Automate

Company

Newsletter

Mantente al día con Bird a través de actualizaciones semanales en tu buzón.

Al enviar, aceptas que Bird pueda contactarte sobre nuestros productos y servicios.

Puedes darte de baja en cualquier momento. Consulta el Aviso de Privacidad de Bird para obtener detalles sobre el procesamiento de datos.