Para un usuario final, ¿es HTML5 / JavaScript más seguro que Flash?

46

No estoy hablando de la seguridad del lado del servidor o incluso de las vulnerabilidades de XSS, ya que estos son ataques a servicios vulnerables y no utilizan ninguna vulnerabilidad preexistente en el lado del cliente para afectar a un usuario final. Existirán mientras los desarrolladores web sigan creando aplicaciones web vulnerables.

Quiero centrarme en la seguridad del usuario final en estos dos escenarios diferentes:

  1. Flash instalado y habilitado, pero JavaScript desactivado
  2. JavaScript habilitado, Flash no instalado o habilitado

Me interesan las respuestas que pueda obtener al plantear un tipo de pregunta que requiere la comparación de dos tecnologías casi completamente diferentes (internamente), pero competitivas, en términos de seguridad del usuario final.

    
pregunta Jonathan Gray 28.11.2015 - 04:02
fuente

3 respuestas

55

En teoría, si todos los servidores y las conexiones a ellos fueran perfectamente seguros (imposibles) y confiables (no verdaderos), ninguno sería más "seguro" que el otro, principalmente porque los desarrolladores del sitio web están en Control total del contenido del sitio. Dado que Flash y JS se entregan a los clientes, el servidor tendría que proporcionar contenido malicioso al usuario final para que el usuario final se vea afectado.

Lamentablemente, no vivimos en un mundo perfecto y JS tiende a ser más seguro en el caso de un compromiso del servidor, ya que está mucho más limitado en su capacidad de afectar al cliente. Muchas vulnerabilidades de Flash tienen la capacidad de ejecutar código arbitrario, que es mucho más dañino que las vulnerabilidades del navegador, que a menudo requieren múltiples vulnerabilidades para salir de la caja de arena. Esto significa que los exploits JS a menudo solo pueden manipular al cliente mientras el cliente está viendo esa página y generalmente no puede persistir después de que se cierra, mientras que los exploits Flash pueden infectar a los clientes con RAT u otro malware, lo que permite al atacante tener control sobre el cliente incluso después de que el navegador está cerrado.

Otra ventaja de usar JS es que los clientes pueden ver la fuente. Alguien que use el sitio puede notar algo sospechoso en la fuente y notificar a los desarrolladores, permitiendo que la intrusión sea detectada más fácilmente. En el caso de Flash, un atacante malintencionado puede inyectar código malicioso en un swf existente y, como los usuarios no pueden ver la fuente sin disimular el swf, el código malicioso puede pasar desapercibido por más tiempo.

Para un usuario final, escenario 2:

  

JavaScript habilitado, Flash no instalado o habilitado

sería mucho más seguro por las razones anteriores y dada la historia de hazañas de Adobe Flash. Una búsqueda en el NVD revela un total de 610 vulnerabilidades , son entre enero de 2014 y diciembre de 2015. La mayoría de las vulnerabilidades relacionadas con JS tienden a ser específicas del navegador, lo que reduce el número de clientes afectados, mientras que Flash debe ser multiplataforma, lo que aumenta el número de afectados. clientes (menos en la actualidad, considerando que muchas personas tienen Flash deshabilitado).

TLDR: Mantén el Flash apagado y usa JS en su lugar.

    
respondido por el WillS 28.11.2015 - 06:15
fuente
32

Además de la excelente respuesta de WillS, hay algunas diferencias más que afectan la seguridad:

  • Flash es un producto, mientras que HTML5 / Javascript es una especificación. Con un producto (y especialmente uno de código cerrado), siempre depende del proveedor para jugar un juego de whack-a-mole (que Adobe está haciendo admirablemente, pero a largo plazo es una batalla perdida). Una especificación se puede volver a implementar si es necesario (a menos que haya una falla en la especificación en sí, pero incluso eso generalmente se puede arreglar).
  • Es posible que los usuarios finales no tengan la última versión de Flash y no puedan actualizar. Por ejemplo, las implementaciones de Linux y Android son antiguas y no son compatibles.
  • El flash es muy antiguo; Fue creado por primera vez el siglo pasado. Cualquier software de esa edad probablemente sea una gran bola de cinta adhesiva en este momento. De nuevo, esto es principalmente una consecuencia de que Flash es un producto en lugar de una especificación. HTML y Javascript también se remontan al pasado, pero no sufren este problema, al menos no en la misma medida.

Actualizar Dos problemas adicionales con Flash:

  • Flash puede establecer sus propias conexiones TCP. Si se encuentra que un cifrado o hash es vulnerable, el navegador puede dejar de usarlo, pero Flash puede seguir utilizándolo. Adobe tiende a ser bastante bueno para solucionar estos problemas (al menos en las plataformas compatibles), pero aún duplica el factor whack-a-mole.
  • Flash tiene sus propias cookies, separadas de las cookies del navegador. Esto es principalmente un problema de privacidad más que un problema de seguridad, pero muchas personas consideran que estos dos problemas están vinculados.
respondido por el Kevin Keane 28.11.2015 - 08:13
fuente
0

Desde la perspectiva de "la ejecución de xx de su navegador puede bloquear su máquina o poner en peligro su seguridad", la respuesta es clara: flash es una tecnología antigua, ya no está bien soportada y con un largo historial de ataques. Así que se sabe que es potencialmente peligroso.

En cuanto a html5, javascript y otras tecnologías actualmente disponibles, no son intrínsecamente más seguras, están ejecutando un código escrito por Terceros en su máquina. Hay un intento de limitar lo que Se puede hacer, pero la efectividad depende de la calidad de las implementaciones. así como el diseño subyacente. Las explotaciones son inevitables.

    
respondido por el ddyer 03.12.2015 - 21:30
fuente

Lea otras preguntas en las etiquetas