¿Los formularios de tarjetas de crédito en páginas HTTP son un riesgo MITM?

20

El otro día, hubo un hilo de la lista de correo del desarrollador web sobre una página de recaudación de fondos.

Una persona señaló que la página con el formulario de la tarjeta de crédito era HTTP, no HTTPS.

En respuesta, una persona dijo que dado que el objetivo del formulario era HTTPS, no es un problema

  

No, el formulario se envió a través de https, servido por Stripe. El propio sitio   es http, aunque ...

Sin embargo, alguien argumentó en respuesta que eso no es suficiente

  

No ha establecido que el formulario sea seguro. Un MITM puede modificar   el código HTML en la respuesta para enlace   para reemplazar el atributo de "acción" del formulario.

El sitio web en cuestión ha cambiado desde entonces, de modo que ir a enlace lo lleva a enlace en su lugar, así que (con suerte) es seguro ahora, pero quiero saberlo para futuras referencias.

¿Un formulario de tarjeta de crédito está en HTTP, pero el objetivo es HTTPS, un riesgo de seguridad para los ataques MITM?

    
pregunta Andrew Grimm 01.03.2013 - 09:20
fuente

4 respuestas

23

Sí, esa última persona es correcta, además del cifrado ( confidencialidad ) HTTPS le garantiza que el formulario proviene de donde cree que está ( autenticación ), y que no se ha interferido en tránsito ( integridad ). Sin HTTPS, el formulario podría ser modificado por un MITM como se describe.

It's No usar HTTPS para esto es simplemente una mala práctica (ya que usuario es a menudo el enlace más débil), al ingresar datos importantes, el usuario solo debe esperar ver HTTPS (candado / barra verde / lo que sea) en cada paso, sin excepciones.

La mayoría de los navegadores avisarán de forma predeterminada si realiza un POST de una página HTTPS a una URL no HTTP, pero no todos indican claramente que sus datos se están enviando de forma segura en el caso contrario. La falta de HTTPS también significa que el sitio no utilizará cookies "seguras".

Vea también: Está publicando de HTTP a HTTPS una mala práctica?

Para abordar adecuadamente este problema se requiere HTTP STS ( RFC6797 ), aunque en la mayoría de los casos sigue habiendo un problema con el ajuste de arranque en las primeras solicitudes HTTP.

Un problema similar es la práctica de usar iframe para un sitio HTTPS dentro de una página HTTP, por ejemplo. Servicio de tarjetas de crédito de terceros. En este caso, aunque el formulario y la publicación son HTTPS, no hay garantía de integridad en el contenido no HTTPS que contiene el iframe . El navegador no muestra que el formulario es HTTPS (al menos no de la forma normal, si es que lo hace), por lo que esto también viola las expectativas de un usuario preocupado por la seguridad.

    
respondido por el mr.spuratic 01.03.2013 - 10:36
fuente
9

Un hombre en el centro podría manipular fácilmente el objetivo de la publicación, por lo que ya no apunta a la URL HTTPS segura. El usuario no puede ver si el objetivo es seguro (sin mirar el código HTML), por lo que solo tiene que creer que el objetivo POST es seguro.

Este esquema de un formulario HTTP no seguro que llama a una URL HTTPS segura, siempre es vulnerable a SSL-strip .

    
respondido por el martinstoeckli 01.03.2013 - 11:10
fuente
4

Si bien algunas de las respuestas son realmente útiles, todas han omitido mencionar un aspecto muy importante, la inyección de código malicioso.

Un MITM puede modificar la página servida a través de HTTP, lo que le permite inyectar Javscritpt malicioso que, por ejemplo, espera hasta que se desplace sobre el botón Enviar y haga un Ajax POST en el servidor del atacante enviando el formulario información. Esto es básicamente lo que el el gobierno tunecino hizo para cosechar las credenciales de los disidentes en Facebook .

Por lo que sé, hay dos problemas de seguridad para servir formularios a través de HTTP (bueno, en realidad son uno, pero pueden ser explotados de dos maneras diferentes):

  1. El atacante cambia el objetivo de envío (el campo action )
  2. El atacante inyecta el código Javascript que envía los datos del formulario a un tercero.
respondido por el Adi 01.03.2013 - 20:55
fuente
1

Para ser claro, NO debe hacer esto como desarrollador del sitio, pero si necesita trabajar con un sitio que se comporte de esta manera, mi respuesta está diseñada para decir lo que PUEDE hacerse con seguridad. Básicamente, no puede confiar en nada en la página en sí, todo lo que puede confiar es que si el certificado SSL se resuelve, entonces la publicación está hablando con el servidor legítimo de la URL que dice ser. Debe validar manualmente que se está enviando a esa URL y que es la URL adecuada. Esto solo se puede hacer si la respuesta va a la misma URL de nivel superior que sirvió a la página, ya que sabe que está intentando conectarse a ese dominio de nivel superior.

Mientras el usuario verificara que el objetivo de la publicación era el servidor previsto y que la conexión de la publicación era HTTPS y que no había secuencias de comandos que pudieran alterar el contenido presente en la página y que el navegador no envíe un enlace HTTPS eso no tiene un certificado válido para la URL a la que se envía, entonces el formulario sería perfectamente seguro. Tenga en cuenta que solo puede conocer el servidor deseado si se está publicando en el mismo TLD desde el que se aloja la página. Por ejemplo, no sabría si www.bob.com que le indica que envíe el formulario a www.bobspayments.com era válido. También es posible que si la misma información enviada a dos servicios diferentes haría cosas diferentes, entonces un usuario malintencionado podría hacer uso de eso. El problema es que un usuario no hará eso. Protege contra el sniffing pasivo, pero no proporciona una verificación al usuario de que el sitio es legítimo, el cual DEBERÍA (pero probablemente en muchos casos) no es motivo de preocupación para el usuario.

Un atacante MITM activo podría simplemente cambiar la página para devolverles la información, pero, de nuevo, esto podría hacerse incluso si la página en sí era HTTPS ya que muchos usuarios no se darían cuenta si en realidad era una página HTTP. devuelto, por lo que no estoy seguro de que exista una amenaza significativamente mayor de un MITM activo ya que, en cualquier caso,

El verdadero problema sería la experiencia del usuario y el hecho de que se muestre al usuario ya que la página no está protegida, por lo que es preferible HTTPS para toda la página por ese motivo. Para aclarar, hay muchas cosas que pueden ir mal si los contenidos de la página no son auténticos, por lo que es preferible probar la autenticidad, pero siempre que la información se envíe a través de SSL, estará protegida. El problema es garantizar que será sin revisar manualmente el código de la página.

    
respondido por el AJ Henderson 01.03.2013 - 15:11
fuente

Lea otras preguntas en las etiquetas