23 puntos por GN⁺ 2024-05-29 | 5 comentarios | Compartir por WhatsApp
  • TL;DR: en lugar de redirigir las llamadas a la API de HTTP a HTTPS, deben fallar. Hay que desactivar por completo HTTP o devolver una respuesta de error HTTP clara, y revocar las claves de API enviadas por conexiones sin cifrar. Lamentablemente, muchos proveedores de API conocidos hoy no lo hacen.

Contexto

  • Cuando un navegador web accede a una URL HTTP, el servicio a menudo redirige esa solicitud a una página HTTPS.
  • El tráfico HTTP inicial no está cifrado, por lo que es vulnerable a ataques de intermediario en la red (MITM).
  • Se introdujeron tecnologías como HSTS (HTTP Strict Transport Security) para reforzar la seguridad.

El riesgo de un simple error tipográfico

  • Durante una integración con una API de terceros, se escribió por error la URL base de la API como http:// en lugar de https://.
  • El fetch de Node.js siguió silenciosamente la redirección hacia HTTPS.
  • La clave de API pudo haberse enviado en texto plano, generando un riesgo de seguridad.
  • El error se detectó durante la revisión de código y se corrigió.

Principio de fallo rápido

  • Si una API redirige solicitudes HTTP a HTTPS, es fácil pasar por alto un error tipográfico.
  • Conviene seguir el principio de fallo rápido: una llamada a API sin cifrado debe fallar de forma clara.
  • Lo ideal es desactivar la interfaz HTTP del servidor de la API o devolver un mensaje de error para las solicitudes HTTP.

Casos de otras API

  • Varias API conocidas devuelven un mensaje de error 403 para solicitudes HTTP o desactivan la interfaz HTTP.
  • Sin embargo, algunas API todavía redirigen de HTTP a HTTPS.

La necesidad de mejores prácticas

  • En aplicaciones orientadas al usuario, redirigir de HTTP a HTTPS es algo común.
  • En el caso de las API, redirigir de HTTP a HTTPS puede ser más bien perjudicial.
  • Se necesitan lineamientos claros para las API en proyectos de seguridad como OWASP.

Conclusión

  • Las API no deben redirigir de HTTP a HTTPS; deben hacer que las solicitudes sin cifrar fallen claramente.
  • Si una clave de API se envía por una conexión sin cifrar, debe revocarse de inmediato.
  • Es necesario actualizar las mejores prácticas de seguridad para API y ofrecer lineamientos claros.

Opinión de GN⁺

  • Necesidad de reforzar la seguridad: la seguridad de las API es muy importante, y redirigir de HTTP a HTTPS puede provocar vulnerabilidades.
  • Principio de fallo rápido: es importante seguir este principio para poder detectar y corregir errores en etapas tempranas del desarrollo.
  • Actualización de mejores prácticas: proyectos de seguridad como OWASP deberían ofrecer lineamientos claros sobre la seguridad de las API.
  • Revocación automática de claves: las claves de API enviadas por conexiones sin cifrar deberían revocarse automáticamente.
  • Tomar como referencia otros casos: conviene revisar las prácticas de seguridad de otras API para reforzar la seguridad de la propia API.

5 comentarios

 
wkang586 2024-06-03

Parece un ámbito que debería regularse por ley.
Por ahora, una nota... prohibir las redirecciones a HTTPS en las API

 
koxel 2024-05-31

Técnicamente es correcto,
pero en la mayoría de los clientes corporativos existe la política de seguridad de que, al acceder por HTTP, siempre se envíe una redirección a HTTPS.
Además, también evitan mostrarles una pantalla de error a los clientes que usan su sitio, así que, salvo que sea un lugar que opera su propio servicio, desde la posición de quien entrega la solución esto vendría siendo una historia de otro mundo, supongo..

 
thxgeeknews 2024-05-29

Durante el trabajo, en el proceso de integración con una API de terceros, ingresé por error la URL base de la API como https:// en lugar de http://.
Parece que se invirtió http <-> https.

 
xguru 2024-05-29

Vaya, la IA cometió este error jaja. Ya lo corregí.

 
GN⁺ 2024-05-29
Comentarios en Hacker News
  • La API de OpenAI se actualizó para devolver un error 403 ante solicitudes HTTP.
  • La API de Stack Exchange maneja mejor esto al revocar las claves de API enviadas por HTTP y devolver un mensaje de error.
  • Hay que tener cuidado de no configurar automáticamente redirecciones de HTTP a HTTPS.
  • Que la configuración predeterminada de cURL no siga redirecciones automáticas es intencional y un buen valor por defecto.
  • Es importante bloquear el acceso por HTTP y ofrecer solo HTTPS.
  • Sorprende que "Provider B" haya respondido que un ataque MITM está fuera del alcance del programa.
  • Se plantea la duda de si el sniffing de HTTP es un tipo de ataque MITM.
  • Ojalá que HTTPS y los registros DNS SVCB puedan reemplazar con el tiempo las redirecciones tradicionales del servidor HTTP.
  • Los proveedores de API deberían revisar los registros históricos de acceso por HTTP y verificar qué tan extendido sigue estando el uso de HTTP en texto plano.
  • Muchas API están alojadas detrás de firewalls de aplicaciones web que establecen como regla predeterminada la redirección automática a HTTPS.
  • Las API no deberían redirigir automáticamente de HTTP a HTTPS, y las bibliotecas cliente tampoco deberían seguir redirecciones por defecto.
  • Configurar una redirección de HTTP a HTTPS ayuda a reducir el tráfico a largo plazo.
  • En muchos casos se configuran redirecciones para resolver rápido problemas causados por errores tipográficos en las URL dentro de la infraestructura.