La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

Presentaciones similares


Presentación del tema: "Recomendaciones para la escritura de código seguro NombrePuestoCompañía."— Transcripción de la presentación:

1 Recomendaciones para la escritura de código seguro NombrePuestoCompañía

2 Qué trataremos Proceso de desarrollo seguro Modelos de amenazas Mitigación del riesgo Recomendaciones de seguridad

3 Requisitos previos para la sesión Experiencia de desarrollo con Microsoft Visual Basic®, Microsoft Visual C++® o C# Nivel 200

4 Orden del día Proceso de desarrollo seguro Modelos de amenazas Mitigación del riesgo Recomendaciones de seguridad

5 Mejoras en proceso de desarrollo de aplicaciones Tenga en cuenta la seguridad Al comienzo del proceso Durante el desarrollo Durante la implementación En los hitos de revisión del software No deje de buscar errores de seguridad hasta el final del proceso de desarrollo

6 SD 3 Seguro por diseño Seguro de forma predeterminada Seguro en implementación Arquitectura y código seguros Análisis de amenazas Reducción de los puntos vulnerables Menor área expuesta a ataques Las características que no se usan están desactivadas de forma predeterminada Privilegios mínimos Protección: detección, defensa, recuperación y administración Proceso: guías de procedimientos y de arquitectura Usuarios: aprendizaje Estructura de seguridad SD 3

7 Esquema temporal del desarrollo de productos seguros Planes de prueba completos Diseñoscompletos Concepto Códigocompleto Envío Después del envío Pruebas de puntos vulnerables de seguridad Evaluar los conocimientos de seguridad al contratar integrantes del grupo Determinar los criterios de firma de seguridad Someter a revisión externa Analizar las amenazas Aprender y afinar Realizar la revisión del grupo de seguridad Entrenar a los integrantes del grupo Probar la alteración de datos y los privilegios mínimos Resolver problemas de seguridad, comparar el código con las directrices de seguridad =continuado

8 Seguro por diseño Aumente los conocimientos de seguridad del grupo de diseño Ofrezca aprendizaje de forma continuada Cambio de actitud: no es válido decir aquello que no sé no me puede dañar Aplique seguridad durante la fase de diseño Defina los objetivos de seguridad del producto Implemente la seguridad como una característica clave del producto Utilice los modelos de amenazas durante la fase de diseño

9 Orden del día Proceso de desarrollo seguro Modelos de amenazas Mitigación del riesgo Recomendaciones de seguridad

10 Qué son los modelos de amenazas La definición de modelos de amenazas es un análisis basado en la seguridad que: Ayuda a un grupo de producto a conocer los puntos más vulnerables del producto Evalúa las amenazas a una aplicación Trata de reducir los riesgos generales de seguridad Busca activos Descubre los puntos vulnerables Identifica amenazas Ayuda a constituir la base de las especificaciones del diseño de seguridad

11 Beneficios de la definición de modelos de amenazas Ayuda a conocer mejor la aplicación Ayuda a encontrar errores Identifica errores de diseño complejos Ayuda a integrar nuevos empleados Orienta los planes de pruebas de seguridad bien diseñados Amenaza Punto vulnerable Activo

12 El proceso de definición de modelos de amenazas Identificar activos 1 Crear información general sobre la arquitectura 2 Descomponer la aplicación 3 Identificar las amenazas 4 Documentar las amenazas 5 Clasificar las amenazas 6 Proceso de definición de modelos de amenazas

13 Proceso de definición de modelos de amenazas Paso 1: identificar activos Cree una lista de activos que requieren protección, como: Datos confidenciales, por ejemplo las bases de datos de clientes Páginas Web Disponibilidad del sistema Cualquier elemento que, si se viera comprometido, pudiera impedir el funcionamiento correcto de la aplicación

14 Proceso de definición de modelos de amenazas Paso 2: crear información general sobre la arquitectura Identificar lo que hace la aplicación Crear un diagrama de la arquitectura de la aplicación Identificar las tecnologías Permisos NTFS (Autenticación) Autorización de archivo Autorización de URL Funciones de.NET (Autenticación) Función definida por el usuario (Autenticación) SSL (Privacidad/ Integridad) Límite de confianza Alice Mary Bob IIS Autenticación anónima Autenticación de formularios IPSec (Privacidad/Integridad) Límite de confianza ASP.NET (Identidad de proceso) Microsoft ASP.NET Microsoft ASP.NET Autenticación de Microsoft Windows ® Microsoft SQL Server

15 Proceso de definición de modelos de amenazas Paso 3: descomponer la aplicación Descomponer la aplicación Crear un perfil de seguridad basado en áreas vulnerables tradicionales Examinar las interacciones entre diferentes subsistemas Utilizar diagramas DFD o UML Identificar los límites de confianza Identificar el flujo de datos Identificar los puntos de entrada Identificar el código privilegiado Documentar el perfil de seguridad

16 Proceso de definición de modelos de amenazas Paso 4: identificar las amenazas Constituir el grupo Identificar las amenazas Amenazas de la red Amenazas del host Amenazas de las aplicaciones

17 Tipos de amenazas Ejemplos S uplantación Falsificar mensajes de correo electrónico Reproducir paquetes de autenticación Al T eración Alterar datos durante la transmisión Cambiar datos en archivos R epudio Eliminar un archivo esencial y denegar este hecho Adquirir un producto y negar que se ha adquirido D I vulgación de información Exponer información en mensajes de error Exponer código en sitios Web D enegación de servicio Inundar una red con paquetes de sincronización Inundar una red con paquetes ICMP falsificados E levación de privilegios Aprovechar la saturación de un búfer para obtener privilegios en el sistema Obtener privilegios de administrador de forma ilegítima Proceso de definición de modelos de amenazas Identificar las amenazas con STRIDE

18 1.0 Ver datos de nóminas (I) 1.1 El tráfico no está protegido (Y) 1.2 Un intruso ve el tráfico Rastrea al tráfico con el analizador de protocolos Atiende al tráfico del enrutador No se han aplicado revisiones al enrutador (Y) El enrutador se ve comprometido Adivina la contraseña del enrutador Amenaza nº 1 (I) Ver datos de nóminas 1.1 El tráfico no está protegido 1.2 El intruso ve el tráfico Rastrea el tráfico con el analizador de protocolos Atiende al tráfico del enrutador No se han aplicado revisiones al enrutador El enrutador se ve comprometido Adivina la contraseña del enrutador Proceso de definición de modelos de amenazas Identificar las amenazas mediante árboles de ataques

19 Proceso de definición de modelos de amenazas Paso 5: documentar las amenazas Documente las amenazas con una plantilla: Deje Riesgo en blanco (por ahora) Descripción de la amenazaInserción de comandos SQL Destino de la amenaza Componente de acceso a datos Riesgo Técnicas de ataque El intruso anexa comandos SQL al nombre de usuario, que se utiliza para crear una consulta SQL Medidas preventivas Utilice una expresión regular para validar el nombre de usuario y utilice un procedimiento almacenado con parámetros para tener acceso a la base de datos

20 Proceso de definición de modelos de amenazas Paso 6: clasificar las amenazas Utilice la fórmula: Riesgo = Probabilidad * Daños potenciales Utilice DREAD para clasificar las amenazas Daños potenciales Daños potenciales Capacidad de Reproducción Capacidad de Reproducción AprovEchamiento AprovEchamiento Usuarios Afectados Usuarios Afectados Capacidad de Descubrimiento Capacidad de Descubrimiento

21 Proceso de definición de modelos de amenazas Ejemplo: clasificar las amenazas Amenaza nº 1 (I) Ver datos de nóminas 1.1 El tráfico no está protegido 1.2 El intruso ve el tráfico Rastrea el tráfico con el analizador de protocolos Atiende al tráfico del enrutador No se han aplicado revisiones al enrutador El enrutador se ve comprometido Adivina la contraseña del enrutador Daños potenciales Usuarios afectados O bien, Daños Capacidad de reproducción Aprovechamiento Capacidad de descubrimiento O bien, Oportunidad

22 Código para un modelo de amenazas Utilice el modelo de amenazas como ayuda Determine las partes más peligrosas de la aplicación Asigne prioridades a los esfuerzos para aplicar seguridad Asigne prioridades a las revisiones continuadas del código Determine las técnicas de mitigación de amenazas que se emplearán Determine el flujo de datos

23 Orden del día Proceso de desarrollo seguro Modelos de amenazas Mitigación del riesgo Recomendaciones de seguridad

24 Opciones de mitigación del riesgo Opción 1: No hacer nada Opción 2: Advertir al usuario Opción 3: Eliminar el problema Opción 4: Corregir el problema Vigilado

25 Proceso de mitigación del riesgo Tipo de amenaza (STRIDE) Técnica de mitigación Tecnología SuplantaciónAutenticación NTLM Certificados X.509 Claves PGP Básica De texto implícita Kerberos SSL/TLS 1.Identifique la categoría Por ejemplo: Suplantación 2.Seleccione las técnicas Por ejemplo: Autenticación o Proteger los datos secretos 3.Elija la tecnología Por ejemplo: Kerberos

26 Técnicas de mitigación de ejemplo Cliente Servidor Datos persistentes Datos de autenticación Datos de configuración STRIDE SSL/TLS IPSec RPC/DCO con privacidad Servidor de seguridad Limite la utilización de recursos para conexiones anónimas Control de acceso seguro Firmas digitales Auditoría Red no segura

27 Orden del día Proceso de desarrollo seguro Modelos de amenazas Mitigación del riesgo Recomendaciones de seguridad

28 Ejecutar con privilegios mínimos Doctrina de seguridad bien conocida: Ejecute las aplicaciones con los privilegios mínimos para realizar únicamente su trabajo, ninguno más Los privilegios elevados pueden llevar a consecuencias desastrosas El código malintencionado que se ejecuta en un proceso con muchos privilegios tiene privilegios adicionales Muchos virus se extienden porque el destinatario tiene privilegios de administrador

29 Demostración 1 Seguridad de las aplicaciones ASP.NET Investigación de los privilegios de las aplicaciones ASP.NET Restricción de los niveles de confianza de las aplicaciones ASP.NET Cajón de arena (sandboxing) de código privilegiado Uso de los ensamblados de cajón de arena (sandboxing)

30 Reducir la superficie susceptible de ataque Exponga sólo algunas interfaces bien documentadas de la aplicación Utilice sólo los servicios que la aplicación requiera Los virus Slammer y CodeRed no se habrían extendido si ciertas características no estuvieran activadas de forma predeterminada ILoveYou y otros virus no se habrían extendido si las secuencias de comandos estuvieran deshabilitadas Desactive todo lo demás

31 No confiar en las entradas de los usuarios Valide todas las entradas Asuma que todas las entradas son dañinas mientras no se demuestre lo contrario Exija datos válidos y rechace todos los demás Restrinja, rechace y sanee la entrada del usuario con Comprobaciones de escritura Comprobaciones de longitud Comprobaciones de intervalo Comprobaciones de formato Validator.ValidationExpression =

32 Demostración 2 Validación de formularios de Windows Ver una aplicación sin validación Agregar la validación de entradas Validación del formulario completo

33 Defensa en profundidad (1 de 3) Utilizar múltiples equipos selectores SSL Servidor de seguridad ISA IIS SQL Server Servidor de seguridad ISA IPSec

34 Defensa en profundidad (2 de 3) Aplicar las medidas apropiadas para cada nivel Comprobar la seguridad Aplicación.dll Aplicación.exe Comprobar la seguridad Proteger los recursos con ACL Aplicación.dll

35 Defensa en profundidad (3 de 3) Utilizar listas ACL seguras en los recursos Diseñe listas ACL en la aplicación desde el principio Aplique listas ACL a archivos, carpetas, páginas Web, valores del Registro, archivos de base de datos, impresoras y objetos de Active Directory Cree sus propias ACL durante la instalación de la aplicación Incluya entradas ACE de denegación No utilice listas DACL NULL

36 No confíe en obtener seguridad mediante oscuridad No oculte claves de seguridad en archivos No confíe en claves del Registro no documentadas Asuma siempre que un intruso sabe lo mismo que usted

37 Utilizar DPAPI para proteger secretos Dos funciones DPAPI: CryptProtectDataCryptUnprotectData Dos almacenes para los datos cifrados con DPAPI: Almacén de usuario Almacén de máquina

38 Demostración 3 DPAPI Almacenamiento de cadenas de conexión en Web.config Cifrado de cadenas de conexión con DPAPI Instalación de la utilidad Aspnet_setreg Uso de atributos cifrados en un archivo de configuración Conceder permisos para claves del Registro

39 Fallar de forma inteligente (1 de 2) Si se produce un error, asegúrese de que el código falla de forma segura DWORD dwRet = IsAccessAllowed(…); if (dwRet == ERROR_ACCESS_DENIED) { // Error de la comprobación de seguridad. // Informe al usuario de que se deniega el acceso } else { // Comprobación de seguridad correcta. // Se realiza la tarea… } ¿Qué ocurre si IsAccessAllowed() devuelve ERROR_NOT_ ENOUGH_MEMORY? ¿Qué ocurre si IsAccessAllowed() devuelve ERROR_NOT_ ENOUGH_MEMORY?

40 Fallar de forma inteligente (2 de 2) No haga lo siguiente: Revelar información en mensajes de error Consumir recursos durante períodos prolongados después de un error Haga lo siguiente: Utilice bloques de tratamiento de excepciones para evitar devolver errores a quien llama Escriba los errores sospechosos en un registro de sucesos

41 Probar la seguridad Haga que los grupos de pruebas participen desde el principio Utilice los modelos de amenazas para desarrollar estrategias de pruebas de seguridad Piense mal. Sea malo. Pruebe lo peor Automatice los ataques con secuencias de comandos y lenguajes de programación básicos Envíe diversos datos no válidos Elimine o deniegue el acceso a archivos o a entradas del Registro Haga pruebas con una cuenta que no sea de administrador Conozca a su enemigo y conózcase a sí mismo ¿Qué técnicas utilizaría un intruso? ¿Qué técnicas y tecnologías pueden utilizar quienes efectúan las pruebas?

42 Aprender de los errores Si encuentra un problema de seguridad, aprenda del error ¿Cómo se produjo el error de seguridad? ¿Se ha cometido el mismo error en otra parte del código? ¿Como se habría evitado? ¿Qué se debe cambiar para evitar repetir esta clase de error? ¿Necesita actualizar el material de cursos o las herramientas de análisis?

43 Resumen de la sesión Proceso de desarrollo seguro Modelos de amenazas Mitigación del riesgo Recomendaciones de seguridad

44 Pasos siguientes 1. Mantenerse informado sobre la seguridad Suscribirse a boletines de seguridad: Suscribirse a boletines de seguridad: Obtener las directrices de seguridad de Microsoft más recientes: Obtener las directrices de seguridad de Microsoft más recientes: 2. Obtener aprendizaje de seguridad adicional Buscar seminarios de aprendizaje en línea y presenciales: Buscar seminarios de aprendizaje en línea y presenciales: Buscar un CTEC local que ofrezca cursos prácticos: Buscar un CTEC local que ofrezca cursos prácticos:

45 Para obtener más información Sitio de seguridad de Microsoft (todos los usuarios) Sitio de seguridad de MSDN (desarrolladores) (este sitio está en inglés) Sitio de seguridad de TechNet (profesionales de IT)

46 Preguntas y Respuestas

47


Descargar ppt "Recomendaciones para la escritura de código seguro NombrePuestoCompañía."

Presentaciones similares


Anuncios Google