¿Cuáles son las implicaciones de seguridad de las personas que descargan complementos, pensando erróneamente que están a salvo?

22

Hace poco me enteré de un complemento para Firefox llamado Fire Sheep, que se presentó en el podcast de Security Now. He descargado F.S. Y comencé a examinarlo. Para mi sorpresa, incluye el código C ++ que se debe compilar para que el complemento funcione.

Mi impresión siempre fue que Firefox, a diferencia de IE, no permite la ejecución del código objeto descargado dentro del navegador. F.S. Parece contradecir esto.

¿Cuáles son las implicaciones de seguridad de las personas que descargan complementos, pensando que son seguras, cuando podrían contener fácilmente malware en forma de código de objeto troyano o incluso vulnerabilidades de Javascript?

    
pregunta Snuffles 02.08.2011 - 21:23
fuente

6 respuestas

14

Si las personas no leen la gran advertencia que se muestra en cada instalación de un complemento o complemento de Firefox, han perdido. Los complementos son programas completos que pueden hacer cualquier cosa, tienes permiso para hacerlo.

El mensaje de advertencia es realmente obvio:

  

Solo debes instalar complementos de fuentes en las que confíes.

     

El software malvado puede dañar archivos en tu computadora o violar tu privacidad.

    
respondido por el Hendrik Brummermann 02.08.2011 - 23:16
fuente
9

La terminología que usa un navegador en particular para describir los complementos es un poco inútil. Algunos navegadores llaman a algunas cosas complementos, algunos navegadores llaman a algunas extensiones de cosas. Alguien en algún momento se le ocurrió la idea de nombrar "cookies" de almacenamiento temporal después de todo y qué tan útil es ese nombre.

Por lo tanto, un mecanismo de extensión (como en cualquier extensión de la funcionalidad del navegador) funciona en dos niveles:

1) El navegador implementa algún sub idioma como las interfaces de usuario representadas con XML (XUL en Firefox es esto, específicamente xulrunner le permite describir una interfaz de usuario en xml). Además, muchas de las extensiones de Firefox se pueden implementar en javascript (busque spidermonkey y similares, este es un componente de firefox que ejecuta javascript; en firefox, hay funciones adicionales que permiten que javascript haga cosas, como transformar el DOM del La página que se está navegando actualmente, o lo que sea. En este nivel, el navegador puede controlar lo que hace la extensión de forma bastante trivial, pero cualquier cosa que la extensión quiera hacer que Firefox no admita o no permita, no se puede hacer. >

  OS <--  Firefox <-- Nice extension interpreter <- extension javascript.

2) A veces, necesitas hacer algo para lo que Firefox no esté diseñado para hacer, o no se puede hacer de manera eficiente en un formato de javascript u otro interpretado, como ejecutar flash o decodificar weird-codec.oddfile, por ejemplo. Situaciones como esta Firefox tienden a manejarse con "manejadores" que funcionan un poco como este:

  OS <--- Firefox  <--- webpage containing something
              |
          Plugin API---Relevant part of webpage, like <embed>
              |                 |
  OS <----- Plugin! like ns_flash.so or such like

Aquí, las extensiones se compilan para que coincidan con la arquitectura de extensión de Firefox para este tipo de cosas. Firefox expone un cierto conjunto de funciones para permitir que la extensión lo controle de ciertas maneras, pero la extensión también puede pedirle al sistema operativo que haga las cosas directamente. Si se comporta bien, básicamente toma la entrada relevante (es decir, aquí hay un archivo .swf ) y hace lo que tiene que hacer ("firefox, en este cuadro, dibuja este video"). Sin embargo, técnicamente podría hacer cualquier cosa que su usuario pueda hacer, porque Firefox no lo detiene.

En cuanto a por qué se debe compilar Firesheep, esto se debe a que depende de libpcap (o similar), que trata de extraer paquetes de información del "cable", es decir, de un dispositivo que los está recibiendo. Una interfaz inalámbrica es particularmente susceptible a esto porque muchos adaptadores inalámbricos son omnidireccionales, por lo que cualquier interfaz en la vecindad recoge estos paquetes. Por lo general, su kernel (sistema operativo) eliminará los paquetes que no estén dirigidos a él; sin embargo, configurar la interfaz en modo promiscuo es la forma en que le pide que no lo haga. libpcap hace esto por ti y te permite capturar esos paquetes. Para hacer esto, necesita acceso directo (probablemente administrativo / raíz) al sistema operativo.

Firesheep funciona completamente analizando esos paquetes, encontrando los http que no están encriptados, raspándolos para obtener datos de inicio de sesión y luego informándolos.

Ahora, volviendo al riesgo de seguridad de estos complementos, es bastante obvio, un complemento que funciona como código nativo (en Firefox, un complemento, en lugar de una extensión) puede hacer lo que sea que el usuario pueda hacer (olvídese de Firefox) así que como Hendrik lo expresa correctamente, si ignora la gran advertencia, eso es un problema. Una extensión debería poder hacer un daño limitado.

Mientras estamos aquí, el modelo de Google Chrome vuelve a ser diferente. Cada aplicación en una computadora está compuesta por procesos y subprocesos: en muchos procesos, los subprocesos son básicamente procesos ligeros y comparten memoria a través del proceso y así es como se logra la concurrencia, sin embargo, un solo subproceso colapsa todo el proceso y cualquier subproceso puede técnicamente alterar la memoria de otro hilo sin restricción.

Por lo tanto, google chrome funciona creando procesos para cada dominio único que visita de forma única, actuando como si tuviera un proceso por pestaña (para muchos casos de uso) y cada extensión de ejecución que utiliza. En realidad, también puede personalizar esto para ejecutar un proceso por pestaña o solo un proceso por dominio. independientemente de las visitas que realices. Así que mientras que en Firefox obtienes:

 Firefox   thread/1
           thread/2
           thread/3

En google chrome obtienes

 Chrome master process

                Chrome child process for security.stackexchange.com
                Chrome child process for meta.stackoverflow.com
                Chrome child process for flash

Ahora, cada proceso hijo está fuertemente restringido. La forma estándar de crear un proceso le otorga de manera predeterminada los permisos que tenga el padre (herencia) pero Google Chrome establece los permisos de forma explícita. Los procesos secundarios solo pueden comunicarse con el proceso principal cuando quieren hacer algo y cualquier llamada a la API que realice al sistema operativo está severamente restringida por los tokens de control de acceso de Windows. Entonces, la idea aquí es que un complemento, en teoría, debe ser capaz de hacer solo lo que necesita.

Esa es en gran medida la teoría de la idea de google chrome. En la práctica, los documentos de diseño implican que debe pasar --sandbox-plugins , es decir, no estoy seguro de qué. la extensión de los complementos de sandboxing es automática y si todos funcionan correctamente todavía.

    
respondido por el user2213 03.08.2011 - 20:09
fuente
6

En primer lugar, le falta la distinción entre "complementos" (o "extensiones") y "complementos". Los "complementos" modifican la funcionalidad del navegador de alguna manera, generalmente haciendo la vida más fácil. Por esta razón, tienen mucho más control y menos restricciones de acceso que los "complementos". También son (generalmente) multiplataforma. Los "complementos" son módulos dependientes de la plataforma que permiten que un navegador muestre contenido que de otra forma no sabría cómo mostrar, como archivos PDF o videos.

La seguridad del complemento depende de la implementación del navegador. Firefox, por ejemplo, le da a los complementos mucho más acceso que Chrome a sus extensiones. Los complementos tienen el mismo acceso en todos los navegadores. Algunos complementos, como Flash, solicitan archivos a través del navegador, sometiéndolos a restricciones que los navegadores (o complementos) pueden imponer. Por ejemplo, RequestPolicy y un complemento que controla las solicitudes de dominios cruzados en Firefox, puede (y lo hace) bloquear las solicitudes de dominios cruzados en el contenido de Flash. Java, por otro lado, puede ejecutar código en la JVM independientemente del navegador.

No lo sé con seguridad, pero creo que la razón por la que FireSheep incluye el código C ++ es porque necesita capturar todos los paquetes que fluyen en la red, que es algo que Firefox no permite. Para que FireSheep lo haga, debe ejecutar algún tipo de código nativo.

En cuanto a otros complementos, en Firefox, un complemento malicioso tiene acceso a todo su historial, sus contraseñas guardadas, marcadores y puede modificar la apariencia y el comportamiento de cualquier página web que desee. Sin embargo, en Chrome, debe declarar explícitamente el acceso deseado, y Chrome informará al usuario a qué extensión necesita acceso la extensión antes de instalarlo.

Un complemento es casi comparable al código nativo, por lo que un complemento malintencionado tiene acceso a lo que el sistema operativo le da acceso. Si descarga e instala un complemento malicioso, es lo mismo que descargar e instalar cualquier otro programa malicioso.

    
respondido por el Soumya 03.08.2011 - 04:30
fuente
4

Ejecuta solo software de confianza en tu computadora. enlace

  

Ley # 1: si un malvado puede persuadirte de que ejecutes su programa en tu computadora, ya no es tu computadora

Estoy confundido acerca de tu descripción de que Firesheep necesita ser compilado antes de trabajar; por favor podrías expandir eso? Además, estrictamente, firesheep es una extensión de Firefox, no un complemento.

    
respondido por el DanBeale 02.08.2011 - 23:03
fuente
4

Estás confundiendo los elementos de la página web y los complementos del navegador.

Muchas páginas web contienen código (generalmente escrito en JavaScript) que se ejecuta en su navegador, pero en un área cuidadosamente cercada (conceptualmente, un sandbox (no necesariamente un sandbox en ningún sentido técnico particular). El código contenido en una página web no tiene acceso a nada más que a sus propios datos; en particular, no puede acceder a los datos de las páginas web de otros sitios, ni a los datos de otras partes de su computadora, ni ejecutar código que tenga algún impacto fuera del navegador. (A menos que haya un error en el navegador, por supuesto).

Navegador complementos y extensiones son aplicaciones que se ejecutan en su computadora. A diferencia de las aplicaciones “completas” como el navegador, los complementos y las extensiones no se ejecutan de forma nativa en su sistema operativo: solo funcionan como componentes adicionales de su navegador. No existe la expectativa de a priori de que estas aplicaciones tengan permisos restringidos.

No hay una diferencia fundamental entre complementos y extensiones; simplemente utilizan diferentes interfaces para comunicarse con el navegador. Los complementos ejecutan el código nativo directamente, por lo que pueden hacer cualquier cosa que el sistema operativo permita a las aplicaciones que está ejecutando. Las extensiones son más dóciles; Las extensiones de Chrome tienen un sistema de permisos, y otros navegadores también ponen restricciones sobre lo que pueden hacer las extensiones. No obstante, las extensiones tienen suficientes permisos para que una extensión maliciosa pueda causar daño. Debe tener tanta precaución al instalar un complemento o complemento como al instalar cualquier otra aplicación en su computadora.

    
respondido por el Gilles 03.08.2011 - 14:32
fuente
3

Algunos navegadores hacen chroot jailing, syscall interception, y similares para proteger extensiones en la caja de arena como defensa en profundidad contra cero días en flash y similares, pero muchos mecanismos de extensión de navegador otorgan mucha autoridad a las extensiones.

Native Client es un intento de proporcionar un espacio aislado en el navegador para el código compilado nativo y podría constituir la base de un nuevo mecanismo más flexible para sandboxing extensiones nativas.

    
respondido por el Mike Samuel 03.08.2011 - 20:24
fuente

Lea otras preguntas en las etiquetas