Compartir a través de


Este artículo proviene de un motor de traducción automática.

Pinceladas sobre seguridad

Una conversación Follow-on sobre modelado de amenazas

Michael Howard

El número de mayo de 2009 de MSDN Magazine incluye un artículo titulado "Una conversación acerca Threat Modeling"revela una conversación entre Paige, un neófito joven de seguridad, Michael, un intruso jaded algo de seguridad. Este mes echaremos hasta la conversación donde lo dejó.

Escena se

Cocina pequeña, junto a la coffeepot.

Paige: Última vez que se cumplen, ha realizado un buen vistazo a mi modelo de amenazas, pero que dicho que debería cubrir algunos problemas de diseño de cifrado y seguro en una fecha posterior. Bueno, Bienvenido a esa fecha posterior.

Michael: Por favor, ¿puedo obtener un café primero?

Esperando una respuesta no, sí vierte los Michael un café enorme.

Paige: Er, seguro.

Michael: Avisarme nuevo ¿qué es la aplicación.

Paige: Se trata de un producto que permite a los usuarios almacenar datos en nuestros servidores. Es un fragmento de código de cliente que inserta los bits en un servidor provisto para ese usuario. Este código puede cargar archivos desde el usuario a nuestros servicios de fondo a través del servidor Web y los archivos se almacenan en el sistema de archivos junto con metadatos de archivo almacenados en SQL Server para búsqueda rápida. Finalmente se pueden almacenar miles de millones de archivos. Los dos entornos principales son equipos unidos a un dominio y los equipos unidos a Internet.

Michael: AH, eso es, recuerdo ahora. Código mucho, tan poco tiempo. De acuerdo, volvamos a su modelo de amenazas para ver qué parte nos preocupa. ¿Dispone de los DFD--el diagrama de flujo de datos?

Los dos recorrido a través para asistencia al cliente de Paige. Inicia sesión con su tarjeta inteligente y carga la herramienta de modelado de amenazas de SDL.

Paige: Y aquí está.

Michael busca sobre el diagrama.

Michael: ¿Es el diagrama de nivel 1, derecho? ¿Está un nivel más detallado sea el diagrama de contexto?

Paige: Yup. También tenemos un diagrama de nivel 2, pero no creo que necesitamos vaya profundidad todavía.

Michael: Tiene razón, esto es perfecto. Si es necesario más precisión a medida que avanzo a través esto, se puede mirar el diagrama de nivel 2.

Paige: Por cierto, no llamamos ellos DFD ya.

Michael: Er, Aceptar! ¿Lo que se denomina, a continuación?

Paige: Diagramas de aplicaciones.

Michael: Lo que flota el barco se s'pose. Vamos a usar lápices de cera siguiente. Aceptar, vuelva al diagrama. ¿Por lo que el usuario realiza una solicitud de la aplicación cliente para cargar o descargar archivos a o desde el servidor y el servidor continúa que fin datos en el sistema de archivos en el reverso, junto con algunos metadatos acerca de los archivos que se almacenan en SQL Server?

Paige: Eso es un uso;de hecho, es probable que el escenario principal. Por supuesto, el administrador necesita configurar, configurar y supervisar la aplicación;eso lo que hace la herramienta de administración.

Michael: Vamos a centrarse en ese escenario principal, a continuación.

Escena II

Michael es vista intently en el diagrama de aplicaciones.

Michael: Vamos a inicie examinando cada elemento en el escenario principal y se le deletrear cada una de las amenazas STRIDE.

Paige: ¿STRIDE? Avisarme de nuevo.

Michael: La suplantación, alteración, repudio, revelación de información, denegación de servicio, elevación de privilegios.

Michael inicia la escritura de rápidamente en un trozo de papel.

Michael: Eche un vistazo a esta lista:

Paige: ¿No todos ellos en la herramienta de modelado de amenazas?

Michael: Sí, pero desea mostrarle cómo la herramienta se llega a la lista. Por cierto, no es necesario utilizar el herramienta de modelado de amenazas para ser compatible para SDL, siempre que el modelo de amenazas es completa y exacta. Básicamente, cada elemento está sujeta a un conjunto específico de amenazas. Creo que se puede trabajar en la lista.

Paige: ¿Sí, se obtiene, pero no le falta algo? ¿Todos esos flujos de datos entre los distintos elementos de aplicación?

Michael: Yup, pero lo hice que a propósito, ya que realmente no deseo centrarse los aún--analizamos ellos en detalle última vez.

Paige: ¿Hicimos?

Michael: Sí. Examine el modelo de amenazas.

Paige busca a través de la herramienta de modelado de amenazas de SDL

Paige: ¿AH, veo, que es donde tratamos utiliza SSL/TLS para corregir la alteración y amenazas de divulgación de información a los datos fluyen entre los procesos cliente y servidor, derecho?

Michael: Buena! Ésta es una pregunta. ¿Los datos que se mueve del usuario al servidor y, a continuación, en sistema de archivo del servidor--son que los datos confidenciales?

Paige: Se pide que última vez. Sí, es posible.

Michael: Perdón-AH.

Paige: ¿Qué? ¿Los datos se cifran mediante SSL/TLS, por lo que estamos fino, derecha?

Michael: No, en absoluto. SSL/TLS mitiga la amenaza de divulgación de información para los datos mientras que fluye entre los dos procesos--el proceso de cliente 2.0 y el proceso de Server 3.0. Pero después de los datos deja que proteger el túnel, los datos están en texto sin cifrar y escribe datos en texto sin cifrar al sistema de archivos.

Paige: Sí, pero ¿cuál es el riesgo?

Michael: Informarme!

Paige: No entiendo.

Michael búsquedas.

Michael: Supongamos que un cliente de la aplicación es un empleado de una empresa cotiza en bolsa. Vamos a ser más específico: el empleado es el director financiero de una empresa cotiza en bolsa y utiliza la aplicación para almacenar una hoja de cálculo que muestra datos fiscales para el trimestre actual, datos que no es público y no será pública hasta el final del trimestre, cuando la compañía anuncia sus beneficios. Supongamos que un pirata informático divide en su sistema, obtiene los datos y lo utiliza para vender o comprar stock en la empresa. Que pueden ser internos comerciales.

Paige: Perdón-AH.

Michael: Perdón-oh, de hecho. Esto es grave. El departamento financiero no tiene controles apropiados en los datos confidenciales, que puede ser una infracción de normativa SOX.

Paige: Usted dice "puede"un lote.

Michael: Por supuesto que hice. ¿Se consulta como un abogado para usted? Por lo tanto, volver a mi pregunta original. ¿Es algo que le interesa esta situación?

Paige: Bueno, no realmente. Creo que nuestros términos que no debería utilizar nuestro servicio para ultra-sensitive datos de estado. Pero reproducirá. Supongamos que digo, "Sí, nos interesa este escenario." Y ahora, ¿qué?

Michael: Mi primer bit de consejo sería consulte sus abogados para asegurarse de que no va a colocar la compañía expuestos en este escenario. Pero supongamos que dicen que puede ir para él, pero deberá asegurarse de que proteger los datos al final de espera.

Paige: Lo que estás intentando decir es que los datos guardados en el almacén de datos 5.0, el sistema de archivos en el servidor, está sujeta a divulgación de información y es preciso mitigar la amenaza. ¿Estoy derecho?

Michael: Eres manchas en. ¿Cómo solucionar?

Paige: ACL.

Michael: ¿Por qué listas de control de acceso?

Paige: Se puede limitar el acceso a sólo los usuarios válidos de los datos.

Michael: ¿Cómo la aplicación de servidor leer y escribir los datos?

Paige: AH, supongamos que el proceso se ejecuta como una identidad única. Lo llamaremos FooID. Se podría aplicar una lista de control de acceso a los archivos que permite FooID así como a los usuarios válidosel acceso a los archivos.

Michael: No funcionará;no es segura.

Paige: ¿Y por qué no?

Michael: Si soy un atacante, puede comprometer el proceso del servidor al que se ejecuta como FooID y ejecute mi código malintencionado en ese servidor. Ya está, mi código se ejecuta como FooID y propietario de los datos!

Paige busca dejected.

Paige: Humph.

Michael: Tiene que utilizar el cifrado.

Paige: Por supuesto, El servidor sólo se leer y escribir objetos binarios cifrados, y si un atacante pone en peligro el servidor, todavía no obtiene los datos a menos que puede romper el cifrado.

Paige perks.

Michael: Ahora la diversión comienza realmente. Nos toca en algunos de los problemas de cifrado última vez, especialmente lo que refiere a las claves.

Paige: ¿Qué significa?

Michael: ¿Aceptar, cómo va a cifrar los datos?

Paige: Los tipos de usuario de una contraseña en la aplicación de cliente y la aplicación de cliente se cifra los datos con la contraseña y se envía el blob cifrado a través del cable al servidor. El servidor escribe metadatos en SQL Server y, a continuación, escribe el blob cifrado en el sistema de archivo del servidor.

Michael: ¿Cuál es en los metadatos?

Paige: Identidad del propietario, el tamaño del archivo, el nombre de archivo, la hora se escribió en el sistema de archivo y el último tiempo de lectura. Ese tipo de cosas. Sé que esta información se mantiene en el sistema de archivos, demasiado, pero de forma más rápida de realizar una búsqueda en algo diseñado para almacenar este tipo de datos: una base de datos de SQL Server.

Michael: Bueno, Me alegro no almacena datos contenidos en el archivo!

Paige: ¿Por qué?

Michael: Un par de razones. En primer lugar, significaría la aplicación de servidor tiene acceso a datos sin cifrar, y obtener los datos requiere el proceso de servidor para descifrar los datos.

Paige: ¿Así?

En una voz alto pero no muy shouting, Michael responde.

Michael: Porque significa que la aplicación de servidor necesita conocer una clave de descifrado, que significa que obtendrá en todo tipo de juegos de administración de claves realmente horrible. Si es posible, desea mantenerse fuera del negocio! Hay formas puede hacer esto limpiamente por tener varias claves, pero no desea explique ahora. Si nunca! Si realmente desea comprender esto, leyendo cómo Microsoft cifra archivos con el sistema de archivos de cifrado, o EFS.

Paige: ¿No se pudo usamos EFS?

Michael: Posiblemente. Depende de los clientes. ¿Qué plataformas admiten en el cliente?

Paige: Se le suministra al final del año en Windows y, a continuación, en un par de meses más tarde en Linux.

Michael: ¿No Solaris?

Paige: ¿Qué es Solaris?

Michael sniggers y omite la respuesta de Paige.

Michael: No puede utilizar EFS porque requiere cuentas de Windows. Por lo tanto, tiene que cifrar los datos mediante tecnología diferente. Hacer que excelente si se utiliza EFS, o incluso DPAPI, conoce como DPAPI, porque utilizan la misma tecnología de cifrado subyacente y puede perfectamente cifrar y descifrar datos mediante las claves derivadas de la contraseña del usuario. AH bien. Veamos qué más podemos hacer.

Paige: Podemos usar una biblioteca de cifrado

Michael: Por supuesto que podemos. De hecho, que es mucho mejor idea que algo oí el otro día.

Paige: ¿Qué?

Michael: Alguien me pidió si sería Aceptar para crear su propio algoritmo de cifrado.

Paige: ¿Usted dice no derecha?

Michael: Por supuesto dice que no. ¿Qué sería espera me diga? También había hecho bastante claro que es una infracción de directiva SDL completa y no debe contemplarse incluso la posibilidad de utilizar a cualquier cifrado propios.

Paige: ¿Por lo tanto, qué debe hacer?

Michael: Dado que el código de cliente es C#, puede utilizar el espacio de nombres System.Security.Cryptography de .NET. Está disponible en mono, lo que significa que podría llamarlo desde Linux. No es Intenté, pero podría hacer un experimento. También necesitaría charlar con los abogados para asegurarse de que sin problemas de licencia.

Paige: ¿Qué problemas de licencia?

Michael: Es el código de terceros. Quién sabe qué says.Paige de la licencia: Aceptar, de forma que nos cifrar los datos con la contraseña del usuario, enviar el objeto binario...

Michael: Nº No. Nyet. Nada. . No utilice la contraseña del usuario como una clave de cifrado;derivar la clave de cifrado la contraseña. Las contraseñas son muy fáciles de adivinar.

Paige: Cómo una "derivar"¿una clave?

Michael sonrisas.

Michael: Con una función de derivación de la clave.

Paige: SR.. Smarty. ¿Podría ser un poco más precisas?

Michael: Seguro. Pase la clave de una función, como Rfc2898DeriveBytes en. NET, junto con un valor salt. Un valor salt es sólo un número único que dificulta el realizar determinados ataques. Es un número de iteraciones, normalmente en los decenas si no cientos de miles. La función toma la contraseña y munges miles de veces con el valor salt. A menudo esto se conoce como "expandir la contraseña". Al final de la operación, que normalmente tarda menos de un segundo, obtenga algunos bytes y se pueden utilizar esos bytes como claves. Derivación de claves no sólo hace difíciles de adivinar la clave, también facilita duro montar ataques de averiguación de contraseñas de alta velocidad, porque el atacante tiene que pasar por el número de iteraciones, demasiado. Por lo tanto, si un atacante podría probar normalmente 1.000.000 de contraseñas por segundo, con un recuento de iteraciones de 100.000, es reducido a 10 segundo! Genial, ¿verdad?

Paige: Genial. ¿Por lo que se utilizan que clave para cifrar los datos, utilizando, por ejemplo, estándar de cifrado avanzado?

Michael: Sí. Por supuesto, todo este hace es cifrar los datos. No proporciona ninguna forma de comprobación de integridad, pero eso es bastante fácil. Puede derivar otra clave y utilice para crear un código de autenticación de mensajes y almacenar junto con los metadatos. No utilice la misma clave para cifrado y comprobación de integridad. Derivar una segunda clave y utilice.

ADAM, otro chico de seguridad, le guía por muttering.

ADAM: Asistentes de seguridad siempre desea ir primero de profundidad en cifrado y similares. Pero los atacantes ir para el vínculo débil.

Michael: ADAM es correcto, seguridad tendemos a cavar profundidad rápidamente. Y estoy culpa como cargará, pero desea esto sacar partido de la forma.

Paige: Er, Aceptar. ¿Nada?

Michael: Bueno, hay también el problema rápido de los usuarios si sus contraseñas. Daría a los usuarios hacer de seguridad de la oportunidad de hacer copia de su contraseña de seguridad en un lápiz USB o algo y que tenga en cuenta que no tenemos la contraseña y que, si olvida, no de ninguna manera se pueden llevar los datos desde los mensajes no enviados!

Paige: ¿Hemos finalizado nuestra labor?

Michael: Por el momento, sí. Se trata de una sección grande e importante del modelo de amenazas y espero que esto le dará una idea de algunos de los equilibrios que tiene que hacer al crear aplicaciones seguras.

Paige: Hacer ahora. Gracias.

Michael Howard es un administrador de programas senior de seguridad en Microsoft que se centra en proceso seguro mejora y prácticas recomendadas. Es coautor de cinco libros de seguridad, incluidos "Writing Secure Code para Windows Vista""El ciclo de vida de desarrollo de seguridad""Escribir código seguro"y "19 Deadly Sins of Software Security".