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 2 Profesor Nikolai Zeldovich: buenas tardes, quiero presentarles a nuestro invitado de iSec Partners, que le dirá cuál es la seguridad de los sistemas informáticos en el mundo real.
Paul Yang: buenas tardes, mi nombre es Paul Yang, me gradué del MIT en 2004, recibí una maestría en ingeniería y ciencias de la computación, y hasta 2010 trabajé en Oracle. Ahora trabajo como director técnico en iSec Partners. Antes, ni siquiera sabía que tales compañías existen. Nuestra empresa se dedica a la consultoría en el campo de la seguridad informática, las pruebas de penetración (pentesting), la seguridad de la red, estudiamos programas de piratas informáticos, encontramos diversas vulnerabilidades y las eliminamos.

Decidí contarte sobre esto porque sé que muchos estudiantes de tu especialización quieren hacer una carrera en el campo de la seguridad de los sistemas informáticos. El resumen de la conferencia de hoy se ve así:
- ¿Qué son los errores de seguridad?
- relaciones de confianza;
- ejemplos de errores encontrados en la vida real;
- Operación aurora
- Stuxnet
- Me gusta tratar con problemas de seguridad, ¿qué debo hacer?
Veamos qué piensan los investigadores de las vulnerabilidades. Quiero que entiendas completamente de dónde vino la vulnerabilidad después de que la descubriste. Es decir, debes encontrar la causa. Es importante comprender cómo las vulnerabilidades afectan el sistema y cómo interactúan con sus otros componentes.
Entonces, comencemos mirando qué son los errores de seguridad. Pero antes de comenzar a hablar de esto, primero definimos qué significa el concepto de seguridad en sí.
Ivan Arch dijo: "Un sistema es seguro si se comporta exactamente como se pretende y no hace nada más". Los sistemas se vuelven cada vez más complejos. Si hablamos de sistemas operativos, ¿quién puede decir para qué están destinados y ¿Qué permiten exactamente?
Por lo tanto, es necesario estudiar todos los tipos posibles de ataques. Sabiendo qué ataques existen, se pueden desarrollar objetivos clave de seguridad. Por lo tanto, los primeros pasos en el campo de la seguridad deberían ser la definición de un modelo de seguridad y la definición de un modelo de amenaza.
Como ejemplo, considere cómo la TSA determina el modelo de amenaza. El objetivo de seguridad del Aeropuerto Internacional Logan es evitar que los artículos prohibidos, como la espuma de afeitar, ingresen a la aeronave. El modelo de amenaza consta de dos puntos:
- ¿Cuáles son las formas posibles para que los artículos prohibidos ingresen al aeropuerto?
- ¿Dónde están los "puntos de entrada" de estas cosas al aeropuerto?
¿Cómo puede traer artículos prohibidos más allá de la seguridad? ¿Cómo intentas atacar su sistema de seguridad? Puede llevarlos donde no haya cheque, utilizando los privilegios del pasajero VIP, ocultarlos entre otras cosas o utilizar el servicio de otras aerolíneas para entregar artículos prohibidos al aeropuerto.
Siempre me sorprendió el hecho de que en Logan el equipaje que llega desde otros aeropuertos no es visible en los monitores. Es decir, puede enviar una sustancia u objeto prohibido desde otro aeropuerto, volará a Logan y allí lo recibirá. Por lo tanto, los aeropuertos con un sistema de seguridad menos estricto son amenazas para el sistema de seguridad avanzado de Logan, y no se puede hacer nada al respecto. Por lo tanto, un momento crítico en la construcción de un modelo de amenaza es comprender a qué se opone específicamente. Observo que esto no molesta a muchos ingenieros correctamente.
Los ingenieros crean errores de seguridad y los encuentran ellos mismos. El objetivo de los ingenieros es encontrar tantos defectos como sea posible y minimizar la posibilidad de causar daños al sistema.
El enfoque para lograr este objetivo debe ser muy completo: es necesario cubrir todos los parámetros del sistema de seguridad, o al menos encontrar elementos que sean fácilmente accesibles para los delincuentes.
Las formas de lograr el objetivo son estudiar el código fuente, usar herramientas para depurar la aplicación e ingeniería. Además, se necesita dinero para herramientas y personal.
Por lo general, los desarrolladores de software se preocupan por la funcionalidad y las capacidades de su producto, en lugar de su seguridad. Todos compran software por sus capacidades y no por su seguridad. Por lo tanto, la seguridad siempre permanece en segundo lugar y los desarrolladores comienzan a cuidarla solo después de que el producto sea dañado por intrusos. Por lo general, los ingenieros solo ven una pequeña parte del "mosaico", no prestan atención a los detalles técnicos. ¿Puede responder a la pregunta cuántas líneas de código contienen Linux 2.6.32, Windows NT4 y Adobe Acrobat?
Las respuestas correctas en el orden de los programas de listado son de 8 a 12.6 millones de líneas, 11-12 millones y 15 millones. De hecho, suele sorprender a todos que Acrobat contiene más líneas de código de programa que Linux y Windows. Por lo tanto, incluso el software que consideramos simple es extremadamente complejo en realidad.
Las siguientes categorías de personas están interesadas en problemas de seguridad:
- ingenieros
- criminales
- investigadores de seguridad;
- probadores de penetración (pentesters);
- Gobiernos
- hacktivistas;
- representantes de la comunidad científica.
Solo identifiqué 6 categorías, pero probablemente más. Considere lo que interesa a la primera categoría de personas: los delincuentes.

Su objetivo son los recursos con los que puede tomar posesión del dinero de otras personas (botnet, CC # s, correo no deseado de "cartas de felicidad") y al mismo tiempo no entrar en la cárcel. Para lograr el objetivo, utilizan las últimas vulnerabilidades de hackers que aprovechan las vulnerabilidades de software. No necesitan privilegios de acceso a datos, sino que simplemente los roban usando las vulnerabilidades dejadas por los desarrolladores. Muy a menudo, las tarjetas de crédito y todo lo relacionado con ellas son objeto de ataque. Por lo tanto, los delincuentes obtienen acceso al dinero de otras personas con la ayuda del dinero, comprando datos de piratas informáticos o utilizando el método de prueba Black Box. Este es un método de prueba para software de acuerdo con especificaciones y requisitos funcionales, sin utilizar la estructura interna del código o el acceso a la base de datos. En este caso, el código fuente se desarma en componentes, lo que le permite detectar lagunas en la protección del programa.

Esta técnica le permite penetrar en la base de datos de tarjetas de crédito, "pirateando" los sistemas de pago de varias tiendas.
La siguiente categoría son los investigadores voluntarios de seguridad, un cierto tipo de hacker.

Su objetivo es hacer que el público los conozca, publicar sobre ellos en periódicos y amigos para respetarlos o admirarlos. Su ocupación no requiere minuciosidad, nadie te avergonzará si no has encontrado una vulnerabilidad o formas de superarla. Obtienen acceso a los sistemas de seguridad a través de herramientas de aficionados y contactos casuales con ingenieros que trabajan en grandes empresas de seguridad o desarrollan software, y los abogados a menudo sirven como fuente de información.
La tercera categoría que es más útil en seguridad son los probadores de penetración (pentesters).

El significado de su trabajo es garantizar la seguridad de los clientes y usuarios del software. Encuentran las vulnerabilidades que los delincuentes quieren explotar antes de ser descubiertos por los delincuentes, y ayudan a los desarrolladores a eliminar estas vulnerabilidades.
La minuciosidad de su trabajo consiste en cubrir todos los detalles y matices del sistema, en encontrar lugares públicos inseguros y vulnerabilidades que estén sujetos a la mayor interferencia, no reparados o pirateados.
Para hacer este tipo de trabajo, necesitan acceso a los desarrolladores, acceso al código fuente y todo tipo de permisos.
Los siguientes son los gobiernos de diferentes países. La seguridad los preocupa en términos de ataques, espionaje y protección de su propio país de tales acciones enemigas. Explotaciones confiables que pueden detectar y explotar vulnerabilidades proporcionan su trabajo, y para obtener acceso a los sistemas de seguridad utilizan dinero, talento y tiempo que pueden comprar por dinero.
El penúltimo grupo son los hacktivistas. Estos son piratas informáticos anónimos, su actividad es una mezcla de piratería y protestas contra la violación del derecho a intercambiar libremente cualquier información. Estos son hackers socialmente orientados, generalmente pirateando sistemas no por el bien de su enriquecimiento.

Su objetivo es hacer "algo bueno", en su comprensión de la palabra, y no ir a la cárcel por ello. A veces estoy de acuerdo con lo que hacen, a veces no.
Utilizan las hazañas más modernas y penetran en los sistemas de seguridad gracias a su propio talento y una amplia variedad de "objetivos" para aplicar sus habilidades. Explotan todas las vulnerabilidades posibles, y si puede robar números de tarjetas de crédito, los robarán.
El último grupo es representantes de la ciencia. Este es un campo de actividad interesante en el que trabaja el profesor Nikolai Zeldovich. Explora las capacidades a largo plazo y los problemas funcionales de los programas. La gente de ciencia encuentra fallas comunes y otros problemas comunes, por ejemplo, errores en el uso de firewalls o encriptación, tratando de hacer que el software sea más seguro. Por lo general, tienen suficiente tiempo y talento para su investigación, y la profundidad del enfoque garantiza la minuciosidad de su trabajo.
Obtienen acceso a los sistemas de seguridad a través de la creación de cosas nuevas y Black Box. Existe una diferencia entre los desarrollos teóricos y su implementación en la práctica, pero en su mayor parte actúan de la misma manera que los gobiernos nacionales, es decir, se dedican a proyectos muy ambiciosos.
Todos estos grupos de personas usan técnicas similares y buscan lo mismo: sistemas vulnerables. Si tienen acceso, revisan el código fuente, usan entrevistas con ingenieros o realizan pruebas en un entorno controlado. Si no hay acceso, realizan pruebas de Black Box, participan en tecnología fuzzing (por ejemplo, ingresan datos aleatorios y ven cómo reacciona el sistema), hacen copias técnicas de Ingeniería inversa (usando archivos de código binario) y realizan ingeniería social.
Muchos sistemas de software complejos están sujetos a borrosidad, por ejemplo, el mismo
Acrobat Reader : aquí se verifica la posibilidad de desbordamiento del búfer con la ayuda de documentos voluminosos especialmente creados en formato .pdf. Dicho documento se "lleva" a "Acrobat" para verificar si es capaz de provocar un bloqueo del sistema.
La ingeniería social es la forma más fácil y rápida de encontrar problemas de seguridad pirateando cuentas en redes sociales.
Entonces, profundicemos en el tema de la conferencia y veamos las vulnerabilidades que estamos buscando.

Los ingenieros a menudo cometen errores sobre cómo deberían funcionar los sistemas y cómo funcionarán después de la creación. Un ejemplo de un error catastrófico en el software que condujo a la muerte de personas es el programa para el aparato de radioterapia
Therac-25 .
El funcionamiento incorrecto del sistema de seguridad del dispositivo llevó a que al menos 6 personas recibieran grandes dosis de radiación, dos personas mortales. Le contaré sobre esto en general, sin mencionar los detalles y principios operativos de este irradiador.
El software de este dispositivo médico proporcionó dos modos de uso del irradiador. La primera
imagen de rayos X , el modo de dispersión de electrones, en el que la exposición a la radiación era mínima, no implicaba el uso de una pantalla de enfoque protectora. El segundo modo de
tratamiento de radiación proporcionó un poderoso modo de irradiación en el que el área afectada se expuso a un haz dirigido de radiación radiactiva con una potencia de 25 MeV. Para esto, se colocó una pantalla protectora de enfoque entre el paciente y el emisor.
La siguiente diapositiva muestra cómo se veía el código del programa que controla el funcionamiento del firewall. Verá que en una línea había datos de un solo byte que indicaban si instalar o no una pantalla protectora en su lugar. Si este valor era 1, se instaló la pantalla; si era 0, se eliminó la pantalla. El problema era que dentro del programa, al ingresar un parámetro igual a 0, por ejemplo, si el médico ajustaba manualmente la potencia de radiación a 0, el valor de la radiación se dividía por 0. Dado que la división por 0 es una operación no válida, el búfer se desbordó, el programa se bloqueó y la potencia de radiación asumió automáticamente el valor máximo posible en ausencia de una pantalla protectora.
Aquí, los desarrolladores utilizaron la suposición errónea de que en el modo de Tratamiento de Radiación el parámetro para usar la pantalla protectora siempre tomará un valor distinto de cero, nunca se producirán desbordamientos del búfer y el programa nunca fallará.
Como resultado de esta suposición incorrecta, las personas murieron, porque durante una sesión sin pantalla en el modo de Tratamiento de Radiación, recibieron una quemadura de radiación fatal.
Al enterarse de este caso, mi compañero de clase dijo: "Llegué a la conclusión de que nunca escribiré software médico".
Los requisitos previos incorrectos para el desarrollo de software pueden ser muy perjudiciales, por ejemplo, el sistema de cuentas amazon.com.Esta tienda en línea le permite:
- Puede agregar una tarjeta de crédito o un buzón de correo electrónico con un nombre y una dirección física a su cuenta;
- Amazon le brinda la posibilidad de cambiar la contraseña de su cuenta a través de un buzón registrado;
- Amazon le permite ver los últimos 4 dígitos de un número de tarjeta de crédito;
- Apple le da la opción de iniciar sesión en su cuenta utilizando los últimos 4 dígitos de su número de tarjeta de crédito;
- Gmail le permite cambiar su cuenta de Apple a través de su cuenta de Twitter.
¿Qué suposiciones erróneas hicieron posible esta cadena viciosa? Políticas de seguridad incorrectas expresadas en los párrafos primero y cuarto. Esto lleva a la conclusión: los componentes que afectan su sistema a menudo están fuera de su atención (Facebook, Amazon, Apple). Por lo tanto, un atacante puede tomar el control de la información de su tarjeta de crédito a través de una cuenta en amazon.com, utilizando las capacidades de estos tres sistemas independientes. Esto puede considerarse un modelo de amenaza completo.
Por lo tanto, responda la pregunta: ¿la contraseña de su buzón personal es más confiable o más débil que la contraseña que utiliza para la banca en línea?
Veo cuántas personas levantaron la mano. Ahora elija a aquellos que tienen una contraseña bancaria más segura que una contraseña de correo. Veo que hay más. Y esto está mal.
La gente cree que la banca en línea es un asunto serio, y aquí necesitamos una contraseña más confiable. Pero se olvidan de que el acceso a la cuenta de pago se realiza a través de un buzón de correo electrónico. El correo debe tener la contraseña más confiable, y no al revés.
Si desea convertirse en un ingeniero que desarrolle sistemas informáticos, debe pensar como piensa un investigador de seguridad:
- ¿Qué requisitos previos se deben utilizar para garantizar la seguridad al desarrollar un diseño de sistema?
- ¿Qué suposiciones están mal?
- ¿Qué puedes violar si la premisa resultó ser incorrecta?
El último punto ayuda a diseñar el sistema de tal manera que incluso si el sistema falla, su núcleo estará protegido.
Administrar la memoria es difícil.

Como ejemplo, le daré un diagrama simplificado de un protocolo de comunicación seguro:
- evitar revisar o restablecer el contacto;
- Alice: "¡Bob, si estás aquí, di boo!"
- Bob: "¡Boo!"
- Como resultado, Alice y Bob creen que se conocen muy bien.
Técnicamente, este protocolo se ve así:
- Alice envía un paquete que contiene ping;
- un paquete tiene una cierta longitud de datos;
- Bob devuelve un paquete de la misma longitud.
En este caso, Bob analiza los datos enviados por Alice:

Ver la longitud de los datos y su ubicación en el búfer. Luego prepara una respuesta para Alice, agregando 2 bytes a la longitud de la solicitud de Alice, copia la nueva longitud de la solicitud de Alice en respuesta y se la devuelve:

¿Ves algún problema aquí? ¿Dónde está la vulnerabilidad aquí?

Está encerrado en la segunda y cuarta líneas de la respuesta de Bob. El tamaño de los datos transmitidos por el usuario puede no coincidir con el tamaño real de los datos.
El protocolo de establecimiento de
TSL utiliza el
protocolo de cifrado
SSL abierto. Así es como funciona aproximadamente el 60% de los servidores disponibles en Internet. Bob, es decir, el servidor, nunca verifica la longitud real de los datos recibidos. Debido a que el servidor agrega 2 bytes, el usuario puede leer aproximadamente 64 KB de datos de memoria del servidor, incluidas las claves privadas.
Ahora que hemos encontrado este error, ¿cómo podemos solucionarlo? Cuanto más sepa la gente al respecto, mayor será la filtración de información. Por lo tanto, tan pronto como se divulgue información sobre la vulnerabilidad, la aprovecharán de inmediato. Por lo tanto, para la protección es necesario corregir la situación lo antes posible.
A veces, las empresas recurren a nosotros y dicen que han descubierto tal vulnerabilidad y cómo se puede solucionar. Les contestamos: "De ninguna manera, solo necesita cambiar de inmediato las claves de cifrado". Por lo tanto, es imprescindible controlar las diferencias que se producen en
Open SSL durante el intercambio de datos.
,
TSL , , .
, , , « », , .
, . , .

2014
Yahoo , . Java-, 6 .
, java-,
Magnitude XSS .
Magnitude « »
Yahoo , - 30 2013 3 2014 27000 . .
java- «click-to-play» Chrome.
Confused Deputy – . .
Cross-Site Request Forgery (
CSRF XSRF ), « ». , .
Microsoft . ,
Cashier as a Service . , «foo…», , .
: ,
CaaS -. . .

, - , . , $10
CaaS 123. «» : « $10 TxID:123».
CaaS : « ». : «». .
- , ? ? , , ! 3 4, , , . , , – $10 $1, .

, , - , . : , , .
.
, . , «» «», . , , , , . , .
, . , . , . , , . - . , .
.

, , .
Cloud To Butt Plus Chrome . .
, , ,
java- Flash-player , . .
www.isecpartners.com , , , .
, -, - . «» .
, ,
Google , . . , . : «, $10000»! , -, . , , . , Chrome 2014 , .
, . , :
. , ? .
1password LastPass Mask Me ? .
1password , «»
HTTP . , .
LastPass ,
Mask Me ,
1password . , , , .
, , . :
- HTTP HTTPS;
- iframes;
- - ;
- ();
- .
HTTP HTTPS . , .
SSL stripping «» .
,
https:// example.com http:// example.com . , .
Mask Mees vulnerable porque usa no solo autocompletar, sino también enviar un formulario completo, que ayudará a un atacante a robar su contraseña.33:35 minContinuación:Curso MIT "Seguridad de sistemas informáticos". Lección 5: "De dónde vienen los errores del sistema de seguridad", 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).
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 Estados Unidos! 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?