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 3Lección 2: "Control de ataques de hackers"
Parte 1 /
Parte 2 /
Parte 3Lección 3: “Desbordamientos del búfer: exploits y protección”
Parte 1 /
Parte 2 /
Parte 3Lección 4: “Separación de privilegios”
Parte 1 /
Parte 2 /
Parte 3Lección 5: “¿De dónde vienen los sistemas de seguridad?”
Parte 1 /
Parte 2Lección 6: “Oportunidades”
Parte 1 /
Parte 2 /
Parte 3Lección 7: “Sandbox de cliente nativo”
Parte 1 /
Parte 2 /
Parte 3Lección 8: "Modelo de seguridad de red"
Parte 1 /
Parte 2 /
Parte 3Lección 9: "Seguridad de aplicaciones web"
Parte 1 /
Parte 2 /
Parte 3Lección 10: “Ejecución simbólica”
Parte 1 /
Parte 2 /
Parte 3Lección 11: "Ur / Lenguaje de programación web"
Parte 1 /
Parte 2 /
Parte 3Lección 12: Seguridad de red
Parte 1 /
Parte 2 /
Parte 3Lección 13: "Protocolos de red"
Parte 1 /
Parte 2 /
Parte 3Lección 14: "SSL y HTTPS"
Parte 1 /
Parte 2 /
Parte 3Lección 15: "Software médico"
Parte 1 /
Parte 2 /
Parte 3Lección 16: "Ataques de canal lateral"
Parte 1 /
Parte 2 /
Parte 3Lección 17: "Autenticación de usuario"
Parte 1 /
Parte 2 /
Parte 3Lección 18: "Navegación privada en Internet"
Parte 1 /
Parte 2 /
Parte 3 Entonces comencemos. Bienvenido a otra conferencia fascinante sobre seguridad y por qué el mundo es tan terrible. Por lo tanto, hoy hablaremos sobre los modos de navegación privados, sobre los cuales muchos de ustedes probablemente tengan mucha experiencia personal. ¿Cuál es el propósito de la navegación privada? ¿Qué dicen los investigadores de seguridad sobre la privacidad?

En un sentido general, hablan sobre el siguiente objetivo: cualquier usuario en particular no debería ser diferente de un grupo de otros usuarios. En particular, la actividad de este usuario cuando navega por Internet no debe verse comprometida en términos de la actividad de otros usuarios. Entonces, como mencioné, hoy hablaremos sobre la privacidad en el contexto específico de una navegación privada por Internet.
De hecho, no existe una definición formal de lo que significa la navegación privada. Hay varias razones para esto. Una de ellas es que las aplicaciones web son cosas muy, muy complejas. Constantemente agregan nuevas características, como audio, contenido de video y otras cosas similares. Como resultado, lo que deberían ser los navegadores es un "objetivo móvil". Por lo tanto, el concepto de lo que pueden hacer los navegadores es bastante vago, como resultado de lo cual no siempre está claro qué información sobre un usuario en particular es capaz de filtrarse al dominio público.
Al final, lo que sucede es que, en la práctica, como para muchas otras cosas, la existencia y las tareas de los navegadores están determinadas por los estándares de vida. Por lo tanto, varios fabricantes de navegadores implementarán diversas funciones, especialmente con respecto a la navegación privada. Otros desarrolladores ven los resultados de los competidores y actualizan su propio navegador, de modo que las metas y objetivos del navegador cambian constantemente.

A medida que los usuarios confían cada vez más en la navegación privada de Internet, eventualmente encontrarán muchos errores de privacidad, de lo que hablaré en un minuto. En un sentido global, la navegación privada puede verse como un objetivo ambicioso. Pero a medida que la sociedad mejora, algunos aspectos de la navegación privada mejoran y otros empeoran.
Entonces, ¿qué entendemos por navegación privada en Internet? Esto es difícil de determinar, pero el artículo de la conferencia intenta formalizar este problema de dos maneras específicas. En primer lugar, habla de un hacker local en una red privada, una persona que tomará posesión de su computadora después de que termine la navegación privada. Y esta persona quiere saber qué sitios visitó en modo de navegación privada.
El artículo también habla sobre los cibercriminales que controlan los sitios que visita. Este atacante puede intentar descubrir que usted es una persona específica, John o Jane, y no un usuario impersonal sobre el cual el sitio web no puede proporcionar ninguna información. Por lo tanto, examinaremos cada uno de estos ataques en detalle. Baste decir que si un atacante puede organizar simultáneamente ambos ataques, tanto locales como de Internet, esto mejorará enormemente su capacidad de revelar su identidad.
Por ejemplo, un atacante local que puede conocer su dirección IP puede averiguar si esta dirección IP en particular está en los registros del sitio. Por lo tanto, desde un punto de vista de seguridad, es muy útil considerar estos ataques locales y web, primero individualmente y luego en forma combinada.
Veamos el primer tipo de atacante: un atacante local. Suponga que este hacker controlará la computadora del usuario después del final de la sesión de comunicación de red. Quiero decir que la navegación privada de Internet se ha completado, el usuario ha dejado de usar el navegador y no está en la computadora. Después de eso, el hacker toma el control de la computadora e intenta averiguar qué sucedió antes. Por lo tanto, el propósito de la seguridad es evitar que un atacante entienda qué sitios web visitó el usuario durante la navegación privada.
Una razón importante por la que consideramos un ataque después del final de una sesión de actividad en Internet es la siguiente. Si suponemos que un atacante puede controlar la computadora antes de la visualización privada, entonces el "juego ha terminado", porque en este caso el hacker puede instalar un interceptor de teclado, violar la integridad del navegador o del sistema operativo. Por lo tanto, no prestaremos atención a ese atacante. Tenga en cuenta que, por la misma razón, no estamos tratando de garantizar la privacidad del usuario después de que el atacante haya controlado su computadora, ya que al tomar el control de la computadora, el hacker podrá hacer lo que quiera con él, al menos instalar el mismo interceptor de teclado. Por lo tanto, en principio, tan pronto como el usuario abandona la computadora, no consideramos directamente el concepto de privacidad.
Aquí puede introducir otro objetivo que desea lograr: trate de ocultar al atacante que el usuario generalmente usa el modo de navegación privada.

El artículo de la conferencia dice que es muy difícil. Esta propiedad a menudo se llama "negación plausible". Por ejemplo, su jefe se le acerca después de una sesión de navegación privada y le dice: "¿navegó por mylittlepony.com?" Y responde que no, que no fue allí. Y, por supuesto, no utilicé el modo de navegación privada para ocultar el hecho de que estaba navegando por mylittlepony.com. Entonces, como dije, la propiedad de la negación plausible es difícil de asegurar, luego daré razones específicas. Por lo tanto, consideraremos principalmente solo un atacante local.
Podríamos pensar en la pregunta, ¿cuál es el estado constante del lado del cliente que contribuye a las fugas durante una sesión de navegación privada? Por persistencia, quiero decir que algunos datos se almacenarán en un disco duro local, SSD local o algo similar.

Entonces, ¿qué condiciones operativas del sistema están plagadas de fugas de datos si no fuéramos lo suficientemente cuidadosos al ver en privado? En primer lugar, este es el estado de accesibilidad de los componentes de JavaScript, como las cookies y el almacenamiento DOM. Otra cosa que preocupa a la gente cuando navega en privado es el caché del navegador. Después de todo, no desea que alguien encuentre en la memoria caché interna algunas imágenes o archivos HTML de sitios web cuyas visitas desea ocultar a otras personas.
Otra cosa importante es la historia de los sitios que visitó. Puede arruinar la relación con otra persona cuando inicia sesión en el navegador, comienza a escribir algo en la barra de direcciones e interrumpe vergonzosamente lo que comenzó, ya que el historial de sus vistas le dice automáticamente algo extremadamente indecente. Esta es una de las razones por las que no desea que esta información se filtre fuera de su sesión de navegación privada.
También puede pensar en ver estados de configuración y cosas como certificados de clientes y marcadores de página. Tal vez fue a un sitio específico, y el navegador ofrece guardar sus contraseñas en un archivo de configuración para ver este sitio, y no desea filtrarlas.
El quinto son los archivos descargados. Esto es interesante porque se requiere una acción explícita del usuario para descargar el archivo. Puede usar el archivo descargado durante la navegación privada al abrir el navegador, pero también es posible que use el archivo descargado después de terminar de trabajar con el navegador fuera del modo de navegación privada. Hablaremos de esto un poco más tarde.
Y finalmente, en el modo de navegación privada, puede instalar nuevos complementos o extensiones para el navegador. Este es otro tipo de estado cuya filtración más allá de la navegación privada no es deseable.

Por lo tanto, los modos de navegación actuales generalmente intentan evitar la fuga de datos durante el primer, segundo y tercer estado de una sesión de navegación privada. Es decir, no debería existir la posibilidad de fuga de cookies o datos DOM. Todo lo que almacene en caché durante una sesión de navegación privada debe eliminarse. No debe mantener un historial de URL visitadas.
Como regla general, los datos del cuarto, quinto y sexto estado del modo de visualización privado pueden filtrarse fuera de la sesión. Hay razones útiles y perjudiciales por las cuales esto puede ocurrir. Más adelante veremos que si se permite una fuga, esto aumentará radicalmente la superficie de la amenaza de fugas de toda la información privada. Por lo tanto, es bastante difícil discutir exactamente qué propiedades de seguridad están destinadas a un modo de visualización privado.
Lo siguiente, de lo que hablaremos muy brevemente, es la actividad de la red durante el modo de navegación privada. Lo interesante es que incluso si brindamos la protección de todos estos 6 estados, evitando la fuga de información, el hecho mismo de que emita paquetes de red al conectarse es una prueba de lo que hizo. Imagine que cuando desea ir a foo.com, su computadora debe emitir una consulta DNS para foo.com. Por lo tanto, incluso si no deja rastros de la actividad de los seis estados mencionados anteriormente, de todos modos, todavía habrá registros en el caché DNS local que intentó contactar con el host foo.com. Esto es muy interesante Puede pensar que los navegadores de alguna manera pueden intentar borrar el caché DNS después de completar una sesión de navegación privada, pero en la práctica esto es difícil de hacer porque muchos sistemas requieren derechos de administrador para hacerlo. Aquí surge una contradicción, porque lo más probable es que no desee que el navegador tenga privilegios de root, ya que nos aseguramos de que los navegadores no sean lo suficientemente confiables. Además, los comandos de limpieza de caché DNS están diseñados para la actividad de un usuario específico, no borran todo el caché, ¿qué le gustaría para el modo de navegación privada? Necesitará precisión "quirúrgica" para deshacerse de la mención de visitar foo.com y otros sitios en modo de navegación privada sin afectar otras cosas. En la práctica, lidiar con esto es bastante difícil.
Y otra cosa difícil que menciona el artículo son los artefactos de la RAM, o RAM. La idea principal aquí es que en el modo de navegación privada, el navegador privado debe almacenar algo en la memoria. Incluso si el modo de navegación privada no requiere la escritura directa de datos en el disco o la lectura de datos desde el disco, la RAM proporciona el navegador. Por ejemplo, la pestaña que está viendo puede permanecer en el archivo de la página, y esta información puede reflejarse en el archivo de hibernación de la notebook. Por lo tanto, si este estado se refleja en el almacenamiento persistente, luego de que se complete la sesión de navegación privada, el atacante puede encontrar JavaScrip o código HTML que se reflejó en el disco en el archivo de página.
Tendremos una pequeña demostración de cómo puede funcionar esto. En la pantalla, verá la pestaña de navegación privada con la que voy a ir al sitio del grupo de programación PDOS del laboratorio de informática de nuestro instituto CSAIL.

\
A continuación, usaré este divertido comando llamado gcore para almacenar una instantánea de esta página abierta de PDOS.

Luego, uso un poco de magia para que mi terminal tome una instantánea de la memoria, a veces toma un poco de tiempo.

Esto es lo que está sucediendo aquí: el archivo de imagen principal de esta vista privada se genera aquí. Ahora vamos a mirar dentro de esta imagen y ver si podemos encontrar alguna mención de pdos.

Curiosamente, vemos un montón de instancias de cadenas pdos con diferentes prefijos en esta imagen de memoria para el modo de navegación privada.

Si miramos más allá, veremos cosas como URL completas y códigos HTML.

El punto es que si pudiéramos encontrar todo esto en la memoria de la página, es decir, algunos datos de esta página se colocaron en el archivo de la página en el disco, entonces el atacante podría ejecutar fácilmente estas líneas. Puede hacer lo que acabo de hacer con el archivo en esta página e intentar averiguar qué sitios visitó en modo de navegación privada. ¿Eso está claro?
En principio, el problema aquí es que el modo de navegación privada no intenta "confundir" la RAM o de alguna manera encriptarla. Esto parece una cosa bastante fundamental, porque en algún momento, el procesador debe realizar una tarea basada en datos de texto abierto. Por lo tanto, esta circunstancia puede convertirse en un gran problema. Alguien tiene alguna pregunta?
Estudiante: esto es exactamente lo que no espero de mi navegador, porque los navegadores deben garantizar la privacidad de la navegación privada. Por ejemplo, si realiza algunas compras, un amigo que se haya sentado en su computadora no podrá verlas. ¿Podría contarnos un poco sobre qué garantías dan los autores del artículo y si describen en el artículo qué se puede cambiar en los navegadores para garantizar dicha confidencialidad?
Profesor: sí, es muy interesante. Hay una cosa a la que puede prestar atención: cuando abre la pestaña de navegación privada, por regla general, aparece un mensaje de texto frente a usted: "bienvenido al modo de incógnito". Este modo lo ayudará a no dejar rastros si varios usuarios están trabajando en la computadora, y su amigo, que se ha sentado después de usted en la computadora, no podrá familiarizarse con el historial de sus vistas, cookies y datos de llenado de formularios. Sin embargo, el modo de incógnito no ayudará si alguien detrás de usted está parado con un palo de goma y lo va a noquear tan pronto como ingrese al sitio.
Por lo tanto, los propios fabricantes evitan especificar garantías con respecto a la confidencialidad de los datos cuando utilizan sus navegadores.
De hecho, después del incidente con Snowden, muchos navegadores cambiaron este mensaje emergente porque realmente querían dejar en claro al usuario que no podían protegerlo de la intervención de fuerzas como la NSA o algo así.
En resumen, ¿qué garantías ofrecen? En la práctica, solo proporcionan la vulnerabilidad que acaba de mencionar. Es decir, alguien que no puede ver lo que está haciendo ahora podrá ver lo que estaba haciendo. Suponemos que un laico no puede ejecutar líneas en un archivo de página o hacer algo similar. Sin embargo, hay dos problemas. Uno de los problemas es que los navegadores son tan complejos que a menudo ni siquiera protegen contra las acciones de los laicos.
Puedo dar un ejemplo personal. Varias veces, cuando vi divertidos anuncios publicitarios de Huffington Post en la página, como, "¡mira cómo tocar a estos cachorros ayuda a otros cachorros a bajar las escaleras!", A veces lo atrapaba y hacía clic en él debido a mi debilidad. Pero como no quería que las personas conocieran mis debilidades, a veces lo hacía en modo de navegación privada. Sin embargo, sucedió que a veces las URL de estas piezas publicitarias se filtraron en el historial de URL en el modo de navegador público normal para el que este material no estaba destinado. Por lo tanto, uno de los problemas es que a veces estos navegadores no brindan protección contra ataques no profesionales.
En segundo lugar, creo que hay muchas personas que, especialmente después de la historia de Snowden, quisieran ver una mayor protección de la privacidad de la navegación privada. Quisieran protección contra el ataque de artefactos RAM, incluso si técnicamente no pueden formular correctamente su deseo.
Por lo tanto, una de las cosas que hice mientras estudiaba en este instituto fue un estudio en el campo de mejorar la protección en el modo de visualización privada, para que podamos hablar sobre ello. , , , , . , … ?
: , , , . , ?
: . . , . , , . , , .
, , . , , . , , , , , . , , , , .
. , memclear. , , « ».

read_secret? , , , .

, . , , , memset , , . , , , : « ».

, , ? , .

, . , «», , , . gcore, memclear, .

, , grep .

, , , , , , . , ? , .
, / , . , , , , , C /, , . , memset , , , . , , , , / - .

, . , , , , . ? , , , . , memset memclear, . , , , . ? , , SQL.
- - RAM , , , .
, RAM, , , -, . , , . -, - , , . , , , , . .
. , , , , malloc . , , RAM. , , , – , - . , , .
. / , . , .
? , . , . . , Microsoft Word , Word . , Word, .
, , . , Linux, , , 4- . , . , Linux , , , - .
, — , , .
- SSD. . , SSD, , . , .

, , SSD, : «, , , ».
. , , .
, , , - «» .
Entonces, ¿cómo podemos solucionar estos problemas con la vida útil de los datos? Ya hemos discutido una solución, que es restablecer la memoria después de haber completado el proceso. Por lo tanto, cada vez que liberas algo, simplemente escribes un montón de ceros o algunas cosas al azar para esencialmente ocultar los datos antiguos de alguien que podría venir después de ti.27:05 minCurso MIT "Seguridad de sistemas informáticos". Lección 18: Navegación privada en Internet, Parte 2La versión completa del curso está disponible aquí .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?