Sesión 2E: Secretario Capacitación de Oficiales Karla Ramírez Amezcua Veracruz English Toastmasters.
Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas...
-
Upload
lucio-cirino -
Category
Documents
-
view
9 -
download
2
Transcript of Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas...
Desarrollo de Desarrollo de aplicaciones seguras aplicaciones seguras con .NETcon .NET
Alejandro MezcuaAlejandro MezcuaMVP .NETMVP .NETZaltor Soluciones InformáticasZaltor Soluciones Informá[email protected]@zaltor.com
AgendaAgenda
ObjetivoObjetivo
La importancia de la seguridad en las La importancia de la seguridad en las aplicacionesaplicaciones
Prácticas aconsejables de seguridadPrácticas aconsejables de seguridad
Tecnologías de seguridadTecnologías de seguridad
Implementación en .NETImplementación en .NET
ConclusionesConclusiones
AgendaAgenda
ObjetivoObjetivo
Importancia de la seguridad en las Importancia de la seguridad en las aplicacionesaplicaciones
Prácticas aconsejables de seguridadPrácticas aconsejables de seguridad
Tecnologías de seguridadTecnologías de seguridad
Implementación en .NETImplementación en .NET
ConclusionesConclusiones
ObjetivoObjetivo
Mostrar distintos aspectos de seguridad Mostrar distintos aspectos de seguridad a tener en cuenta por los a tener en cuenta por los desarrolladoresdesarrolladores
Enseñar diversas capacidades de .NET Enseñar diversas capacidades de .NET en el área de seguridaden el área de seguridad
AgendaAgenda
ObjetivoObjetivo
La importancia de la seguridad en las La importancia de la seguridad en las aplicacionesaplicaciones
Prácticas aconsejables de seguridadPrácticas aconsejables de seguridad
Tecnologías de seguridadTecnologías de seguridad
Implementación en .NETImplementación en .NET
ConclusionesConclusiones
Importancia de la seguridad en las Importancia de la seguridad en las aplicacionesaplicaciones Un mundo hostil (I)Un mundo hostil (I)
Usuarios móviles conectan desde redes Usuarios móviles conectan desde redes públicaspúblicas
Trabajadores conectando a la red Trabajadores conectando a la red corporativacorporativa
Redes fijas, Wireless, modem, VPNRedes fijas, Wireless, modem, VPN
PCs de la empresa, PCs privados PCs de la empresa, PCs privados
Trabajadores conectando a (y desde) otras Trabajadores conectando a (y desde) otras redesredes
Puntos de acceso a Internet públicos, redes de Puntos de acceso a Internet públicos, redes de partners, de clientespartners, de clientes
Partners conectando a Servicios WebPartners conectando a Servicios Web
Importancia de la seguridad en las Importancia de la seguridad en las aplicacionesaplicaciones Un mundo hostil (II)Un mundo hostil (II)
Dependencia de InternetDependencia de InternetCada vez más aplicaciones requieren el uso Cada vez más aplicaciones requieren el uso de Internetde Internet
¡Internet ES hostil por naturaleza!¡Internet ES hostil por naturaleza!
Lleno de ladrones, vándalos, criminales y Lleno de ladrones, vándalos, criminales y hackers, hackers,
Prácticas dañinas por negligencia o Prácticas dañinas por negligencia o deliberadas deliberadas
Procedimientos internos débiles hacen a las Procedimientos internos débiles hacen a las aplicaciones susceptibles de ataquesaplicaciones susceptibles de ataques
Importancia de la seguridad en las Importancia de la seguridad en las aplicacionesaplicaciones Tipos comunes de problemasTipos comunes de problemas
Fallos de conectividad
Ataques corporativos
Datos restringidos
Fallos de seguridad
accidentales
AtaquesAutomatizados
Hackers
Virus, Troyanos, y gusanos
Denegación de Servicio (DoS)
DoS
Importancia de la seguridad en las Importancia de la seguridad en las aplicacionesaplicaciones ConsecuenciasConsecuencias
Virus de correo, fraude financiero, Virus de correo, fraude financiero, sabotaje de las redes y otros problemas sabotaje de las redes y otros problemas de seguridad derivan en:de seguridad derivan en:
Robos de propiedad intelectualRobos de propiedad intelectual
Caídas de sistemasCaídas de sistemas
Pérdidas de productividadPérdidas de productividad
Daños a la reputaciónDaños a la reputación
Pérdida de confianza de los clientesPérdida de confianza de los clientes
Pérdidas financieras por falta de ingresosPérdidas financieras por falta de ingresos
Importancia de la seguridad en las Importancia de la seguridad en las aplicacionesaplicaciones Ejemplos (I)Ejemplos (I)
Gusano CodeRedGusano CodeRedInicio de la infección el 19 de julio de 2001Inicio de la infección el 19 de julio de 2001Infectó a más de 359.000 equipos en 14 horasInfectó a más de 359.000 equipos en 14 horasProgramado para lanzar un ataque DoS a Programado para lanzar un ataque DoS a www.whitehouse.govwww.whitehouse.govAprovechaba un error de ‘buffer overrun’ conocido Aprovechaba un error de ‘buffer overrun’ conocido de IIS (en Index Server)de IIS (en Index Server)
Importancia de la seguridad en las Importancia de la seguridad en las aplicacionesaplicaciones Ejemplos (II)Ejemplos (II)
ILoveYouILoveYouInfecta mediante un archivo adjunto de tipo .vbs Infecta mediante un archivo adjunto de tipo .vbs que simulaba ser una carta de amor (extensión no que simulaba ser una carta de amor (extensión no visible para usuarios normales)visible para usuarios normales)El email se copia a si mismo a todos los contactos El email se copia a si mismo a todos los contactos de la agendade la agendaBorra imágenes y archivos .mp3 y corrompe el Borra imágenes y archivos .mp3 y corrompe el registro del sistemaregistro del sistema
Importancia de la seguridad en las Importancia de la seguridad en las aplicacionesaplicaciones Ejemplos (III)Ejemplos (III)
Gusano NimdaGusano NimdaExplota la vulnerabilidad ‘Web server folder Explota la vulnerabilidad ‘Web server folder traversal’traversal’Se infecta vía email, o mediante conexiones de red Se infecta vía email, o mediante conexiones de red abiertasabiertasCrea nuevas conexiones de red que ponen en Crea nuevas conexiones de red que ponen en peligro la seguridad del sistemapeligro la seguridad del sistemaSe copia a si mismo a determinado usuarios de la Se copia a si mismo a determinado usuarios de la agendaagendaMantuvo a Internet ‘bloqueada’ el 18 de Mantuvo a Internet ‘bloqueada’ el 18 de septiembre de 2001septiembre de 2001
Importancia de la seguridad en las Importancia de la seguridad en las aplicacionesaplicaciones Ejemplos (IV)Ejemplos (IV)
Gusano MyDoomGusano MyDoomSe propaga mediante correo electrónicoSe propaga mediante correo electrónicoAdjunta diversos archivos con distinto nombreAdjunta diversos archivos con distinto nombreSimula ser un mensaje del administradorSimula ser un mensaje del administradorEl usuario lo abre y sólo ve texto ininteligible en el El usuario lo abre y sólo ve texto ininteligible en el bloc de notasbloc de notasCopia un ejecutable preparado para lanzar un DoS Copia un ejecutable preparado para lanzar un DoS contra contra www.sco.comwww.sco.com y y www.microsoft.comwww.microsoft.comSe reenvía modificando el campo from con los Se reenvía modificando el campo from con los usuarios de la agendausuarios de la agenda
Importancia de la seguridad en las Importancia de la seguridad en las aplicacionesaplicaciones Ejemplos (V)Ejemplos (V)
Uso de ‘ingeniería social’Uso de ‘ingeniería social’La mayoría de estos ingenios utiliza la ingeniería La mayoría de estos ingenios utiliza la ingeniería social para hacer ‘picar’ a los receptoressocial para hacer ‘picar’ a los receptoresPara funcionar confían en que una gran cantidad Para funcionar confían en que una gran cantidad de usuarios abrirán un determinado correo y de usuarios abrirán un determinado correo y quedarán infectadosquedarán infectados
Importancia de la seguridad en las Importancia de la seguridad en las aplicacionesaplicaciones RetosRetos Retos Razones
Hackers vs. Defensores
Un hacker necesita conocer UNA vulnerabilidad; el defensor necesita asegurar TODAS las vías de entradaLos hackers disponen de todo el tiempo del mundo
Seguridad vs. Usabilidad
Los sistemas seguros son más difíciles de usarLas contraseñas largas y complejas son difíciles de recordarLos usuarios prefieren contraseñas simples
Seguridad a posteriori
Los programadores y los ‘managers’ suelen pensar que la seguridad no añade ‘valor’ a la soluciónLa seguridad se trata normalmente justo antes de distribuir el producto, cuando corregir los fallos es muy caro
¿Necesito seguridad?
…
Importancia de la seguridad en las Importancia de la seguridad en las aplicacionesaplicaciones Vulnerabilidades comunesVulnerabilidades comunes
Dos fallos principales de seguridadDos fallos principales de seguridadConfianza en los datos de entradaConfianza en los datos de entrada
““¡Todos los datos de entrada son culpables ¡Todos los datos de entrada son culpables hasta que se demuestre lo contrario!”hasta que se demuestre lo contrario!”
Son la fuente de los problemas más gravesSon la fuente de los problemas más graves
Buffer OverrunsBuffer Overruns
Inyección de SQLInyección de SQL
Cross-site ScriptingCross-site Scripting
Todo lo demásTodo lo demás
AgendaAgenda
ObjetivoObjetivo
Importancia de la seguridad en las Importancia de la seguridad en las aplicacionesaplicaciones
Prácticas aconsejables de seguridadPrácticas aconsejables de seguridad
Tecnologías de seguridadTecnologías de seguridad
Implementación en .NETImplementación en .NET
ConclusionesConclusiones
Prácticas aconsejables de Prácticas aconsejables de seguridadseguridad Aproximación funcional a la seguridadAproximación funcional a la seguridad
Cualquier sistema es tan seguro como Cualquier sistema es tan seguro como el menos seguro de sus componentesel menos seguro de sus componentes
La seguridad ha de ser considerada en La seguridad ha de ser considerada en todos sus nivelestodos sus niveles
Durante el diseño, el desarrollo y la puesta Durante el diseño, el desarrollo y la puesta en producciónen producción
A nivel de la red, de los equipos y de la A nivel de la red, de los equipos y de la aplicaciónaplicación
Prácticas aconsejables de seguridadPrácticas aconsejables de seguridad Seguridad durante todo el proyectoSeguridad durante todo el proyecto
Concepto /Concepto /RequisitosRequisitos
DiseñosDiseñosCompletosCompletos
Planes de pruebaPlanes de pruebaCompletosCompletos
CódigoCódigoCompletoCompleto
V1.0V1.0 Pasos Pasos posterioresposteriores
Preguntas de Preguntas de seguridad en las seguridad en las
entrevistasentrevistas
Pruebas de mínimos Pruebas de mínimos privilegiosprivilegios
Acuerdo sobre los Acuerdo sobre los criterios de criterios de seguridadseguridad
Modelo deriesgos
Revisiónexterna
Empuje
Auditoría de
seguridad
Aprender y refinar
Formación del grupo
Revisión deseguridad
Revisión de fallos anteriores Uso de guías comunes de seguridad Uso de herramientas
SDSD33
Prácticas aconsejables de Prácticas aconsejables de seguridadseguridad Un marco de seguridadUn marco de seguridad
Seguro por Seguro por DiseñoDiseño
(Design)(Design)
Seguro por Seguro por DefectoDefecto(Default)(Default)
Seguro en la Seguro en la Distribución Distribución
(Deployment)(Deployment)
Arquitectura y código segurosArquitectura y código segurosAnálisis de riesgosAnálisis de riesgosReducción de vulnerabilidadesReducción de vulnerabilidades
Reducción del posible área de ataqueReducción del posible área de ataqueCaracterísticas no usadas del producto Características no usadas del producto sin habilitar por defectosin habilitar por defectoRequerir mínimos privilegios privilegeRequerir mínimos privilegios privilege
Proteger, detectar, defender, Proteger, detectar, defender, recuperar, administrarrecuperar, administrarProcesos: How to’s, guías de Procesos: How to’s, guías de arquitecturaarquitecturaFormaciónFormación
Prácticas aconsejables de Prácticas aconsejables de seguridadseguridad Qué es el análisis de riesgosQué es el análisis de riesgos
Es un análisis de la aplicación desde el punto Es un análisis de la aplicación desde el punto de vista de la seguridadde vista de la seguridad
Ayuda a ver al equipo de desarrollo dónde es más Ayuda a ver al equipo de desarrollo dónde es más vulnerable la aplicaciónvulnerable la aplicaciónDetermina que riesgos hay que disminuir y cómo Determina que riesgos hay que disminuir y cómo hacerlohacerlo
Es una parte crucial del proceso de diseñoEs una parte crucial del proceso de diseñoEs imposible construir sistemas seguros sin un Es imposible construir sistemas seguros sin un buen conocimiento de los riesgos potencialesbuen conocimiento de los riesgos potenciales
Reduce el coste requerido para asegurar una Reduce el coste requerido para asegurar una aplicaciónaplicación
Es más barato encontrar un bug en el diseño y Es más barato encontrar un bug en el diseño y solucionarlo en ese momento que arreglar código solucionarlo en ese momento que arreglar código a posterioria posteriori
Prácticas aconsejables de Prácticas aconsejables de seguridadseguridad Proceso de análisis de riesgosProceso de análisis de riesgos
El proceso será similar al siguiente:El proceso será similar al siguiente:Crear un equipo que realizará el análisisCrear un equipo que realizará el análisisDescomponer la aplicación en sus apartados – Descomponer la aplicación en sus apartados – analizar su operación mediante diagramas de flujo analizar su operación mediante diagramas de flujo de datos por ejemplode datos por ejemploExaminar los flujos datos y determinar si existe Examinar los flujos datos y determinar si existe algún riesgo en cualquier parte del sistemaalgún riesgo en cualquier parte del sistemaNumerar los riesgos por orden decreciente de Numerar los riesgos por orden decreciente de importanciaimportanciaEscoger cómo responder a cada uno de los riesgosEscoger cómo responder a cada uno de los riesgosSeleccionar las técnicas que permitan mitigarlosSeleccionar las técnicas que permitan mitigarlosSeleccionar las tecnologías apropiadas para cada Seleccionar las tecnologías apropiadas para cada una de las técnicas seleccionadasuna de las técnicas seleccionadas
Prácticas aconsejables de Prácticas aconsejables de seguridadseguridad Reparto de tareasReparto de tareas
La seguridad en las aplicaciones se La seguridad en las aplicaciones se consigue involucrando a todas las consigue involucrando a todas las partes implicadas:partes implicadas:
Arquitectos de la soluciónArquitectos de la solución
DesarrolladoresDesarrolladores
Administradores de los sistemas finalesAdministradores de los sistemas finales
Es común ver que se contrata un Es común ver que se contrata un desarrollo y luego no se puede desarrollo y luego no se puede implantar por problemas de seguridad implantar por problemas de seguridad en los sistemas finalesen los sistemas finales
Firewalls, permisos, etc.Firewalls, permisos, etc.
Prácticas aconsejables de Prácticas aconsejables de seguridadseguridad La responsabilidad de los programadoresLa responsabilidad de los programadores
Los desarrolladores deben contribuir Los desarrolladores deben contribuir mediante:mediante:
Su entendimiento de las técnicas de Su entendimiento de las técnicas de programación segura existentesprogramación segura existentes
Conociendo cuáles son las vulnerabilidades Conociendo cuáles son las vulnerabilidades más comunes y cómo evitarlasmás comunes y cómo evitarlas
Adoptando prácticas de programación que Adoptando prácticas de programación que incorporen conceptos de seguridad desde incorporen conceptos de seguridad desde el principioel principio
Prácticas aconsejables de seguridadPrácticas aconsejables de seguridad Consejos (I)Consejos (I)
Utilizar el análisis de riesgos Utilizar el análisis de riesgos Identificar las posibles vulnerabilidades durante la Identificar las posibles vulnerabilidades durante la fase de diseñofase de diseño
EducaciónEducaciónAprender sobre los defectos comunes y cómo Aprender sobre los defectos comunes y cómo evitarlosevitarlos
Entender la aplicación correcta de las tecnologías Entender la aplicación correcta de las tecnologías de seguridadde seguridad
Revisión del códigoRevisión del códigoHacer énfasis en código que:Hacer énfasis en código que:
Accede a la redAccede a la red
Se ejecuta por defecto o con privilegios elevadosSe ejecuta por defecto o con privilegios elevados
Utiliza protocolos no autenticadosUtiliza protocolos no autenticados
Prácticas aconsejables de seguridadPrácticas aconsejables de seguridad Consejos (II)Consejos (II)
Utilización de herramientas:Utilización de herramientas:Crea herramientas para automatizar las pruebas, a Crea herramientas para automatizar las pruebas, a gran escalagran escalaLa mejor herramienta es ¡tu cabeza!La mejor herramienta es ¡tu cabeza!
Por si solas las herramientas no arreglan los problemasPor si solas las herramientas no arreglan los problemas
Considera la migración a código .NETConsidera la migración a código .NETNo reinventes la ruedaNo reinventes la rueda
Evita la encriptación propia - La encriptación es Evita la encriptación propia - La encriptación es difícil y las soluciones propias raramente son difícil y las soluciones propias raramente son buenasbuenasUtiliza la infraestructura (SSL/IPSec)Utiliza la infraestructura (SSL/IPSec)Utiliza componentes probados, como CAPICOM o el Utiliza componentes probados, como CAPICOM o el namespace de Cryptography de .NETnamespace de Cryptography de .NET
Prácticas aconsejables de seguridadPrácticas aconsejables de seguridad Consejos (III)Consejos (III)
No uses el equipo como administradorNo uses el equipo como administradorEs posible ejecutar cualquier aplicación con Es posible ejecutar cualquier aplicación con usuarios con menos privilegiosusuarios con menos privilegiosEs necesario realizar una configuración más Es necesario realizar una configuración más avanzadaavanzadaMucha gente no lo usa por decir que no se puedeMucha gente no lo usa por decir que no se puedeMuy recomendable si la máquina está conectada a Muy recomendable si la máquina está conectada a InternetInternet
Guía de configuración:Guía de configuración:http://msdn.microsoft.com/library/en-us/dv_vstechart/html/http://msdn.microsoft.com/library/en-us/dv_vstechart/html/tchdevelopingsoftwareinvisualstudionetwithnon-administrativeprivileges.asptchdevelopingsoftwareinvisualstudionetwithnon-administrativeprivileges.asp
AgendaAgenda
ObjetivoObjetivo
Importancia de la seguridad en las Importancia de la seguridad en las aplicacionesaplicaciones
Prácticas aconsejables de seguridadPrácticas aconsejables de seguridad
Tecnologías de seguridadTecnologías de seguridad
Implementación en .NETImplementación en .NET
ConclusionesConclusiones
Tecnologías de seguridadTecnologías de seguridad Resumen Resumen
Los programadores han de conocer Los programadores han de conocer cuáles son y cómo se utilizan:cuáles son y cómo se utilizan:
EncriptaciónEncriptación
Comunicación seguraComunicación segura
AutenticaciónAutenticación
AutorizaciónAutorización
FirewallsFirewalls
AuditoríaAuditoría
Tecnologías de seguridadTecnologías de seguridad ¿Que es la encriptación? (I)¿Que es la encriptación? (I)
Es la ciencia que trata la codificación de la Es la ciencia que trata la codificación de la informacióninformación
Protege la identidad de un usuario o sus datos Protege la identidad de un usuario o sus datos para que no puedan ser leídospara que no puedan ser leídos
Protege la información para que no pueda ser Protege la información para que no pueda ser modificadamodificada
Verifica que la información es originada por un Verifica que la información es originada por un determinado usuario determinado usuario
Tecnologías de seguridadTecnologías de seguridad ¿Que es la encriptación? (II)¿Que es la encriptación? (II)
Es el proceso de codificación de la Es el proceso de codificación de la informacióninformación
Una clave es una cadena de bits que varía el Una clave es una cadena de bits que varía el resultado de una determinada encriptaciónresultado de una determinada encriptación
La encriptación sólo es tan fuerte como la La encriptación sólo es tan fuerte como la fuerza de su clavefuerza de su clave
Algoritmo de encriptaciónClave
Datos
Tecnologías de seguridadTecnologías de seguridad Encriptación simétricaEncriptación simétrica
Se utiliza la misma clave y el mismo algoritmo Se utiliza la misma clave y el mismo algoritmo para codificar y decodificar la informaciónpara codificar y decodificar la informaciónRápida y eficienteRápida y eficienteEs difícil intercambiar las claves de manera Es difícil intercambiar las claves de manera segura con lo que se modifican frecuentementesegura con lo que se modifican frecuentemente
DatosDatos
Encriptar Desencriptar
La clave es conocida por el emisor y el receptor
Tecnologías de seguridadTecnologías de seguridad Encriptación simétrica. AlgoritmosEncriptación simétrica. Algoritmos
DESDESRelativamente lentaRelativamente lentaClave de 56 bits, no muy seguraClave de 56 bits, no muy segura
Triple DESTriple DESRealiza tres operaciones DES. Equivale a tener una Realiza tres operaciones DES. Equivale a tener una clave de 168 bits. Relativamente lenta. Más segura que clave de 168 bits. Relativamente lenta. Más segura que DES y ampliamente utilizada.DES y ampliamente utilizada.
Advanced Encryption Standard (AES)Advanced Encryption Standard (AES)Claves de 128, 192 y 256 bits. Actualmente el estándar Claves de 128, 192 y 256 bits. Actualmente el estándar usado por el gobierno norteamericanousado por el gobierno norteamericano
International Data Encryption Algorithm (IDEA)International Data Encryption Algorithm (IDEA)Clave de 128 bit. Requiere una licencia para su uso Clave de 128 bit. Requiere una licencia para su uso comercial comercial
RC2RC2Claves de 8 a 128 bits. Cifrado basado en ‘streams’.Claves de 8 a 128 bits. Cifrado basado en ‘streams’.
Tecnologías de seguridadTecnologías de seguridad Encriptación asimétricaEncriptación asimétrica
Dos claves, una privada y una públicaDos claves, una privada y una pública
Los mensajes codificados con la clave Los mensajes codificados con la clave pública sólo pueden ser decodificados pública sólo pueden ser decodificados usando la clave privada y vice versausando la clave privada y vice versa
La encriptación asimétrica es más segura La encriptación asimétrica es más segura que la simétrica, pero no tan eficienteque la simétrica, pero no tan eficiente
Usuario B
Clave Pública
Clave Privada
Usuario A
Clave Pública
Tecnologías de seguridadTecnologías de seguridad Encriptación asimétrica. Algoritmos Encriptación asimétrica. Algoritmos
RSARSAClaves de 384 a 16384. Utilizada normalmente Claves de 384 a 16384. Utilizada normalmente para codificar datos y crear firmas digitales. para codificar datos y crear firmas digitales. Estándar de-facto para codificación públicaEstándar de-facto para codificación pública
Diffie-HelmanDiffie-HelmanClaves de 768 a 1014 bits. Primer algoritmo de Claves de 768 a 1014 bits. Primer algoritmo de clave pública, reemplazado por RSAclave pública, reemplazado por RSA
DSADSAClaves de 512 a 1024 bits. Sólo para firmas Claves de 512 a 1024 bits. Sólo para firmas digitalesdigitales
Tecnologías de seguridadTecnologías de seguridad Encriptación. Verificación hash Encriptación. Verificación hash
Usuario A Usuario B
Datos
Datos
Valor Hash
AlgoritmoHash
Datos
Valor Hash
Valor Hash
Algoritmo HashSi los valores
coinciden los datos son válidos
Usuario A envía los datos y el hash al Usuario B
Usuario A User B
Datos
Valor Hash
AlgoritmoHash
Codificación del Hash con clave privada del
Usuario A
Datos
Valor Hash
Decodificación del Hash con
clave pública del Usuario A
AlgoritmoHash
Valor Hash
Si los valores hash coinciden los datos han
de venir del Usuario A, es el único que lo puede
codificar
Tecnologías de seguridadTecnologías de seguridad Encriptación. Firmas digitales Encriptación. Firmas digitales
Tecnologías de seguridadTecnologías de seguridad Encriptación. Certificados digitales Encriptación. Certificados digitales
Un certificado digital vincula una clave pública a una Un certificado digital vincula una clave pública a una entidad o persona a través de una tercera parte entidad o persona a través de una tercera parte (autoridad de certificación, CA)(autoridad de certificación, CA)Un usuario, equipo, servicio o aplicación crea su par Un usuario, equipo, servicio o aplicación crea su par de claves (publica/privada)de claves (publica/privada)La clave pública se envía a la autoridad de La clave pública se envía a la autoridad de certificación de manera seguracertificación de manera seguraLa CA verifica la información y, si lo aprueba, firma la La CA verifica la información y, si lo aprueba, firma la clave pública con su clave privadaclave pública con su clave privadaUn usuario puede entonces verificar, a través de la Un usuario puede entonces verificar, a través de la CA, si la clave pública viene de quien dice venirCA, si la clave pública viene de quien dice venirUsos típicosUsos típicos
Comunicación wireless 802.1x, certificados digitales, Comunicación wireless 802.1x, certificados digitales, autenticación en Internet, IPSec, firmas de códigoautenticación en Internet, IPSec, firmas de código
Tecnologías de seguridadTecnologías de seguridad Comunicación segura Comunicación segura
Son técnicas probadas que utilizan la Son técnicas probadas que utilizan la encriptación para codificar la comunicación en encriptación para codificar la comunicación en la redla red
Incluyen:Incluyen:IPSec, SSL, codificación RPCIPSec, SSL, codificación RPC
SSL IPSec codificación RPC
Tecnologías de seguridadTecnologías de seguridad Comunicación segura. SSL Comunicación segura. SSL
El usuario accede al servidor Web mediante HTTPS
El navegador crea una clave de sesión única y la codifica usando la clave pública del servidor Web, generada a partir de un certificado
El servidor Web recibe la clave de la sesión y la decodifica mediante su clave privada
A partir de ese momento el navegador codifica la información usando la clave pública del servidor
1
2
3
4
Certificado del Servidor Web
Mensaje
Servidor Web
HTTPSHTTPS
Navegador SSL
1
2
34
DemoDemo Creación de un certificado Creación de un certificado
SSL para un servidorSSL para un servidor
Tecnologías de seguridadTecnologías de seguridad Autenticación Autenticación
Proceso para obtener las credenciales de un Proceso para obtener las credenciales de un usuario/agente y verificarlas frente a una usuario/agente y verificarlas frente a una autoridadautoridad
MétodosMétodosBásica, DigestBásica, Digest
Firmas y certificados digitales Firmas y certificados digitales
IntegradaIntegradaKerberos v5Kerberos v5
NTLMNTLM
Microsoft PassportMicrosoft Passport
BiometríaBiometría
Tecnologías de seguridadTecnologías de seguridad Autenticación. Cuándo usar Autenticación. Cuándo usar certificadoscertificados
En aplicaciones WebEn aplicaciones WebSSL usa certificados X.509 para autenticar el SSL usa certificados X.509 para autenticar el servidorservidorOpcionalmente el servidor puede requerir que el Opcionalmente el servidor puede requerir que el cliente se autentique con su propio certificadocliente se autentique con su propio certificado
En aplicaciones distribuidas:En aplicaciones distribuidas:Las aplicaciones pueden usar un canal SSLLas aplicaciones pueden usar un canal SSLEl cliente y el servidor se verifican mutuamente El cliente y el servidor se verifican mutuamente con sus certificadoscon sus certificados
En SmartCardsEn SmartCardsLos certificados de cliente se almacenan en una Los certificados de cliente se almacenan en una tarjetatarjeta
Tecnologías de seguridadTecnologías de seguridad Autenticación. Cuándo usar Autenticación. Cuándo usar integradaintegrada
Cliente
¿Intranet?¿Intranet?No se puedeNo se puedeNoNo
SiSi
FirewallFirewall
SiSi
NoNo NTLMNTLM
- Autenticación - Autenticación del Servidordel Servidor
NoNo
SiSi
¿Dominio de¿Dominio deActive Directory?Active Directory? KerberosKerberos
- Autenticación - Autenticación del Cliente y del del Cliente y del servidorservidor
IntegradaIntegrada
¿Windows 2000¿Windows 2000O posterior?O posterior?
DemoDemo Distintos métodos de Distintos métodos de autenticación con IIS autenticación con IIS
Tecnologías de seguridadTecnologías de seguridad Autorización Autorización
Es el proceso de confirmar que un Es el proceso de confirmar que un agente autenticado puede realizar agente autenticado puede realizar distintas tareasdistintas tareas
Se aplican derechos sobre los distintos Se aplican derechos sobre los distintos recursos (archivos, bases de datos, etc)recursos (archivos, bases de datos, etc)
Basados en usuariosBasados en usuariosGrupos y rolesGrupos y roles
Basado en códigoBasado en códigoDerechos del códigoDerechos del código
Tecnologías de seguridadTecnologías de seguridad Autorización. Modelo de delegación Autorización. Modelo de delegación
El cliente se autentica en el primer punto y El cliente se autentica en el primer punto y sus credenciales se pasan a los demássus credenciales se pasan a los demás
Aplicación Web Base de datos u otro recurso
AA
BB
CC
AA
BB
CC
Tecnologías de seguridadTecnologías de seguridad Autorización. Modelo de confianza Autorización. Modelo de confianza
Los clientes se asocian a rolesLos clientes se asocian a roles
Dependiendo del rol se usan unas Dependiendo del rol se usan unas credenciales u otrascredenciales u otras
El servidor de recursos confía en el de El servidor de recursos confía en el de aplicaciónaplicación
Aplicación Web Base de datos u otro recurso
AA
BB
CC
11
22
Rol1
Rol2
Tecnologías de seguridadTecnologías de seguridad Firewalls Firewalls
Los firewalls proporcionan:Los firewalls proporcionan:Filtrado de paquetes de redFiltrado de paquetes de red
Filtrado de aplicacionesFiltrado de aplicaciones
AuditoriaAuditoria
Los firewalls NO proporcionan:Los firewalls NO proporcionan:Protección contra ataques a nivel de Protección contra ataques a nivel de aplicación al utilizar HTTP o HTTPSaplicación al utilizar HTTP o HTTPS
Tecnologías de seguridadTecnologías de seguridad Auditoría (I) Auditoría (I)
La auditoría permite:La auditoría permite:Detectar intrusiones y actividades Detectar intrusiones y actividades sospechosassospechosas
Mantener un registro legal de actividadMantener un registro legal de actividad
Ayuda a diagnosticar posibles fallos de Ayuda a diagnosticar posibles fallos de seguridadseguridad
Tecnologías de seguridadTecnologías de seguridad Auditoría (II) Auditoría (II)
Es conveniente establecer logs de Es conveniente establecer logs de seguridad acerca de:seguridad acerca de:
Acceso a ficherosAcceso a ficheros
Intentos de inicio de sesión (válidos e Intentos de inicio de sesión (válidos e inválidos)inválidos)
Fallos de aplicaciónFallos de aplicación
AgendaAgenda
ObjetivoObjetivo
Importancia de la seguridad en las Importancia de la seguridad en las aplicacionesaplicaciones
Prácticas aconsejables de seguridadPrácticas aconsejables de seguridad
Tecnologías de seguridadTecnologías de seguridad
Implementación en .NETImplementación en .NET
ConclusionesConclusiones
Implementación en .NETImplementación en .NET Ejecución de aplicaciones .NET Ejecución de aplicaciones .NET
.NET Framework Class Library Support
Thread Support COM Marshaler
Type Checker Exception Manager
MSIL to NativeCompilers
Code ManagerGarbage
Collection
Security Engine Debugger
Class Loader
¡El Gran Hermano te vigila!¡El Gran Hermano te vigila!
Implementación en .NETImplementación en .NET Seguridad de tipos Seguridad de tipos
Controla que se acceda únicamente a Controla que se acceda únicamente a posiciones de memoria permitidasposiciones de memoria permitidas
El acceso a los objetos se hace El acceso a los objetos se hace únicamente mediante los tipos únicamente mediante los tipos expuestosexpuestos
Propiedades, campos, métodosPropiedades, campos, métodos
Implementación en .NETImplementación en .NET Protección contra buffer Protección contra buffer overrunsoverruns
Los strings son inmutablesLos strings son inmutablesEl sistema crea y destruye strings con el El sistema crea y destruye strings con el tamaño correcto en todo momento (clase tamaño correcto en todo momento (clase String)String)
Para manipular strings de manera Para manipular strings de manera eficiente se usa la clase StringBuilder eficiente se usa la clase StringBuilder que controla los tamañosque controla los tamaños
Pueden ocurrir buffer overruns si se Pueden ocurrir buffer overruns si se utiliza código nativoutiliza código nativo
Mediante COM Interop o acceso a código no Mediante COM Interop o acceso a código no seguro (unsafe)seguro (unsafe)
DemoDemo Tipos en .NETTipos en .NET
Implementación en .NETImplementación en .NET Overflows aritméticos Overflows aritméticos
Por defecto no hay comprobación de Por defecto no hay comprobación de overflows. Se puede habilitar a la hora de overflows. Se puede habilitar a la hora de compilar mediante:compilar mediante:
La palabla ‘La palabla ‘checked’ checked’ óó
Propiedades del proyectoPropiedades del proyectobyte b=0;while (true){
Console.WriteLine (b);checked{
b++;}
}
DemoDemo OverflowsOverflows
Implementación en .NETImplementación en .NET ‘Identity’ y ‘Principals’ ‘Identity’ y ‘Principals’
Un ‘identity’ contiene información del usuario, Un ‘identity’ contiene información del usuario, como su nombre de logoncomo su nombre de logon
WindowsIdentity, GenericIdentityWindowsIdentity, GenericIdentity
Un ‘Principal’ contiene información de roles Un ‘Principal’ contiene información de roles acerca del usuario o el equipoacerca del usuario o el equipo
WindowsPrincipal, GenericPrincipalWindowsPrincipal, GenericPrincipal
Generic Windows Custom
Implementación en .NETImplementación en .NET ‘Identity’ y ‘Principals’. Creación ‘Identity’ y ‘Principals’. Creación
Usar WindowsIdentity y Usar WindowsIdentity y
WindowsPrincipal para:WindowsPrincipal para:
Validación individualValidación individual
Validación repetitivaValidación repetitiva
WindowsIdentity myIdent = WindowsIdentity.GetCurrent();WindowsPrincipal myPrin = new WindowsPrincipal(myIdent);
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);WindowsPrincipal myPrin = System.Threading.Thread.CurrentPrincipal;
DemoDemo Principals e Principals e
impersonaciónimpersonación
Implementación en .NETImplementación en .NET SQL Injection SQL Injection
Ocurre cuando el usuario de la Ocurre cuando el usuario de la aplicación puede controlar las aplicación puede controlar las sentencias SQL que se pueden ejecutar, sentencias SQL que se pueden ejecutar, modificando el comportamiento de la modificando el comportamiento de la páginapágina
Cuatro escenarios típicos:Cuatro escenarios típicos:Inspección de bases de datosInspección de bases de datos
Elevación de privilegiosElevación de privilegios
Ejecución de múltiples sentencias SQLEjecución de múltiples sentencias SQL
Acceso a procedimientos almacenados de Acceso a procedimientos almacenados de sistemasistema
Implementación en .NETImplementación en .NET SQL Injection. Ejemplo SQL Injection. Ejemplo
SELECT HasShippedFROM detail WHERE ID= '1001'
SELECT HasShippedFROM detail WHERE ID= '1001' or 1=1 -- '
Se debería poner Se debería poner 10011001
Se puede poner Se puede poner 1001’ or 1=1 --1001’ or 1=1 --
Implementación en .NETImplementación en .NET SQL Injection. Protección SQL Injection. Protección
Verificar todas las entradasVerificar todas las entradasRechazar todas las entradas no válidasRechazar todas las entradas no válidas
Considerar el uso de expresiones regulares Considerar el uso de expresiones regulares para verificar la validezpara verificar la validez
Ejecutar con mínimos privilegiosEjecutar con mínimos privilegiosNunca ejecutar como ‘sa’ o SYSTEMNunca ejecutar como ‘sa’ o SYSTEM
Restringir el acceso a procedimientos Restringir el acceso a procedimientos almacenados concretosalmacenados concretos
Usar consultas parametrizadas. No Usar consultas parametrizadas. No construirlas mediante stringsconstruirlas mediante strings
No mostrar errores de ODBC. Dan pistasNo mostrar errores de ODBC. Dan pistas
DemoDemo SQL InjectionSQL Injection
Implementación en .NETImplementación en .NET Cross-site scripting Cross-site scripting
Permite a un hacker ejecutar código en Permite a un hacker ejecutar código en el navegador de un usuarioel navegador de un usuario
Mediante el uso de una aplicación Web en Mediante el uso de una aplicación Web en un servidorun servidor
Cualquier página que genera HTML a Cualquier página que genera HTML a partir de la entrada del usuario es partir de la entrada del usuario es susceptible de vulnerabilidadsusceptible de vulnerabilidad
Implementación en .NETImplementación en .NET Cross-site scripting Cross-site scripting
Los hackers pueden incluir etiquetas de Los hackers pueden incluir etiquetas de <script>, <object>, <applet>, <script>, <object>, <applet>, <embed>, etc.<embed>, etc.
Potencialmente pueden robar Potencialmente pueden robar información de sesiones, cookies y, si el información de sesiones, cookies y, si el usuario afectado dispone de suficientes usuario afectado dispone de suficientes permisos, acceder a información local permisos, acceder a información local del equipo del usuariodel equipo del usuario
Implementación en .NETImplementación en .NET Cross-site scripting. Protección Cross-site scripting. Protección
Verificar todas las entradasVerificar todas las entradasComprobar que no se incluyen etiquetas en Comprobar que no se incluyen etiquetas en los datos pasados por formularioslos datos pasados por formularios
Codificar todas las entradas mediante Codificar todas las entradas mediante Server.HtmlEncodeServer.HtmlEncode
En intranets, ejecutar con mínimos En intranets, ejecutar con mínimos privilegios en el puesto del clienteprivilegios en el puesto del cliente
En ASP.NET 1.1 la protección viene por En ASP.NET 1.1 la protección viene por omisiónomisión
Se puede eliminar mediante directiva de Se puede eliminar mediante directiva de página ValidateRequestpágina ValidateRequest
DemoDemo Cross-site scriptingCross-site scripting
Implementación en .NETImplementación en .NET DoS Web. Protección DoS Web. Protección
Un hacker puede ejecutar múltiples solicitudes a una aplicación Un hacker puede ejecutar múltiples solicitudes a una aplicación Web, agotando los recursos del servidor y haciendo que no Web, agotando los recursos del servidor y haciendo que no pueda responderpueda responder
Para proteger estos ataquesPara proteger estos ataquesCerrar todos los recursos que se usen, como conexiones de datos, Cerrar todos los recursos que se usen, como conexiones de datos, data readers, ficherosdata readers, ficheros
Utilizar control de errores mediante try-catch-finally, cerrando Utilizar control de errores mediante try-catch-finally, cerrando recursos siempre en finallyrecursos siempre en finally
Comprobar el tamaño de los datos de entradaComprobar el tamaño de los datos de entrada
Comprobar el tamaño de los resultados de una consulta antes Comprobar el tamaño de los resultados de una consulta antes de mostrarlos en una página ¿es necesario mostrar 10.000 de mostrarlos en una página ¿es necesario mostrar 10.000 registros? registros?
Establecer un límite en el tamaño de los ficheros de subida, si Establecer un límite en el tamaño de los ficheros de subida, si los haylos hay
<configuration><configuration>
<system.web><system.web>
<httpRuntime maxRequestLength="4096" /><httpRuntime maxRequestLength="4096" />
</system.web> </system.web>
</configuration></configuration>
AgendaAgenda
ObjetivoObjetivo
Importancia de la seguridad en las Importancia de la seguridad en las aplicacionesaplicaciones
Prácticas aconsejables de seguridadPrácticas aconsejables de seguridad
Tecnologías de seguridadTecnologías de seguridad
Implementación en .NETImplementación en .NET
ConclusionesConclusiones
ConclusionesConclusiones
Validar TODOS los datos de entradaValidar TODOS los datos de entrada
Ejecutar las aplicaciones con el mínimo Ejecutar las aplicaciones con el mínimo privilegioprivilegio
Disminuir el área de ataqueDisminuir el área de ataqueExponer únicamente interfaces conocidosExponer únicamente interfaces conocidos
No mostrar información interna en los No mostrar información interna en los erroreserrores
<customErrors mode=on><customErrors mode=on>
Application_Error Event handlerApplication_Error Event handler
Utilizar permisos concretos en los Utilizar permisos concretos en los recursos recursos