Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas...

72
Desarrollo de Desarrollo de aplicaciones aplicaciones seguras con .NET seguras con .NET Alejandro Mezcua Alejandro Mezcua MVP .NET MVP .NET Zaltor Soluciones Zaltor Soluciones Informáticas Informáticas [email protected] [email protected]

Transcript of Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas...

Page 1: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 2: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@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

Page 3: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 4: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 5: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@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

Page 6: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 7: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 8: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 9: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 10: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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)

Page 11: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 12: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 13: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 14: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 15: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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?

Page 16: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 17: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 18: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 19: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 20: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 21: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 22: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 23: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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.

Page 24: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 25: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 26: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 27: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 28: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 29: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 30: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 31: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 32: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 33: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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’.

Page 34: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 35: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 36: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 37: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 38: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 39: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 40: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 41: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

DemoDemo Creación de un certificado Creación de un certificado

SSL para un servidorSSL para un servidor

Page 42: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 43: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 44: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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?

Page 45: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

DemoDemo Distintos métodos de Distintos métodos de autenticación con IIS autenticación con IIS

Page 46: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 47: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 48: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 49: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 50: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 51: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 52: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 53: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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!

Page 54: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 55: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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)

Page 56: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

DemoDemo Tipos en .NETTipos en .NET

Page 57: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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++;}

}

Page 58: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

DemoDemo OverflowsOverflows

Page 59: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 60: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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;

Page 61: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

DemoDemo Principals e Principals e

impersonaciónimpersonación

Page 62: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 63: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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 --

Page 64: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 65: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

DemoDemo SQL InjectionSQL Injection

Page 66: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 67: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 68: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 69: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

DemoDemo Cross-site scriptingCross-site scripting

Page 70: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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>

Page 71: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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

Page 72: Desarrollo de aplicaciones seguras con.NET Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas amezcua@zaltor.com.

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