Curso MIT "Seguridad de sistemas informáticos". Lección 18: "Navegación privada en Internet", parte 3

Instituto de Tecnología de Massachusetts. Conferencia Curso # 6.858. "Seguridad de los sistemas informáticos". Nikolai Zeldovich, James Mickens. Año 2014


Computer Systems Security es un curso sobre el desarrollo e implementación de sistemas informáticos seguros. Las conferencias cubren modelos de amenazas, ataques que comprometen la seguridad y técnicas de seguridad basadas en trabajos científicos recientes. Los temas incluyen seguridad del sistema operativo (SO), características, gestión del flujo de información, seguridad del idioma, protocolos de red, seguridad de hardware y seguridad de aplicaciones web.

Lección 1: "Introducción: modelos de amenaza" Parte 1 / Parte 2 / Parte 3
Lección 2: "Control de ataques de hackers" Parte 1 / Parte 2 / Parte 3
Lección 3: “Desbordamientos del búfer: exploits y protección” Parte 1 / Parte 2 / Parte 3
Lección 4: “Separación de privilegios” Parte 1 / Parte 2 / Parte 3
Lección 5: “¿De dónde vienen los sistemas de seguridad?” Parte 1 / Parte 2
Lección 6: “Oportunidades” Parte 1 / Parte 2 / Parte 3
Lección 7: “Sandbox de cliente nativo” Parte 1 / Parte 2 / Parte 3
Lección 8: "Modelo de seguridad de red" Parte 1 / Parte 2 / Parte 3
Lección 9: "Seguridad de aplicaciones web" Parte 1 / Parte 2 / Parte 3
Lección 10: “Ejecución simbólica” Parte 1 / Parte 2 / Parte 3
Lección 11: "Ur / Lenguaje de programación web" Parte 1 / Parte 2 / Parte 3
Lección 12: Seguridad de red Parte 1 / Parte 2 / Parte 3
Lección 13: "Protocolos de red" Parte 1 / Parte 2 / Parte 3
Lección 14: "SSL y HTTPS" Parte 1 / Parte 2 / Parte 3
Lección 15: "Software médico" Parte 1 / Parte 2 / Parte 3
Lección 16: "Ataques de canal lateral" Parte 1 / Parte 2 / Parte 3
Lección 17: "Autenticación de usuario" Parte 1 / Parte 2 / Parte 3
Lección 18: "Navegación privada en Internet" Parte 1 / Parte 2 / Parte 3

Entonces, el primer enfoque será utilizar máquinas virtuales como una forma de mejorar la garantía de la navegación privada, es decir, consideraremos la privacidad a nivel de máquina virtual.

La idea básica es que cada sesión privada debe ejecutarse en una máquina virtual separada. Luego, cuando el usuario finaliza la sesión de navegación privada, la máquina virtual se elimina. Entonces, ¿cuál es la ventaja de esta idea?



Es probable que obtenga mayores garantías de confidencialidad, que puede proporcionar al usuario, porque, presumiblemente, la máquina virtual tiene una interfaz de entrada / salida de datos bastante limpia. Se puede suponer que combina estas máquinas virtuales en, por ejemplo, algún tipo de solución de intercambio seguro, por ejemplo, utilizando Open BSD junto con el cifrado de datos del disco.

Entonces, tenemos una separación muy clara de la VM aquí, arriba, y todas las operaciones de E / S que ocurren a continuación. Esto le proporciona garantías más fuertes que las que obtiene de un navegador que no fue diseñado desde cero para cuidar mucho todas las formas de entrada / salida de información y qué secretos pueden filtrarse cuando esta información está en el almacén de datos .

Entonces sí, ofrece garantías más fuertes. Y, además, no requiere ningún cambio en sus aplicaciones, es decir, en el navegador. Usted toma el navegador, lo coloca en una de estas máquinas virtuales, y todo mejora mágicamente sin ningún cambio en la aplicación.

¿Qué hay de malo en eso? Dibujaré una carita triste en el pizarrón. Es engorroso. Por engorroso, quiero decir que cuando quieres iniciar una de las sesiones de navegación privadas, debes iniciar toda la máquina virtual. Y eso puede ser bastante doloroso porque los usuarios se sentirán frustrados ya que les lleva mucho tiempo comenzar sus sesiones de navegación privadas.



Otros problemas son que esta solución no es práctica. Y la razón de la impracticabilidad no es que sea realmente difícil para los usuarios hacer cosas como transferir archivos que guardaron en modo de navegación privada a una computadora, transferir todos los marcadores que generaron en este modo; todo esto, al final, puede ser hecho Pero aquí hay muchos inconvenientes asociados con la pereza.

El segundo enfoque del problema es similar al primero, pero en realidad lo implementamos dentro del sistema operativo en sí, y no en una máquina virtual. La idea principal aquí es que cada proceso podría ejecutarse potencialmente en un dominio privado. Un dominio privado es un tipo de colección de recursos compartidos del sistema operativo que utiliza un proceso, y el sistema operativo realiza un seguimiento de todas esas cosas. Y tan pronto como el proceso muere, el sistema operativo escanea todo en el dominio privado y libera por completo todos estos recursos para un nuevo uso.

La ventaja de este enfoque en comparación con el uso de VM es más liviano, porque si lo piensa, la máquina virtual es esencialmente independiente del estado del sistema operativo y del estado de todas las aplicaciones en ejecución. Por lo tanto, el uso de VM crea más trabajo que el sistema operativo, porque el sistema operativo presumiblemente conoce todos los puntos en los que un navegador privado entrará en contacto con la entrada / salida de datos, "hablará" con la red y cosas similares. Quizás el sistema operativo incluso sabe cómo borrar selectivamente la caché de DNS.

Por lo tanto, puede imaginar que es mucho más fácil "desenredar" estos dominios de privacidad para que simplemente pueda "derribarlos" más adelante. Sin embargo, la desventaja de esta solución, al menos con respecto al inicio de la VM, es que es mucho más difícil hacerlo de la manera correcta. Por lo tanto, acabo de describir el enfoque usando VM como progresivo, porque la máquina virtual es esencialmente independiente de todo lo que funciona dentro del contenedor del sistema operativo.



Lo bueno es que el enfoque de VM solo se enfoca en unas pocas interfaces de bajo nivel. Por ejemplo, la interfaz utilizada por una máquina virtual para escribir en el disco provoca un mayor grado de confianza, ya que contiene todo lo que necesita. Al usar el sistema operativo, esto es mucho más complicado, porque espera que use archivos individuales con una interfaz de sistema, por ejemplo, con una interfaz de red individual. Entonces, si hace todo esto a nivel del sistema operativo, la posibilidad de pérdida de datos es mucho mayor.

Entonces, estos fueron dos enfoques principales para mejorar las garantías de confidencialidad cuando se utiliza el modo de navegación privada, que se puede implementar en la actualidad.
Puede preguntar, ¿podemos revelar la identidad del usuario si aplica una de estas soluciones de seguridad más poderosas: navegar por Internet usando una máquina virtual o dominios de privacidad en el sistema operativo? ¿Podemos robarle al usuario el anonimato? La respuesta a esta pregunta será: ¡sí, podemos!

Es posible eliminar el nombre de un usuario porque la máquina virtual es única por alguna razón. Esto es similar a cómo pudimos tomar huellas digitales del navegador usando el sitio web Panopticlick. Probablemente haya algo único acerca de cómo se configurará la máquina virtual, que le permite tomar sus huellas digitales. También es posible que el monitor VM o el sistema operativo en sí sea único en algunos aspectos. Y esto permite que un atacante de red revele la identidad del usuario.

Un ejemplo típico es la huella digital TCP. La idea es que la especificación del protocolo TCP realmente permita la instalación de ciertos parámetros de protocolo durante la implementación de este protocolo. Por ejemplo, TCP permite a los artistas elegir el tamaño del paquete inicial, que se envía en la primera parte del establecimiento de una conexión TCP, que permite a los artistas elegir cosas como la vida útil inicial de estos paquetes.



Por lo tanto, puede obtener herramientas listas para usar, como InMap, que pueden indicar con alta probabilidad con qué sistema operativo está trabajando, simplemente enviándole paquetes cuidadosamente procesados. Verán cosas como el hecho de que aquí se presenta TTL, y aquí está el tamaño del paquete de distribución, y aquí estaba el número de serie TTP. Por lo tanto, crean una base de datos de huellas digitales. Dicen: "si el paquete devuelto tiene esta, esta y esta característica, entonces, según la tabla, está trabajando en Solaris, está utilizando una Mac y está utilizando Windows", o algo más. Por lo tanto, incluso utilizando uno de estos enfoques para mejorar la privacidad durante la navegación privada utilizando una máquina virtual o un sistema operativo, un atacante aún puede lanzar uno de estos ataques de detección de huellas digitales a través de TCP y aprender mucho sobre un usuario en particular.

Será interesante saber que incluso si el usuario está protegido de una de estas formas más poderosas, el usuario todavía está dividido entre ambos modos de visualización: público y privado, todavía está usando físicamente la computadora. Esto es interesante porque usted mismo en el proceso de uso de la computadora puede contribuir a la filtración de su información personal.

Por ejemplo, como resultado, cada usuario tiene una pulsación de tecla única. Entonces, si le doy la tarea de comenzar simultáneamente a escribir en el teclado la frase "zorro marrón rápido" o cualquier tontería, la observación mostrará que el tiempo de presionar las teclas por cada uno de ustedes es tan único que potencialmente se puede usar para tomar huellas digitales.

También es interesante que los usuarios tengan estilos de escritura únicos. Hay una industria de seguridad llamada estilografía.



La idea de la estilografía es que un atacante puede descubrir quién eres simplemente mirando las muestras de tu carta. Imagina que por alguna razón cuelgas en 4chan y quiero saber si realmente pasaste el rato allí. Puedo ver un montón de publicaciones diferentes en 4chan y agruparlas en conjuntos de comentarios que lucen estilísticamente iguales. Luego intentaré encontrar muestras públicas de su estilo de escritura, por ejemplo, en la tarea, de la cual usted es autor. Después de eso, comparo las muestras de estilo en los conjuntos de comentarios de 4chan con su tarea, y si encuentro una coincidencia, puedo escribir a sus padres para aclarar los peligros de congelarse en los foros de 4chan. Esa es la razón por la que decidí llamar su atención sobre la estilografía. Esto es realmente bastante interesante.

Por lo tanto, discutimos cómo puede usar máquinas virtuales o sistemas operativos modificados para proporcionar soporte para la navegación privada. Por lo tanto, puede preguntarse por qué, entonces, los navegadores no requieren que los usuarios hagan una de estas cosas: ¿iniciar una máquina virtual o modificar el sistema operativo? ¿Por qué los navegadores se hacen cargo de la implementación de todo esto?

La razón principal es la capacidad de implementación. Los fabricantes de navegadores generalmente no quieren obligar a sus usuarios a hacer nada especial para usar el navegador que no sea instalar el navegador en sí. Esto es similar a la motivación del Native Client cuando Google está a punto de agregar estas funciones geniales a las computadoras de los usuarios finales, pero no quiere obligar a los usuarios a instalar versiones especiales de Windows o Linux o hacer algo más. Por lo tanto, Google dice que "nos encargaremos de esto nosotros mismos".

Otra razón es la usabilidad. Muchas de estas soluciones de navegación privada a nivel de máquina virtual y sistema operativo, como ya hemos comentado, dificultan a los usuarios guardar los elementos recibidos durante una sesión de navegación privada: archivos descargados, marcadores y similares.



Básicamente, los fabricantes de navegadores dicen que si ellos mismos implementan modos de navegación privados, podrán permitir a los usuarios aceptar archivos descargados en modo de navegación privada y guardarlos en una computadora. Suena bien al principio. Pero tenga en cuenta que este enfoque permite a los usuarios exportar algún tipo de estado privado, lo que abre muchas vulnerabilidades en el sistema de seguridad y complica enormemente el análisis de las propiedades de seguridad utilizadas al implementar el modo de navegación privada.
Por lo tanto, los autores del artículo intentan caracterizar varios tipos de estados del navegador que pueden modificarse y consideran cómo los modos de navegación privados actuales pueden modificarlos.

Este artículo clasifica los cambios de estado del navegador. Hay cuatro tipos de cambios en esta clasificación. El primer tipo es cuando el sitio mismo inició los cambios de estado sin intervención del usuario. Ejemplos de este tipo de cambio de estado son las cookies, agregar algo al historial de direcciones del navegador y posiblemente actualizar la memoria caché del navegador. Por lo tanto, básicamente este estado persiste durante todo el modo de visualización privado, pero se destruye después de su finalización.

Se puede suponer que dado que el usuario no interactúa con el navegador durante la formación de este estado, se entiende que el usuario mismo no querría participar en esto.

El segundo tipo de cambio de estado del navegador también lo inicia el sitio web, pero existe cierta interacción con el usuario que visitó este sitio web. Por ejemplo, un usuario instala un certificado de cliente o usa una contraseña para autorizar en el sitio, es decir, intenta ir a algún lado. Al mismo tiempo, el navegador responde muy útilmente: "¿Desea guardar esta contraseña?". Si el usuario responde "sí", entonces cosas como las contraseñas guardadas se pueden usar fuera del modo de navegación privada. Por lo tanto, en principio, no está claro cuál debería ser la política de privacidad en este caso. En la práctica, resulta que los navegadores permiten la existencia de cosas que han surgido en el modo de navegación privada, fuera de él, suponiendo que el usuario mismo elija la mejor opción para él, diciendo "sí" o "no". Si el usuario es lo suficientemente inteligente, entonces no guardará la contraseña de un sitio dudoso, porque alguien más puede usarla. Por lo tanto, puede haber un error del usuario, no un navegador, que puede conducir a la pérdida de privacidad.

Por lo tanto, no está claro qué política es la mejor, pero en la práctica este tipo de cambio de estado puede almacenarse fuera del modo de navegación privada.

El tercer tipo de cambio de estado es totalmente iniciado por el usuario. Estas son cosas como guardar marcadores o descargar archivos. Este estado es similar al anterior, porque el usuario está directamente involucrado en su creación. En este caso, el modo de visualización privada acepta que los cambios de estado de este tipo se guardan para uso futuro fuera de la visualización privada.



Además, hay algunos tipos de estados que no están asociados con ninguna sesión en particular. Por ejemplo, este es el estado de actualización del navegador en sí, es decir, un cambio en el archivo que representa el navegador. Los desarrolladores de navegadores creen que este cambio de estado es parte de un estado global que está disponible tanto para visualización pública como privada.

Al final, si observa esto cuidadosamente, notará que hay bastantes condiciones en las que es posible la fuga de datos fuera del modo de navegación privada, especialmente si hay interacción con el usuario. Me pregunto si este es el mejor compromiso entre seguridad y privacidad.



El artículo dice que es difícil evitar la posibilidad de que un atacante local pueda determinar si está utilizando el modo de navegación privada o no. Esto se afirma en el artículo de forma algo vaga. El hecho es que la naturaleza de las filtraciones de información puede decirle en qué modo de visualización, privada o pública, se producen. Por ejemplo, en Firefox y Chrome, cuando crea un marcador en modo de navegación privada, este marcador tiene un montón de metadatos asociados, como el tiempo dedicado a visitar el sitio y similares. En muchos casos, estos metadatos serán cero o cercanos a algún valor cero si este marcador se creó en modo de navegación privada. Entonces, alguien que luego administrará su computadora podrá ver la información de sus marcadores. Si ve que estos metadatos son cero, concluirá que este marcador probablemente se creó en modo de navegación privada.

Cuando hablamos de la seguridad del navegador, pensamos en qué están haciendo exactamente las personas con JavaScript, HTML o CSS, ¿qué pueden hacer con complementos o extensiones? En el contexto de la navegación privada, los complementos y extensiones son bastante interesantes, porque en la mayoría de los casos no están limitados a la misma política de origen, por ejemplo, pueden restringir el uso de cosas como JavaScript. Curiosamente, estas extensiones y complementos generalmente funcionan con privilegios muy altos. En términos generales, puede pensar en ellos como módulos del núcleo. Tienen alta autoridad, lo que le permite implementar nuevas funciones directamente dentro de los navegadores. Por lo tanto, esto es un poco problemático, ya que estos complementos y extensiones a menudo son desarrollados por alguien que no es el desarrollador real del navegador. Esto significa que alguien está tratando de hacer algo bueno y darle a su navegador propiedades útiles al agregarle un complemento o extensión. Pero este desarrollador externo puede no comprender completamente el contexto de seguridad en el que se realiza su extensión, por lo que dicha extensión puede no proporcionar la semántica del modo de navegación privada o proporcionarla de manera incorrecta.

, , , . , , . , , , HTML5 , , . , Java Flash. , 2D 3D-, - Java Flash. , Web GL , , , .

, IE , , - , HTML5. , YouTube, , , - HTML5-, . . , . , , , , .

, , , , 2010 , , ?
, . , , , HTML5.

, , . , . - , .

, 2014 Firefox, pdf.js, PDF-, HTML5-. , , .

, - PDF-, . PDF- , pdf.js , . . , , . , — , .

. , , , , , , , .

, : , , .



Firefox , 2011 . . , , , about:memory, , , , URL- , . , , , about:memory. , Firefox. , Firefox . , , about:memory , .

, URL-, , , . , . .
Bugzilla, , . , , , , , . , , . , . : « , , , .» : « , ».

, — HTML5 — , , . , , , .
, . , , . , .

, Magnet, -, . , , , URL- . - .

, Tor.


.

Gracias por quedarte con nosotros. ¿Te gustan nuestros artículos? ¿Quieres ver más materiales interesantes? Apóyenos haciendo un pedido o recomendándolo a sus amigos, un descuento del 30% para los usuarios de Habr en un análogo único de servidores de nivel de entrada que inventamos para usted: toda la verdad sobre VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps de $ 20 o cómo dividir el servidor? (las opciones están disponibles con RAID1 y RAID10, hasta 24 núcleos y hasta 40GB DDR4).

VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps hasta diciembre de forma gratuita al pagar por un período de seis meses, puede ordenar aquí .

Dell R730xd 2 veces más barato? Solo tenemos 2 x Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 TV desde $ 249 en los Países Bajos y los EE. UU. Lea sobre Cómo construir un edificio de infraestructura. clase utilizando servidores Dell R730xd E5-2650 v4 que cuestan 9,000 euros por un centavo?

Source: https://habr.com/ru/post/es430208/


All Articles