SlideShare una empresa de Scribd logo
1 de 31
Clase XIV
     •[nombre instructor]
                 •[fecha]
A genda
   VSTS
       Introducción
   Seguridad
       Conceptos generales de seguridad en aplicaciones de
        software
       Autenticación y Autorización
       Escribir Código Seguro – Las mejores prácticas
       Modelo de Amenazas
       Consideraciones Generales
       Validar user input
       Criptografía
A genda
   VSTS
       Introducción
   Seguridad
       Conceptos generales de seguridad en aplicaciones de
        software
       Autenticación y Autorización
       Escribir Código Seguro – Las mejores prácticas
       Modelo de Amenazas
       Consideraciones Generales
       Validar user input
       Criptografía
Visual Studio Team System
                Visual Studio Team Edition               Visual Studio Team Edition                   Visual Studio Team Edition
               Software Architects                     Software Developers                                Software Testers
                    Application Designer                     Dynamic Code Analyzer                             Load Testing

                    Logical Infra. Designer                   Static Code Analyzer                            Manual Testing

                    Deployment Designer                              Code Profiler                         Test Case Management

                                                                                           Unit Testing

                                                                                         Code Coverage

                                                                  Class Designer

                                         Visio and UML Modeling

                                                      Team Foundation Client (includes CAL)

                                                        Visual Studio Professional Edition




                                                                                                                                      o du Sl aus V
                                                                                                                                                i
a ss ec o P




                  Visual Studio
                                               Change Management                     Reporting                 Integration Services
         r




              Team Foundation Server

                    Team Build                  Work Item Tracking                   Project Site              Project Management




                                                                                                                                      i t
Logical Datacenter Designer
Application Designer
System Designer
A genda
   VSTS
       Introducción
   Seguridad
       Conceptos generales de seguridad en aplicaciones de
        software
       Autenticación y Autorización
       Escribir Código Seguro – Las mejores prácticas
       Modelo de Amenazas
       Consideraciones Generales
       Validar user input
       Criptografía
Computación Confiable
                    La computación confiable tiene cuatro pilares:
                        Confiabilidad significa que un sistema de computación es confiable,
                         esta disponible cuando se lo necesita, y la performace es la esperada y
                         llega a niveles esperados.
                        Seguridad significa un sistema resistente a ataques, la
                         confidencialidad, integridad, y disponibilidad tanto de los sistemas como
                         de los datos está protegida.
                        Privacidad significa que la gente puede controlar su información
                         personal y a las organizaciones que usan esta información fielmente
                         protegida.
                        Integridad de Negocio alrededor de las compañías en su industria
                         que es responsable de ayudar a los clientes a buscar soluciones
Seguridad en .NET




                         apropiadas para sus negocios, localizar problemas con productos o
                         servicios, y abrir una interacción con los clientes.


                                                                                         Bill Gates
                                                                                     Julio 18, 2002
Tipos Comunes de Ataques
                                                        Atacantes
                                    Ataques
                                    Organizados




                                                                       Ataques
                     Datos restringidos                               Automáticos


                                                  DoS
Seguridad en .NET




                      Brechas Accidentales
                                                  Falla de Conexión

                           Virus, Caballos de             Negación de
                                      Troya,              Servicio (DoS)
                                   y Gusanos
Consecuencias de una Seguridad Pobre

                       Robo de propiedad intelectual
                       Sistemas sin productividad (downtime)
                       Menor productividad
                       Daño a reputación de negocio
                       Perdida de confianza de los consumidores
                       Varias perdidas financieras debido a perdidas
Seguridad en .NET




                        en el ingreso
Comunicación Segura – Tecnologías

                          Tecnologías incluidas:
                              IPSec
                              SSL
                              TLS
                              Encriptación RPC

                                  SSL/TLS               IPSec
                                                    RPC Encriptación
Seguridad en .NET
Autentificación – Propósito de la Autentificación



                         Verifica la identidad de un principal
                          mediante:
                             Aceptar credenciales
                             Validar estas credenciales
                         Comunicaciones Seguras dando por hecho
                          que la aplicación conoce quién es el
                          llamador
Seguridad en .NET
Autentificación – Métodos de Autentificación


                       Basic
                       Digest
                       Firmas digitales y certificados digitales
                       Integridad
                           Protocolo Kerberos versión 5
                           NTLM
                       Microsoft Passport
Seguridad en .NET




                       Biométrica
Demo
                     •Métodos de autenticación con IIS
Seguridad en .NET
Autorización - Qué es autorización?

                        Autorización:
                          Ocurre después que la petición del cliente
                            es autentificada
                          Es el proceso de confirmar que una
                            autentificación principal está permitida a
                            acceder a recursos específicos
                          Chequea la correcta asignación de
                            archivos, carpetas, registro de
Seguridad en .NET




                            configuraciones, aplicaciones, y demás
                          Puede ser basada en roles
                          Puede ser basada en código
Autorización – Técnicas comunes de
                    autorización

                        Acceso Web IIS y restricciones IP/DNS
                        Seguridad basada en roles .NET
                        Código de seguridad de acceso .NET
                        Listas de control de acceso NTFS (ACL)
                        Logins SQL Server
                         Permisos SQL Server
Seguridad en .NET




                     
Demo
                    •Acceso Web IIS y restricciones IP/DNS
                                       •Logins SQL Server
Seguridad en .NET




                                    •Permisos SQL Server
Adoptar el Framework de Seguridad
                    SD3
                                   Construir un modelo de defensa
                      Seguro por   Conducir revisión de código, test de
                        Diseño     penetración
                                   Correr código con los mínimos privilegios


                      Seguro por   Minimizar las superficies de ataque
                        Defecto    Deshabilitar servicios innecesarios
Seguridad en .NET




                                   Impulsar mejores prácticas de seguridad
                       Seguro en
                                   Crear guías de seguridad
                          el
                                   Construir herramientas para evaluar la
                      Deployment   seguridad de aplicaciones
Seguro por Diseño

                        Elevar la conciencia de seguridad en el equipo
                         de diseño
                            Usar entrenamiento continuo
                            Actitud de desafió - “Lo que no conozco no me
                             daña” no es aplicable!
                        Adquirir seguridad correcta durante la fase de
                         diseño
                            Definir objetivos de seguridad del producto
Seguridad en .NET




                            Implementar seguridad como una característica
                             clave del producto
                            Usar modelos de defensa durante la fase de
                             diseño
Qué es el modelo de amenazas?
                        El modelo de defensa es un análisis
                         basado en la seguridad que:
                            Ayuda a un equipo a entender donde los
                             productos son más vulnerables
                            Evalúa las amenazas de una aplicación
                            Apuntar a reducir el riesgo global de
                             seguridad
                            Detectar valor
Seguridad en .NET




                            Descubrir vulnerabilidades
                            Identificar amenazas
                            Debe ayudar al diseño de seguridad básica
Beneficios del Modelo de Amenazas

                       Ayuda a entender mejor a su aplicación
                       Ayuda a encontrar bugs
                       Identifica complejos
                        bugs en el diseño
                                             Vulnerabilidad
                       Ayuda a integrar
                        nuevos miembros
                        de equipo
Seguridad en .NET




                       Conduce a un buen                 Amenaza   Activo
                        diseño de plan de seguridad
El proceso del modelo de Amenazas


                      Amenazas Proceso de Modelado

                                  1 Identificación de Activos

                                  2 Crear una visión general de Arquitectura

                                  3 Descomponer la Aplicación

                                  4 Identificar las Amenazas
Seguridad en .NET




                                  5 Documentar las Amenazas

                                  6 Evaluar las Amenazas
Mejorar el Proceso del desarrollo de
                    Aplicación
                        Consideraciones de seguridad
                            Al inicio del proceso
                            A través del desarrollo
                            A través de la distribución
                            A través de todas las revisiones del
                             software
Seguridad en .NET




                        No parar de revisar bugs en la seguridad
                         hasta que termine el proceso de
                         desarrollo
Prueba de Seguridad
                       Involucre a un equipo de pruebas al inicio del
                        proyecto
                       Use un modelo de amenazas para desarrollar una
                        estrategia de pruebas seguras
                       Piense Mal. Sea Malo. Prueba lo Malo.
                           Ataques automáticos con scripts y lenguajes de
                            programación de bajo nivel
                           Introduzca una variedad de datos inválidos
                           Borre o deniegue acceso a archivos o entrada al registro
Seguridad en .NET




                           Pruebe con una cuenta que no es una cuenta de
                            administrador
                       Conozca a su enemigo y conozca se a usted mismo
                           Qué técnicas y tecnologías van a usar los hackers?
                           Qué técnicas y tecnologías van a usar los testers?
No confíe en las entradas de Usuario
                       Validar todas las entradas
                           Asuma que todas las entradas son dañinas hasta
                            probar lo contrario
                           Verificar la validación de datos y rechazar todo en
                            caso contrario
                       Restricciones, rechazar entradas de usuario
                        con
                           Chequeo de tipos
                           Chequeo de tamaño
                           Chequeo de rango check
Seguridad en .NET




                           Chequeo de formato

                    Validator.ValidationExpression =
                    "w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*";
Demo
                           •Validar user input
Seguridad en .NET
Criptografía

                       Criptografía simétrica
                       Criptografía asimétrica
                       Firmas digitales
Seguridad en .NET
Qué es criptografía simétrica?

                         Permite transferencia de datos segura
                         Confianza segura sobre claves seguras compartidas
                         Intercambio de claves seguras es un desafío


                                         Clave secreta                    Clave secreta

                          Datos                    Datos Encriptados                 Datos
                                     Algoritmo                         Algoritmo
Seguridad en .NET




                                     Simétrico                         Simétrico


                          Remitente encripta los                       Receptor desencripta
                      1   datos confidenciales
                          usando claves secretas
                                                                  2    datos confidenciales
                                                                       usando claves secretas
Qué es Criptografía Asimétrica?

                           Permite segura transferencia de datos seguros
                           Usan pares de claves relacionadas matemáticamente:
                            una clave pública y una clave privada

                        Remitente encripta los      Datos
                                                                  Algoritmo      Datos
                    1   datos usando la clave
                        publica del receptor      Clave pública   Asimétrico   Encriptados
                                                  del Receptor
Seguridad en .NET




                                                   Datos
                        Receptor desencripta     Encriptados      Algoritmo
                    2   los datos usando su
                        clave privada             Clave privada   Asimétrico
                                                                                Datos
                                                  de Receptor
Qué es la Firma Digital?
                            Puede usar criptografía asimétrica para asegurar la
                             integridad de los datos

                                El remitente parte los datos y encripta los pedazos con su clave
                                privada para generar la firma

                                 Algoritmo        Valores Hash                  Algoritmo
                     Datos                                                                             Firma
                                   Hash              Clave primaria de          Asimétrico
                                                         remitente


                               El receptor desencripta la firma con la clave pública del remitente
Seguridad en .NET




                               y compara los valores con los pedazos de data

                                                                                                       Firmas
                                 Algoritmo         Valor        Desencript       Algoritmo
                     Datos
                                   Hash            Los valores son iguales?
                                                   Hash          ar Firma        Asimétrico             Clave
                                                                                                     pública de
                                                                                                      remitente

Más contenido relacionado

Similar a Clase xiv

Metodología de Desarrollo de TI para PYME
Metodología de Desarrollo de TI  para PYMEMetodología de Desarrollo de TI  para PYME
Metodología de Desarrollo de TI para PYMEJorge Luis Ojeda
 
08 Cast V Semana CMMI 2009
08 Cast V Semana CMMI 200908 Cast V Semana CMMI 2009
08 Cast V Semana CMMI 2009Pepe
 
Brief Ca Security Threat Management
Brief Ca Security Threat ManagementBrief Ca Security Threat Management
Brief Ca Security Threat ManagementCA RMDM Latam
 
Devsecops superstar un movimiento masivo
Devsecops superstar un movimiento masivoDevsecops superstar un movimiento masivo
Devsecops superstar un movimiento masivoLuciano Moreira da Cruz
 
Tipos de Pentest
Tipos de PentestTipos de Pentest
Tipos de PentestRafael Seg
 
Seguridad en directorio activo
Seguridad en directorio activoSeguridad en directorio activo
Seguridad en directorio activopeande
 
Ciberseguridad e Inteligencia Artificial.pdf
Ciberseguridad e Inteligencia Artificial.pdfCiberseguridad e Inteligencia Artificial.pdf
Ciberseguridad e Inteligencia Artificial.pdfPatricio Galdames
 
Xelere - IBM Security QRadar
Xelere - IBM Security QRadarXelere - IBM Security QRadar
Xelere - IBM Security QRadarXelere Seguridad
 
Claves para Gerenciar Seguridad y Minimizar Los Riesgos (2005)
Claves para Gerenciar Seguridad y Minimizar Los Riesgos (2005)Claves para Gerenciar Seguridad y Minimizar Los Riesgos (2005)
Claves para Gerenciar Seguridad y Minimizar Los Riesgos (2005)Gabriel Marcos
 
Evaluando la Plataforma Microsoft
Evaluando la Plataforma MicrosoftEvaluando la Plataforma Microsoft
Evaluando la Plataforma MicrosoftHaaron Gonzalez
 
Project hosts diferentes_nubes_custom_cloud_2013
Project hosts diferentes_nubes_custom_cloud_2013Project hosts diferentes_nubes_custom_cloud_2013
Project hosts diferentes_nubes_custom_cloud_2013Project Hosts (en Español)
 
Invoin presentación general
Invoin presentación generalInvoin presentación general
Invoin presentación generaldavidinvoin
 
Seguridad para Cloud Computing
Seguridad para Cloud ComputingSeguridad para Cloud Computing
Seguridad para Cloud ComputingGabriel Marcos
 

Similar a Clase xiv (20)

Metodología de Desarrollo de TI para PYME
Metodología de Desarrollo de TI  para PYMEMetodología de Desarrollo de TI  para PYME
Metodología de Desarrollo de TI para PYME
 
Framework .NET 3.5 11 Seguridad
Framework .NET 3.5 11 SeguridadFramework .NET 3.5 11 Seguridad
Framework .NET 3.5 11 Seguridad
 
08 Cast V Semana CMMI 2009
08 Cast V Semana CMMI 200908 Cast V Semana CMMI 2009
08 Cast V Semana CMMI 2009
 
Brief Ca Security Threat Management
Brief Ca Security Threat ManagementBrief Ca Security Threat Management
Brief Ca Security Threat Management
 
Devsecops superstar un movimiento masivo
Devsecops superstar un movimiento masivoDevsecops superstar un movimiento masivo
Devsecops superstar un movimiento masivo
 
2012temariohackingv9
2012temariohackingv92012temariohackingv9
2012temariohackingv9
 
Tipos de Pentest
Tipos de PentestTipos de Pentest
Tipos de Pentest
 
Seguridad en directorio activo
Seguridad en directorio activoSeguridad en directorio activo
Seguridad en directorio activo
 
Ciberseguridad e Inteligencia Artificial.pdf
Ciberseguridad e Inteligencia Artificial.pdfCiberseguridad e Inteligencia Artificial.pdf
Ciberseguridad e Inteligencia Artificial.pdf
 
 
Ransomware: Estratégias de Mitigación
Ransomware: Estratégias de MitigaciónRansomware: Estratégias de Mitigación
Ransomware: Estratégias de Mitigación
 
Xelere - IBM Security QRadar
Xelere - IBM Security QRadarXelere - IBM Security QRadar
Xelere - IBM Security QRadar
 
Claves para Gerenciar Seguridad y Minimizar Los Riesgos (2005)
Claves para Gerenciar Seguridad y Minimizar Los Riesgos (2005)Claves para Gerenciar Seguridad y Minimizar Los Riesgos (2005)
Claves para Gerenciar Seguridad y Minimizar Los Riesgos (2005)
 
Evaluando la Plataforma Microsoft
Evaluando la Plataforma MicrosoftEvaluando la Plataforma Microsoft
Evaluando la Plataforma Microsoft
 
Project hosts diferentes_nubes_custom_cloud_2013
Project hosts diferentes_nubes_custom_cloud_2013Project hosts diferentes_nubes_custom_cloud_2013
Project hosts diferentes_nubes_custom_cloud_2013
 
jdlaksjionc
jdlaksjioncjdlaksjionc
jdlaksjionc
 
Eq 4 seg- fiis- sans institute
Eq 4  seg- fiis- sans instituteEq 4  seg- fiis- sans institute
Eq 4 seg- fiis- sans institute
 
Dti auditoria de sistemas
Dti   auditoria de sistemasDti   auditoria de sistemas
Dti auditoria de sistemas
 
Invoin presentación general
Invoin presentación generalInvoin presentación general
Invoin presentación general
 
Seguridad para Cloud Computing
Seguridad para Cloud ComputingSeguridad para Cloud Computing
Seguridad para Cloud Computing
 

Más de Roberto Moreno Doñoro (20)

21 bibsw tablasyotros
21 bibsw tablasyotros21 bibsw tablasyotros
21 bibsw tablasyotros
 
20 curvaselipticas
20 curvaselipticas20 curvaselipticas
20 curvaselipticas
 
19 protocoloscripto
19 protocoloscripto19 protocoloscripto
19 protocoloscripto
 
18 correoseguro
18 correoseguro18 correoseguro
18 correoseguro
 
17 certdigitalespkcs
17 certdigitalespkcs17 certdigitalespkcs
17 certdigitalespkcs
 
16 autenticafirma
16 autenticafirma16 autenticafirma
16 autenticafirma
 
15 funcioneshash
15 funcioneshash15 funcioneshash
15 funcioneshash
 
14 cifraasimetrica
14 cifraasimetrica14 cifraasimetrica
14 cifraasimetrica
 
13 ciframochilas
13 ciframochilas13 ciframochilas
13 ciframochilas
 
12 cifrasimetrica
12 cifrasimetrica12 cifrasimetrica
12 cifrasimetrica
 
11 cifraflujo
11 cifraflujo11 cifraflujo
11 cifraflujo
 
10 ciframoderna
10 ciframoderna10 ciframoderna
10 ciframoderna
 
09 cifraclasica
09 cifraclasica09 cifraclasica
09 cifraclasica
 
08 compalgoritmos
08 compalgoritmos08 compalgoritmos
08 compalgoritmos
 
07 teorianumeros
07 teorianumeros07 teorianumeros
07 teorianumeros
 
06 teoriainfo
06 teoriainfo06 teoriainfo
06 teoriainfo
 
05 gestionseg
05 gestionseg05 gestionseg
05 gestionseg
 
04 calidadinfo
04 calidadinfo04 calidadinfo
04 calidadinfo
 
02 breveintrocripto
02 breveintrocripto02 breveintrocripto
02 breveintrocripto
 
01 presentalibro
01 presentalibro01 presentalibro
01 presentalibro
 

Clase xiv

  • 1. Clase XIV •[nombre instructor] •[fecha]
  • 2. A genda  VSTS  Introducción  Seguridad  Conceptos generales de seguridad en aplicaciones de software  Autenticación y Autorización  Escribir Código Seguro – Las mejores prácticas  Modelo de Amenazas  Consideraciones Generales  Validar user input  Criptografía
  • 3. A genda  VSTS  Introducción  Seguridad  Conceptos generales de seguridad en aplicaciones de software  Autenticación y Autorización  Escribir Código Seguro – Las mejores prácticas  Modelo de Amenazas  Consideraciones Generales  Validar user input  Criptografía
  • 4. Visual Studio Team System Visual Studio Team Edition Visual Studio Team Edition Visual Studio Team Edition Software Architects Software Developers Software Testers Application Designer Dynamic Code Analyzer Load Testing Logical Infra. Designer Static Code Analyzer Manual Testing Deployment Designer Code Profiler Test Case Management Unit Testing Code Coverage Class Designer Visio and UML Modeling Team Foundation Client (includes CAL) Visual Studio Professional Edition o du Sl aus V i a ss ec o P Visual Studio Change Management Reporting Integration Services r Team Foundation Server Team Build Work Item Tracking Project Site Project Management i t
  • 8. A genda  VSTS  Introducción  Seguridad  Conceptos generales de seguridad en aplicaciones de software  Autenticación y Autorización  Escribir Código Seguro – Las mejores prácticas  Modelo de Amenazas  Consideraciones Generales  Validar user input  Criptografía
  • 9. Computación Confiable La computación confiable tiene cuatro pilares:  Confiabilidad significa que un sistema de computación es confiable, esta disponible cuando se lo necesita, y la performace es la esperada y llega a niveles esperados.  Seguridad significa un sistema resistente a ataques, la confidencialidad, integridad, y disponibilidad tanto de los sistemas como de los datos está protegida.  Privacidad significa que la gente puede controlar su información personal y a las organizaciones que usan esta información fielmente protegida.  Integridad de Negocio alrededor de las compañías en su industria que es responsable de ayudar a los clientes a buscar soluciones Seguridad en .NET apropiadas para sus negocios, localizar problemas con productos o servicios, y abrir una interacción con los clientes. Bill Gates Julio 18, 2002
  • 10. Tipos Comunes de Ataques Atacantes Ataques Organizados Ataques Datos restringidos Automáticos DoS Seguridad en .NET Brechas Accidentales Falla de Conexión Virus, Caballos de Negación de Troya, Servicio (DoS) y Gusanos
  • 11. Consecuencias de una Seguridad Pobre  Robo de propiedad intelectual  Sistemas sin productividad (downtime)  Menor productividad  Daño a reputación de negocio  Perdida de confianza de los consumidores  Varias perdidas financieras debido a perdidas Seguridad en .NET en el ingreso
  • 12. Comunicación Segura – Tecnologías  Tecnologías incluidas:  IPSec  SSL  TLS  Encriptación RPC SSL/TLS IPSec RPC Encriptación Seguridad en .NET
  • 13. Autentificación – Propósito de la Autentificación  Verifica la identidad de un principal mediante:  Aceptar credenciales  Validar estas credenciales  Comunicaciones Seguras dando por hecho que la aplicación conoce quién es el llamador Seguridad en .NET
  • 14. Autentificación – Métodos de Autentificación  Basic  Digest  Firmas digitales y certificados digitales  Integridad  Protocolo Kerberos versión 5  NTLM  Microsoft Passport Seguridad en .NET  Biométrica
  • 15. Demo •Métodos de autenticación con IIS Seguridad en .NET
  • 16. Autorización - Qué es autorización?  Autorización:  Ocurre después que la petición del cliente es autentificada  Es el proceso de confirmar que una autentificación principal está permitida a acceder a recursos específicos  Chequea la correcta asignación de archivos, carpetas, registro de Seguridad en .NET configuraciones, aplicaciones, y demás  Puede ser basada en roles  Puede ser basada en código
  • 17. Autorización – Técnicas comunes de autorización  Acceso Web IIS y restricciones IP/DNS  Seguridad basada en roles .NET  Código de seguridad de acceso .NET  Listas de control de acceso NTFS (ACL)  Logins SQL Server Permisos SQL Server Seguridad en .NET 
  • 18. Demo •Acceso Web IIS y restricciones IP/DNS •Logins SQL Server Seguridad en .NET •Permisos SQL Server
  • 19. Adoptar el Framework de Seguridad SD3 Construir un modelo de defensa Seguro por Conducir revisión de código, test de Diseño penetración Correr código con los mínimos privilegios Seguro por Minimizar las superficies de ataque Defecto Deshabilitar servicios innecesarios Seguridad en .NET Impulsar mejores prácticas de seguridad Seguro en Crear guías de seguridad el Construir herramientas para evaluar la Deployment seguridad de aplicaciones
  • 20. Seguro por Diseño  Elevar la conciencia de seguridad en el equipo de diseño  Usar entrenamiento continuo  Actitud de desafió - “Lo que no conozco no me daña” no es aplicable!  Adquirir seguridad correcta durante la fase de diseño  Definir objetivos de seguridad del producto Seguridad en .NET  Implementar seguridad como una característica clave del producto  Usar modelos de defensa durante la fase de diseño
  • 21. Qué es el modelo de amenazas?  El modelo de defensa es un análisis basado en la seguridad que:  Ayuda a un equipo a entender donde los productos son más vulnerables  Evalúa las amenazas de una aplicación  Apuntar a reducir el riesgo global de seguridad  Detectar valor Seguridad en .NET  Descubrir vulnerabilidades  Identificar amenazas  Debe ayudar al diseño de seguridad básica
  • 22. Beneficios del Modelo de Amenazas  Ayuda a entender mejor a su aplicación  Ayuda a encontrar bugs  Identifica complejos bugs en el diseño Vulnerabilidad  Ayuda a integrar nuevos miembros de equipo Seguridad en .NET  Conduce a un buen Amenaza Activo diseño de plan de seguridad
  • 23. El proceso del modelo de Amenazas Amenazas Proceso de Modelado 1 Identificación de Activos 2 Crear una visión general de Arquitectura 3 Descomponer la Aplicación 4 Identificar las Amenazas Seguridad en .NET 5 Documentar las Amenazas 6 Evaluar las Amenazas
  • 24. Mejorar el Proceso del desarrollo de Aplicación  Consideraciones de seguridad  Al inicio del proceso  A través del desarrollo  A través de la distribución  A través de todas las revisiones del software Seguridad en .NET  No parar de revisar bugs en la seguridad hasta que termine el proceso de desarrollo
  • 25. Prueba de Seguridad  Involucre a un equipo de pruebas al inicio del proyecto  Use un modelo de amenazas para desarrollar una estrategia de pruebas seguras  Piense Mal. Sea Malo. Prueba lo Malo.  Ataques automáticos con scripts y lenguajes de programación de bajo nivel  Introduzca una variedad de datos inválidos  Borre o deniegue acceso a archivos o entrada al registro Seguridad en .NET  Pruebe con una cuenta que no es una cuenta de administrador  Conozca a su enemigo y conozca se a usted mismo  Qué técnicas y tecnologías van a usar los hackers?  Qué técnicas y tecnologías van a usar los testers?
  • 26. No confíe en las entradas de Usuario  Validar todas las entradas  Asuma que todas las entradas son dañinas hasta probar lo contrario  Verificar la validación de datos y rechazar todo en caso contrario  Restricciones, rechazar entradas de usuario con  Chequeo de tipos  Chequeo de tamaño  Chequeo de rango check Seguridad en .NET  Chequeo de formato Validator.ValidationExpression = "w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*";
  • 27. Demo •Validar user input Seguridad en .NET
  • 28. Criptografía  Criptografía simétrica  Criptografía asimétrica  Firmas digitales Seguridad en .NET
  • 29. Qué es criptografía simétrica?  Permite transferencia de datos segura  Confianza segura sobre claves seguras compartidas  Intercambio de claves seguras es un desafío Clave secreta Clave secreta Datos Datos Encriptados Datos Algoritmo Algoritmo Seguridad en .NET Simétrico Simétrico Remitente encripta los Receptor desencripta 1 datos confidenciales usando claves secretas 2 datos confidenciales usando claves secretas
  • 30. Qué es Criptografía Asimétrica?  Permite segura transferencia de datos seguros  Usan pares de claves relacionadas matemáticamente: una clave pública y una clave privada Remitente encripta los Datos Algoritmo Datos 1 datos usando la clave publica del receptor Clave pública Asimétrico Encriptados del Receptor Seguridad en .NET Datos Receptor desencripta Encriptados Algoritmo 2 los datos usando su clave privada Clave privada Asimétrico Datos de Receptor
  • 31. Qué es la Firma Digital?  Puede usar criptografía asimétrica para asegurar la integridad de los datos El remitente parte los datos y encripta los pedazos con su clave privada para generar la firma Algoritmo Valores Hash Algoritmo Datos Firma Hash Clave primaria de Asimétrico remitente El receptor desencripta la firma con la clave pública del remitente Seguridad en .NET y compara los valores con los pedazos de data Firmas Algoritmo Valor Desencript Algoritmo Datos Hash Los valores son iguales? Hash ar Firma Asimétrico Clave pública de remitente

Notas del editor

  1. Producir software de alta calidad en tiempo es una tarea muy difícil de llevar a cabo. No son solo los desarrolladores los que llevan adelante el desarrollo de software. Los equipos de proyectos generalmente consisten en Project Managers, Analistas de negocios, Arquitectos de aplicación, Desarrolladores y Testers. Desafortunadamente, en muchos casos el desafío mayor es la coordinación entre estas personas, ya que no hay una herramienta que ayude con la coordinación. Existe una herramienta que permite compartir información y colaborar de manera mas sencilla en el ciclo de vida del desarrollo de software. Visual Studio Team System. VSTS provee soporte a Arquitectos, Desarrolladores, Testers y Porject Managers. Visual Studio Team System is Microsoft's newest addition to the Visual Studio family. This is a very significant release since, for the first time, Microsoft is targeting the entire software development lifecycle. Building on the features of Microsoft Visual Studio 2005, Team System provides additional features to support Architects, Developers, Testers, and Project Managers. Team System provee un conjunto de nuevas herramientas que apuntan al proceso de desarrollo de software, proveen una plataforma para customizar procesos e integrarlos con los procesos y herramientas existentes. Team System for Software Architects Team Architect incluye Distributed System Designers, que hacen del modelado una nueva funcionalidad integral de Visual Studio. Estos diseñadores no solo crean diagramas, sino que además permiten evaluar el diseño de aplicación y de sistema antes de escribir código. Team System for Software Developers Visual Studio es la herramienta ideal para escribir código, Team Developer hace simple la tarea de los desarrolladores, con todas las herramientas ya vistas, mas herramientas para: -Análisis de código, verificando patrones de defectos específicos. -Análisis dinámico para medir performance en tiempo de ejecución. -Testing Unitario, provisto por framework que acompa VSTS -Code Coverage, permite controlar lineas de código testeadas y ejecutadas. Team System for Software Testers VSTS integra herramientas para soporte de testing tanto para desarrolladores como para testers. Provee una consola para adminsitrar, ejecutar y trackear los test. Team Foundation Server Team Foundation Server ayuda al equipo entero con un nuevo systema de administración de código fuente, tracking de Work Items, builds automáticos, análisis de integración y reportes y sitios de colaboración. Además provee adminsitración de proyectos a partir de la integración con Microsoft Project y Microsoft Excel 2003. -Source Control Management: Control de código fuente escalable, funciona sobre HTTP y HTTPS y se integra con SQL Server 2005. -Work Item Tracking: Un Work Item es “algo” que puede ser asignado y completado por alguien en un equipo. Puede tener estados, como abierto o cerrado, sin embargo, la mayoría de los proyectos tienen diferentes “working items”, cada uno con sus características, estados y transiciones. Son ejemplos bugs, issues, risks, etc. Esto permite utilizar esta herramienta como un bug tracker mucho mas poderoso y sofisticado. -Build Automation: Buena practica muy importante en el desarrollo de software. Se pueden determinar, ejecutar y loguear distintos tipos de builds, y luego ser reportados y analizados.
  2. Team System para Software Architects Logical Datacenter Designer Es utilizado para crear un diagrama lógico de un datacenter, que permite tener una definición de las configuraciones específicas del servidor de aplicaciones, IIS, SQL Server o BizTalk y mostrar como estas representaciones lógicas de configuración de los servidores están interconectardas. Los servidores lógicos pueden agruparse por zonas que definen la frontera lógica de comunicación. Las Zonas tienen indicadas entonces los tipos de servidores lógicos y la dirección y tipo de comunicación que puede entrar y salir del datacenter.
  3. Application Designer Cuando se esta diseñando la arquitectura de una nueva solución, es importante tener un esquema completo de dicha solución. Se producirán continuas refinaciones del modelo hasta que se comience con un diseño mas profundo, descomposición funcional y finalmente construcción. El diseñador de aplicaciones juega un rol importantísimo en este proceso. Es posible diseñar y configurar aplicaciones utilizando esta herramienta. Es posible descomponer una solución en aplicaciones (unidades de código que pueden ser desplegadas independientemente, como Web Services, Smart Clients o sitios Web).
  4. System Designer Se utiliza para crear el diseño de sistemas aplicativos, (unidades de deploy), que están compuestos por aplicaciones definidas en el diagrama de aplicación o desde otros diagramas de sistemas. Cada aplicación puede ser conectada y configurada de manera diferente desde su definición, en función de la manera en la que se realizará el deploy.
  5. El ecosistema informático de hoy día abarca a personas, procesos, dispositivos, aplicaciones, redes y sistemas. Puesto que la disponibilidad y el rendimiento son el resultado de la interacción entre numerosos elementos diversos de ese ecosistema, el proporcionar una experiencia informática confiable es increíblemente complejo y constituye un gran desafío. En ese contexto, no es sorprendente que un sistema pueda fallar ocasionalmente. La computación confiable debe ser una seria iniciativa dentro de su empresa para mejorar la seguridad y confiabilidad de las computadoras. Debido a que las computadoras son un importante componente de los negocios, las mismas deben: Ser confiables. Puedan soportar ataques a la seguridad. Proporcionar una sensación de confianza a ambos, negocios e individuos, de que sus datos son seguros. Es importante comprender que no todos los ataques provienen del exterior de su empresa. Una estimación general de los expertos, entiende que entre el 70% y el 80% de los ataques, problemas de seguridad y acciones maliciosas, se originan dentro de la empresa, por los mismos empleados, con o sin intención.
  6. Los ataques organizacionales envuelven una ruptura a su red para intentar acceder a información confidencial y obtener una ventaja del negocio. Los atacantes pueden hacerlo sólo para probar sus conocimientos para sobrepasar los sistemas de seguridad de su empresa y entrar en su red. Ataques automáticos usan software para realizar un scan de las vulnerabilidades de la red, o para implementar un ataque de “fuerza bruta”. Los ataques de “fuerza bruta” significa intentar con una gran cantidad de usuario/password u otras credenciales hasta obtener permisos en la red. Los ataques del tipo “Negación de Servicios” (Denial of Service – DoS) abruman un servidor con pedidos de acción, de tal modo haciéndolo incapaz de proporcionar su servicio normal. Virus, Caballos de Troya, y gusanos (worms) son programas que explotan algunas vulnerabilidades para auto-instalarse en las computadoras. Una vez presentes en ella, se distribuyen a otras computadoras de la red interna o mediante Internet, y de esta forma se van propagando. Aberturas accidentales en la seguridad, comúnmente resultan de prácticas o procedimientos pobres. Por ejemplo, la exposición de información de seguridad, tales como nombres de usuario y contraseñas, pueden ser explotadas por un atacante para obtener acceso a la red. Ejemplos de intrusiones de seguridad: CodeRed es un gusano que: Usa una IP aleatoria para expandirse infectando IIS vulnerables, explotando un buffer overrun en la versión 2.0 de Microsoft Index Server 2.0, un componente de Internet Information Services (IIS) ILOVEYOU es un virus que: Se contiene en un adjunto de e-mail llamado LOVE LETTER FOR YOU.TXT.VBS (un script Visual Basic) Una vez abierto el adjunto, elimina imágenes y MP3, daña la registry y se expande enviando e-mails a toda la lista de contactos del address book. LOVE LETTER FOR YOU.TXT.VBS Nimda es un virus que: Se expande a sí mismo como adjunto de un e-mail llamado README.EXE. Localiza los archivos .exe del equipo y se inserta dentro de ellos como un recurso, y de esta forma se propaga con el intercambio de archivos entre los usuarios. Adicionalmente realiza un scan de Internet buscando sitios vulnerables para propagarse, infecta mediante la apertura de documentos Word, y se manda a las direcciones de e-mail que haya obtenido de su cliente de e-mail.
  7. Una seguridad pobre puede resultar en un gran daño para sus negocios. Sus competidores pueden obtener conocimientos de sus tecnologías y sistemas, obteniendo ventajas competitivas. Sus competidores podrán copiar sus ideas o tecnologías e implementarlas en sus propios productos. Un ataque puede dar lugar a que sus sistemas queden fuera de línea mientras que se determina y se rectifica el daño. Todo el esfuerzo realizado en combatir y reparar los sistemas dañados es una baja en la productividad. Este tiempo y esfuerzo se podrían haber usado para perseguir las metas de su empresa. Su reputación de negocio se verá dañada. Cuando una intrusión de seguridad es reportada, se asume que sus sistemas de seguridad son malos, entonces varias de sus prácticas deben ser malas. Es fácil llegar a la conclusión que sus sistemas y productos son igualmente pobres. Clientes que no pueden utilizar su website porque está bajo ataque, podrían visitar a los websites de sus competidores. Las pérdidas financieras por intrusiones de seguridad pueden ser sustanciales.
  8. Técnicas recomendadas en seguridad: IPSec – Definición : IPSec se basa en 2 pilares: La protección del contenido de los paquetes IP Proveer defensa contra ataques de red a través del filtrado de paquetes y de un refuerzo en la confianza de la comunicación. Ambos pilares se combinan entre si para usar servicios de criptografía, protocolos de seguridad y administración de llaves dinámicas. Este funcionamiento provee una dura y a su vez flexible comunicación con protección entre las computadoras de la red interna, dominio, sitios, accesos remotos, etc. IPSec puede ser utilizada para bloquear recipientes o transmitir tipos específicos de paquetes. IPSec esta basado en un modelo de túnel de punto a punto, estableciendo un túnel especifico y seguro desde la dirección IP de origen hasta dirección IP de destino. Este modelo permite ser implementado satisfactoriamente en cualquiera de los siguientes escenarios: Local Area Network (LAN): cliente / servidor y punto a punto. Wide Area Network (WAN): Router a Router y Gateway a Gateway. Remote access: clientes que discan mediante el numero telefónico y clientes que acceden a redes privadas desde Internet Implementación de IPSec, mediante políticas de servidor. SSL/TLS Con Secure Socket Layer / Transport Layer Security (SSL/TLS), se tiene la habilidad de poder controlar que trafico cifrado es permitido. Por defecto todo el tráfico es permitido, sin embargo es posible establecer que tipo de cifrados van a permitir las computadoras. Normalmente SSL/TLS se utiliza en aquellos casos en los que se realizan tareas de validación como por ejemplo en operaciones de Home Banking. Una manera fácil de darse cuenta que uno cuenta con una transacción del tipo SSL seria observando en la barra de estado de nuestro browser la existencia de un candado, el cual estaría indicando la existencia de una comunicación segura que en la mayoría de los casos es por medio de un certificado. Por otro lado también se podría observar en el mismo browser que la URL tendría el formato de HTTPS en lugar de HTTP. Habilitación de SSL, para poder utilizar canales seguros es mediante el uso de servidores de certificados y HTTPS Encriptación RPC Esta configuración de seguridad permite a un servidor negociar la comunicación con confidencialidad (encriptación) integridad del mensaje, encriptación de 128 bits y seguridad NTLM v2. Estos valores dependen de la configuración establecida en Lan Maneger Authentication Level. Los cuatro valores posibles serian: Requiere integridad de mensaje : la comunicación fallara si la integridad del mensaje no es negociada. La integridad del mensaje puede ser determinada a través de la firma del mensaje. Estas firmas aseguran que el mensaje no haya sido modificado durante la transmisión del mismo. Requiere confiabilidad en el mensaje : la conexión fallara si la encriptación no es negociada. La encriptación convierte al dato a un formato no legible hasta que sea desencriptado por el destinatario. Requiere sesión con NTLMv2 : Esta conexión fallara si el protocolo NTLMv2 no es negociada. Requiere encriptación de 128 bits : Esta comunicación fallara si una encriptación de 128 bits no es negociada.
  9. Autenticación es el proceso de obtener las credenciales que identifican al usuario, tales cómo nombre de usuario y contraseña, y validar esas credenciales contra alguna autoridad como por ejemplo una base de datos. Si las credenciales son válidas, el usuario que los proveyó es considerado un usuario autenticado. Si usted provee canales de comunicación seguros, pero no verifica quienes lo usan, usted está efectivamente creando un canal oculto para que lo ataquen, el canal cifrado encubrirá con eficacia al atacante.
  10. Para poder configurar la autenticación se debe ingresar al IIS, luego nos desplazamos hasta el sitio web que deseamos configurar y luego vamos a las propiedades del mismo. Dentro de la caja de diálogos que se abre nos posicionamos sobre la solapa Seguridad de Directorios y allí se podrá elegir la distintas opciones. Utilice cualquiera de las siguientes opciones para verificar la identidad de los usuarios: Autenticación Basic : es poco recomendada pero como contra partida es muy sencilla de implementar y es soportada por la mayoría de los sistemas. Una de las grandes desventajas que posee es que envía la password utilizada durante la validación en texto plano, lo cual lo hace poco seguro. Autenticación Digest : es una autenticación mas robusta, y trabaja por medio del envió de un hash en conjunción con Active Directory en lugar de mandar la credenciales en texto plano. Autenticación con firmas digitales y certificados : Los certificados son una manera en la cual se identifican los servidores y los clientes cuando realizan una petición. Los certificados contienen información que es usada para establecer la identidad sobre una red – el proceso es conocido como Autenticación. Similar a un formulario convencional, el certificado habilita a los servidores Web y a los clientes a autenticar antes de establecer una comunicación. Los certificados también contienen valores encriptados o llaves que son utilizados para establecer una comunicación SSL entre el cliente y el servidor. Un servidor de certificados puede ser implementado mediante servidores de Windows 2000 y Windows 2003. Autenticación Integrada : este método envía el nombre de usuario y el password dentro del hash de autenticación. Si este método es habilitado IIS utiliza la Autenticación integrada solo cuando el acceso anónimo fue deshabilitado, por lo cual será requerido el ingreso de un nombre de usuario y contraseña para poder acceder a un recurso determinado. Autenticación Microsoft Passport : este es un método impulsado por Microsoft para poder integrar la autenticación utilizada por todas las cuentas Passport o de Hotmail. Podríamos utilizar este método para poder centralizar el método de autenticación en un solo repositorio en lugar de estar manteniendo diferentes bases de datos de usuarios para cada uno de los distintos sitios en el que uno debe validarse. Y por ultimo métodos de autenticación por biométrica : en este caso dependemos de dispositivos de Hardware como lectores de huellas digitales, reconocimiento de voz y lector de retina entre otros.
  11. Notas para el instructor: Tiempo estimado 15 minutos. Abrir desde las Administrative Tools en el menú Inicio la opción Internet Information Services Extender la entrada Web Sites y luego hacer un clic con el botón derecho del mouse sobre el sitio web que se quiere configurar, luego hacer clic en la opción Properties . En la caja de diálogo que se abre, seleccionar Directory Security , clic en el botón Edit y desde allí se despliegan todos los métodos de autenticación. Discuta con los alumnos cada uno de los métodos de autenticación presentes.
  12. La autorización es un proceso que ocurre luego del proceso de autenticación. Este proceso es el que se encarga de verificar el nivel de acceso del usuario autenticado, sobre un recurso en particular. Durante el proceso de validación se genera un Ticket el cual informa a dónde el usuario tiene acceso. La autorización y la autenticación siempre están juntos, debido a que la mayoría de las políticas de autorización, requieren a un usuario autenticado. La autorización puede basarse en usuarios, que incluye grupos y roles, o puede basarse en código y verificar qué recursos pueden ser accedidos por el código.
  13. Técnicas de Autorización Acceso Web IIS y restricciones IP/DNS : una de las maneras de obtener acceso a los recursos es por medio del nivel se seguridad implementado en el IIS. Dentro de las propiedades del IIS se puede configurar el nivel de seguridad que se le quiere otorgar a un usuario dentro de un sitio Web. Una de las maneras de realizar esto, seria dentro de las propiedades del sitio Web y allí en las opciones de Directory Security . En dicha solapa aparece un botón llamado Edit dentro del apartado IP Address and domain name restrictions . Aquí se debe especificar las direcciones IP o nombres DNS y si se va a garantizar o denegar el acceso del mismo. Seguridad basada en roles .NET : La seguridad basada en los roles de .NET puede ser otorgada según una identidad principal, la cual puede ser construida desde la identidad actual. La identidad puede estar basadas en cuentas usuarios de Windows o puede ser una identidad personaliza no relacionada con la cuenta de usuario de Windows. Las aplicaciones .NET pueden tomar decisiones de autorización basados la identidad actual o en la membresía del rol al cual se pertenece o ambos. Un rol es un conjunto de nombre de principales que tienen los mismos privilegios con respecto a la seguridad. Una identidad principal puede ser miembro de uno o mas roles. Por otro lado, las aplicaciones pueden usar la membresía de los roles para determinar si la acción peticionada puede ser realizada. Las identidades principales están divididas en tres tipos: Generic principals : representa usuarios y roles que existen independientemente de las cuentas de usuarios y roles existentes en Windows 2000/NT. Windows principals : representa cuentas de usuarios de Windows 2000/NT y sus roles correspondientes. Custom principals : pueden ser definidas por la aplicación en el momento que la misma lo necesite. Código de seguridad de acceso : el código de acceso es el mecanismo que le ayuda a limitar el nivel de acceso que se tiene a los recursos y operaciones protegidas. En .NET el código de acceso realiza las siguientes operaciones: Define el conjunto de permisos que representan los derechos de accesos sobre los recursos de sistemas. Habilita a los administradores a configurar las políticas de seguridad asociados al conjunto de permisos con grupos de código. Habilita al código para peticionar permisos si son requeridos para correr la aplicación. Garantiza permisos para que cada assembly sea cargado Para determinar si el código esta autorizado para acceder al recurso o para realizar la operación, el sistema de seguridad llama a un puntero el cual compara los permisos que posee el principal con el declarado por el sistema. Si el sistema comprueba que los permisos no combinan, se rechaza la petición. Listas de control de acceso : otra manera de restringir el acceso a los datos es por medio de permisos NTFS los cuales determinan el nivel de accesibilidad. Para poder implementar seguridad NTFS lo único que se debe realizar seria acceder a las propiedades de la carpeta que contiene el sitio Web y asignar el nivel de seguridad requerido. Logins / Permisos SQL Server : En la sección Logins podemos encontrarnos con 2 tipos de implementaciones, las validaciones a través de cuentas de usuarios de Windows o a través de las cuentas creadas con el mismo SQL. Por otro lado dichas cuentas estarán asociadas a los roles dentro del SQL el cual determinará el nivel de acceso a los diferentes recursos. La manera en la cual se determina el acceso a los recursos es por medio de los permisos que se aplican dentro del SQL a los usuarios o a los roles previamente definidos.
  14. Notas para el instructor: Tiempo estimado 20 minutos. Muestre a los alumnos, cómo deben configurarse las restricciones IP/DNS desde el IIS. A continuación muestre cómo crear logins en Microsoft SQL Server y luego cómo aplicar permisos a esos logins para los objetos (tablas, stored procedures, etc.) y acciones (consulta, modificación, ejecución, etc.)
  15. El primer y más importante paso para obtener una buena seguridad es verificar que la misma sea parte integral del proceso de desarrollo. El equipo Secure Windows Initiative en Microsoft, ha adoptado un conjunto simple de estrategias llamadas SD3. El SD3 es un framework que posee tres conceptos clave: Seguridad por diseño, Seguridad por defecto o de manera predeterminada, y Seguridad en la implementación. Estos tres conceptos deben guiar el proceso de desarrollo para ayudar a entregar sistemas seguros. Seguro por diseño. Implementación de modelos de amenaza y otras consideraciones clave sobre seguridad en las fases de diseño y desarrollo. Estas consideraciones son: formación obligatoria en escritura de código seguro, revisiones de código y pruebas de penetración, herramientas de diagnóstico de código automatizado y arquitectura rediseñada para maximizar la resistencia del software. Seguro de manera predeterminada. Maximización de la seguridad en las configuraciones predeterminadas del software que se distribuye. Si una característica no es activada, el atacante no puede usarla para obtener beneficios. Asegúrese que la aplicación corre con los menores privilegios posibles para que en caso de que un atacante tenga acceso a ella, no la utilice con permisos de administración. Seguro en la implementación. Significa que el producto puede ser mantenido luego de la instalación. Si el producto es difícil de administrar es más difícil mantener una seguridad alta ante amenazas de seguridad. Asegúrese que los usuarios son educados para usar el software de forma segura. Si se descubre una falla de seguridad y se requiere un patch, asegúrese de que el mismo sea fuertemente testeado internamente por el tiempo necesario.
  16. La educación es un ingrediente efectivo en un proceso de desarrollo seguro. Usted debe asegurarse que todos los diseñadores y desarrolladores estén informados respecto a los problemas de seguridad más comunes para no repetir los mismos errores. Los problemas descubiertos tardíamente en el ciclo de desarrollo, son mucho más costosos de resolver. Esto es particularmente cierto para los problemas de seguridad. Asegúrese de que las consideraciones de seguridad se realicen al comienzo del proceso de desarrollo. Los requerimientos de seguridad deben ser considerados con igual o mayor importancia que otros requerimientos funcionales. La seguridad debe considerarse como un una característica del producto, no como un valor agregado. El modelo de amenazas durante la fase de diseño y de desarrollo ha probado ser extremadamente efectivo en determinar los riesgos de seguridad más importantes que posee un producto y cómo puede ser atacado.
  17. Es modelo de amenazas es un análisis que ayuda a los diseñadores a definir los aspectos de seguridad de la especificación de diseño. El concepto del modelo es que usted no puede realizar aplicaciones seguras si no conoce sus amenazas. El modelo analiza las amenazas de seguridad con el objeto de reducir las consecuencias de los ataques. El modelo es simple, sin embargo requiere de tiempo significativo de investigación, y cierta práctica para realizarse correctamente. Sin embargo el tiempo invertido en esta etapa, es tiempo bien invertido. Los bugs descubiertos en esta etapa son mucho más baratos que los descubiertos justo antes de realizar el deploying. Sin en modelo de amenazas, usted no conocerá qué amenazas debe atenuar cada característica de su aplicación. El modelo de amenazas le permitirá identificar sistemáticamente y asignar prioridad a las amenazas que más comúnmente afectan a su sistema.
  18. El modelo de amenazas lo ayuda a: Entender mejor a su aplicación: Los miembros del equipo que invierten tiempo analizando la aplicación de forma estructurada, inevitablemente terminan teniendo un conocimiento profundo de su funcionamiento. Encontrar Bugs: La verificación del modelo de amenazas permite descubrir otros bugs no relacionados con la seguridad. Identificar complejos bugs de diseño: La naturaleza analítica del proceso, puede revelar complejos bugs de seguridad cuando varias pequeñas fallas provocan una amenaza de seguridad mayor. Este tipo de vulnerabilidad no es detectado con técnicas de unit testing realizadas por el desarrollador. Integrar nuevos miembros: El modelo de amenazas es una herramienta muy usada para los nuevos miembros del equipo de desarrollo porque permite familiarizarse con la arquitectura del producto.
  19. Identificación de los activos : para poder contemplar los riesgos que uno posee con la información, primero debería saber dónde se encuentra esta y cómo puede ser accedida. Para poder obtener dicha información es necesaria la construcción de una lista de todos los activos que requieren algún tipo de seguridad. Dentro de estos activos podemos contar a la información propiamente dicha como las bases de datos donde los usuarios guardan sus datos, la confidencialidad de los mismos, etc. A su vez, también habría que tener en cuenta la manera en la cual se acceden a estos datos. Si mi aplicación fuese una aplicación de Internet, uno de los lugares que deberíamos proteger seria nuestro browser, puesto que por fallas de seguridad del explorador utilizado podríamos estar exponiendo indirectamente a nuestra aplicación. Tampoco podríamos dejar de lado a nuestro sistema operativo, el cual corre con la misma suerte que los exploradores utilizados para llegar hasta nuestra aplicación y que en este caso podría inclusive ser una aplicación Windows. La protección de nuestro sistema operativo por medio de services pack y hotfix seria una buena recomendación. Visión de la arquitectura : una vez mas nuestra aplicación debe ser protegida, pero en esta caso nuestra visión se centra en el modelo de arquitectura en el cual se basa. Crear una visión generalizada de la arquitectura de desarrollo nos permite tener un panorama el cual identifique en dónde se encuentran los limites de seguridad, por ejemplo en la validación. En un escenario sencillo, nuestra aplicación ASP.NET contaría con un servidor en le cual se realiza el hosting (IIS) de la misma, un servidor donde se almacenan los datos (SQL) y por último el formulario de autenticación que estaría brindando la aplicación ASP.NET. Descomponer la aplicación : Identificar los ambientes confiables que rodean a todos los componentes de la aplicación. Para cada subsistema, considere como son subidos los datos, la entrada del usuario o si las llamadas del código son seguras y considere cómo son autenticados y autorizados el usuario y el código. Adicionalmente considere las relaciones de confianza entre los servidores. Analizando el flujo de datos entre diferentes subsistemas, conocerá cómo los mismos se intercambian entre diferentes ambientes de seguridad. Considere todos los puntos de entrada de la aplicación, tales como páginas web, sockets, etc. Incluso aunque esos puntos de entrada se utilicen para que la aplicación de comunique internamente, son potenciales rutas de ataque. Considere el código que accede a recursos tales como servidores DNS, variables de ambiente, log de eventos y servicios web entre otros. Cualquier código que demande privilegios especiales, requiere una vigilancia especial. Genere un perfil de seguridad de la aplicación, documentando las características de diseño e implementación de la entrada de datos del usuario, la autenticación, autorización, manejo de configuración y el resto de las áreas donde la aplicación es mas vulnerable. Identificar la amenaza: Tipos de amenazas de Host – Aplicación – Red. Usar la teoría de STRIDE para la averiguación de potenciales amenazas. STRIDE: S poofing (ejemplos podrían ser la falsificación de mails) T ampering (ejemplos de tampering podría ser la alteración de datos durante la transmisión de los mismos) R epudation (ejemplos de estos casos serian, el borrado de archivos críticos) I nformation desclosure (exposición de información en mensaje de error, exponer código en paginas Web) D enial of Services (impedir que ciertos servicios se ejecuten correctamente por sobre carga de peticiones) E levation of Privilege (correr alguna aplicación con privilegios elevados por fallas en el desarrollo del software.) Documentar amenazas : en este caso es muy importante tener documentado todos los problemas que han aparecido durante el desarrollo e implementación de la aplicación, cuales fueron los riesgos que se corrieron y cuales fueron las contramedidas que se tomaron para solucionar el bugs. Todo esto es de gran ayuda debido a que en futuras amenazas uno puede contar con la documentación necesaria para tomar las medidas necesarias. Evaluar Amenazas : Evaluar las amenazas según la formula Riesgo = Probabilidad * Daño potencial El modelo DREAD es usado para refinar el cálculo anterior y agregar una dimensión adicional para medir el impacto. D amage potential: (Daño potencial) Cuánto daño puede la amenaza realizar en el sistema? R eproducibility: (Reproducción) Cuán difícil es reproducir la amenaza? E xploitability: (Explotabilidad) Cuán fácil es para los hackers, lograr explotar la amenaza? A ffected users: (Usuarios afectados) Cuántos usuarios se verían afectados? D iscoverability: (Descubrimiento) Cuán difícil es descubrir la amenaza? Las aplicaciones y compañías usan criterios diferentes para diferentes elementos del modelo DREAD. La fórmula usada para calcular el ranking no es importante debido a que los valores derivados son relativos entre ellos. Sólo debe ser consistente.
  20. Consideraciones de seguridad: Al iniciar el proceso : se debe tener en cuenta en el momento de tomar la decisión de cómo va a funcionar la aplicación, el verificar los roles de los participantes en la utilización de la aplicación. A través del desarrollo : durante el desarrollo se debería verificar que toda la información relevada para el desarrollo de la aplicación esta correctamente implementada. A través de la distribución : también tenemos que tener mucho cuidado en el momento de la distribución de la aplicación, y que la misma no se realice con privilegios mas elevados de los que se necesita. A través de las revisiones : y por ultimo en el momento de realizar el desarrollo de actualizaciones en donde se deben mantener el mismo nivel de seguridad que en el momento del desarrollo inicial, puesto que la corrección de errores detectados no deberían a su ves generar nuevos.
  21. Una tarea altamente recomendada podría ser involucrar al equipo de tester desde el inicio del desarrollo, porque este equipo no sólo se encarga de corroborar el correcto funcionamiento de la aplicación verificando que lo pedido por el cliente se cumpla, si no también verifica que todo el código desarrollado cumpla con los niveles de seguridad previstos. Dentro de estos testeos se podrían realizar como practicas recomendadas, la de correr la aplicación con cuentas de usuarios que no deberían ser corridas, de esta manera se puede verificar si una parte especifica de la aplicación debería estar corriendo con un nivel de seguridad en particular. Por qué tendríamos que hacer este tipo de verificación? Es muy sencillo, la mayoría de los hackers hacen este tipo de trabajos, corren aplicaciones con niveles de seguridad no previstos y de esta forma se generan las vulnerabilidades. Por ultimo no se olvide de bajar todos los servicios no necesarios ya sean para los servidores como para las estaciones de trabajo, puesto que esta, es otra de las vulnerabilidades que normalmente explotan los hacker.
  22. Considere cualquier user input cómo dañina hasta confirmar lo contrario. Obtenga los input válidos y descarte cualquier otro. No realice lo contrario y controle los datos inválidos, los descarte y se quede con el resto. Los hackers pueden burlar la validación del lado del cliente por esto, debe validar adicionalmente del lado del servidor, antes de por ejemplo, almacenarla en una base de datos. Invalidar las entradas extremadamente largas. Invalidar las entradas con caracteres que contengan instrucciones de script tales como <script> u <object>, caracteres reservados de SQL como - -, INSERT, xp_cmsshell, o caracteres de archivos (..\\) Uno de los más poderosos mecanismos para restringir son los controles de validación y las expresiones regulares. Un ejemplo de una expresión regular podría ser: ( \\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)* ) la cual verifica que el user input es una dirección de E-Mail válida.
  23. Notas para el instructor: Tiempo estimado 30 minutos. En esta práctica guiada, indicará a los alumnos cómo validar la entrada de datos de los usuarios. Genere una nueva aplicación web o Windows desde Visual Studio 2005. Agregue un cuadro de texto txtUsername y otro E-mail Configure las propiedades para que txtUsername no permita más de 20 caracteres. Agregue controles de validación para que ambos datos sean requeridos y el E-mail tenga un formato válido. Agregue un botón btnLogin Inserte código en el botón para dar la bienvenida si la entrada del usuario cumple con los requisitos de user input requeridos por la aplicación.
  24. Criptografía La criptografía es utilizada para proporcionar: Confidencialidad . Para garantizar que se mantiene la privacidad de los datos. La confidencialidad suele lograrse mediante el cifrado. Los algoritmos de cifrado (que utilizan claves de cifrado) se utilizan para convertir texto normal en texto cifrado y el algoritmo de descifrado equivalente se utiliza para convertir el texto cifrado de nuevo a texto normal. Los algoritmos de cifrado simétricos utilizan la misma clave para cifrar y descifrar, mientras que los algoritmos asimétricos utilizan un par de claves: pública y privada. Integridad de los datos . Para garantizar la protección de los datos frente a modificaciones accidentales o deliberadas (maliciosas). La integridad suelen proporcionarla los códigos de autenticación de mensajes o valores hash. Un valor hash es un valor numérico de longitud fija derivado de una secuencia de datos. Los valores hash se utilizan para comprobar la integridad de los datos que se envían a través de canales no seguros. Se compara el valor hash de los datos recibidos con el valor hash de los datos que se enviaron para determinar si se alteraron los datos. Autenticación. Para garantizar que los datos proceden de un determinado usuario. Los certificados digitales se utilizan para proporcionar autenticación. Las firmas digitales suelen aplicarse a valores hash, ya que suelen ser considerablemente menores que los datos de origen que representan. Opciones técnicas Utilice un valor hash cuando necesite comprobar que los datos no han sufrido alteraciones durante el tránsito. Utilice un valor hash con clave cuando necesite demostrar que una entidad conoce un secreto sin enviar el secreto y volverlo a recibir, o cuando desee defenderse de intercepciones durante el tránsito mediante un valor hash sencillo. Utilice el cifrado cuando desee ocultar datos que se envían en un medio no seguro o al establecer la persistencia de los datos. Utilice un certificado cuando desee comprobar la identidad de la persona que declara ser propietario de la clave pública. Utilice el cifrado simétrico para mayor velocidad y cuando las dos partes conocen la clave. Utilice el cifrado asimétrico cuando desee intercambiar datos de forma segura a través de un medio no seguro. Utilice la firma digital cuando desee autenticar sin repudio. Utilice un valor salt (número aleatorio generado criptográficamente) para defenderse de los ataques de diccionario.
  25. Criptografía simétrica Cuando hablamos de encriptación y no de transformación, ya estamos adentrándonos en temas de mayor protección, de algoritmos conocidos y seguridad real. El proceso de realizar una encriptación es complejo para ser entendido por nosotros mismos, pero no es limitante para conocer cuáles son los pasos para utilizarlos y qué errores no se deben cometer. Dentro de los algoritmos de encriptación simétrica podemos encontrar los siguientes, algunos más seguros que otros. DES ( Digital Encryption Standard ) Creado en 1975 con ayuda de la NSA ( National Security Agency ); en 1982 se convirtió en un estándar. Utiliza una llave de 56 bit . En 1999 logró ser quebrado (violado) en menos de 24 horas por un servidor dedicado a eso. Esto lo calificó como un algoritmo inseguro y con falencias reconocidas. 3DES ( Three DES o Triple DES ) Antes de ser quebrado el DES, ya se trabajaba en un nuevo algoritmo basado en el anterior. Este funciona aplicando tres veces el proceso con tres llaves diferentes de 56 bits . La importancia de esto es que si alguien puede descifrar una llave, es casi imposible poder descifrar las tres y utilizarlas en el orden adecuado. Hoy en día es uno de los algoritmos simétricos más seguros. IDEA ( International Data Encryption Algorithm ) Más conocido como un componente de PGP (encriptación de mails ), trabaja con llaves de 128 bits . Realiza procesos de shift y copiado y pegado de los 128 bits , dejando un total de 52 sub llaves de 16 bits cada una. Es un algoritmo más rápido que el DES, pero al ser nuevo, aún no es aceptado como un estándar, aunque no se le han encontrado debilidades aún. AES ( Advanced Encryption Standard ) Este fue el ganador del primer concurso de algoritmos de encriptación realizado por la NIST ( National Institute of Standards and Technology ) en 1997. Después de 3 años de estudio y habiendo descartado a 14 candidatos, este algoritmo, también conocido como Rijndael por Vincent Rijmen y Joan Daemen, fue elegido como ganador. Aún no es un estándar, pero es de amplia aceptación a nivel mundial. En nuestra demo utilizaremos el algoritmo AES. .NET provee implementaciones de AES, DES y TripleDES entre otros. El algoritmo más seguro hoy el AES, aunque 3DES también es muy seguro. Este último se utiliza cuando hay necesidad de compatibilidad. AES 128 es aproximadamente 15% más rápido que DES, y AES 256 sigue siendo más rápido que DES. Cualquiera de estos algoritmos utiliza los siguientes dos elementos; ninguno de los dos debe pasarse por alto ni subestimar su importancia: IV (Vector de inicialización) Esta cadena se utiliza para empezar cada proceso de encriptación. Un error común es utilizar la misma cadena de inicialización en todas las encriptaciones. En ese caso, el resultado de las encriptaciones es similar, pudiendo ahorrarle mucho trabajo a un hacker en el desciframiento de los datos. Tiene 16 bytes de largo. Key (llave) Esta es la principal información para encriptar y desencriptar en los algoritmos simétricos. Toda la seguridad del sistema depende de dónde esté esta llave, cómo esté compuesta y quién tiene acceso. El largo de las llaves depende del algoritmo. Al final del documento se darán algunas recomendaciones para el almacenamiento, generación y rotación de llaves. Algoritmo Largos válidos ( bits) Largo por defecto ( bits) DES 64 64 (8 bytes ) TripleDES 128, 192 192 (24 bytes ) Rijndael 128, 192, 256 256 (32 bytes )
  26. Criptografía Asimétrica La encriptación asimétrica permite que dos personas puedan enviarse información encriptada, sin necesidad de compartir la llave de encriptación. Se utiliza una llave pública para encriptar el texto y una llave privada para desencriptar. A pesar de que puede sonar extraño que se encripte con la llave pública y desencripte con la privada, el motivo para hacerlo es el siguiente: si alguien necesita que le envíen la información encriptada, deja disponible la llave pública para que quienes le desean enviar algo lo encripten. Nadie puede desencriptar algo con la misma llave pública. El único que puede desencriptar es quien posea la llave privada, quien justamente es el que recibe la información encriptada. Los algoritmos de encriptación asimétrica más conocidos son: RSA ( Rivest, Shamir, Adleman ) Creado en 1978, hoy es el algoritmo de mayor uso en encriptación asimétrica. Tiene dificultades para encriptar grandes volúmenes de información, por lo que es usado por lo general en conjunto con algoritmos simétricos. Diffie-Hellman (& Merkle ) No es precisamente un algoritmo de encriptación sino un algoritmo para generar llaves públicas y privadas en ambientes inseguros. ECC ( Elliptical Curve Cryptography ) Es un algoritmo que se utiliza poco, pero tiene importancia cuando es necesario encriptar grandes volúmenes de información. El tamaño de la llave es el siguiente: Algoritmo Largos válidos ( bits) Largo por defecto ( bits) RSA 384 a 16.384 (incrementos de a 8) 1.024
  27. Qué es firma digital? La firma digital le permite asegurarse que los datos que recibe no fueron comprometidos, y a conocer la identidad de quien los envió. Para generar una firma digital, quien envía los datos realiza un hashing de los datos y luego encripta ese hash con su clave privada. Entonces, envía los datos y la firma al destinatario. El destinatario realiza el hash sobre los datos y desencripta la firma usando su clave pública. Si el valor del hash y la firma desencriptada , coinciden, los datos están íntegros. Si no coinciden, ocurre alguna de las siguientes posibilidades: Los datos fueron modificados en el camino. Los datos no fueron firmados con la clave privada correspondiente a la clave pública que posee el destinatario. Usted puede combinar firmas digitales y encriptación para proteger datos confidenciales y asegurar su integridad.