El documento describe los conceptos clave de seguridad en aplicaciones .NET. Explica el proceso de desarrollo seguro, incluyendo la identificación de amenazas, el modelado de amenazas, y diseñar la aplicación considerando mecanismos de autenticación, autorización y otras tecnologías de seguridad. También cubre amenazas comunes como inyección SQL, denegación de servicio, y cómo abordar la seguridad a nivel de componentes, base de datos y servicios.
4. Amenazas en una aplicación http://msdn.microsoft.com/library/en-us/dnnetsec/html/THCMCh10.asp?frame=true#c10618429_004 i Usando un investigador de paquetes ( sniffer ) para obtener claves de acceso o cookies no encriptadas Robo de claves Mostrar al cliente el seguimiento de la pila, cuando sucede un error Revelado de información Uso de Cookie de Autenticación por Formulario, para hacerse pasar por otro Reemplazo de identidad Uso de Cookie de sesión “robado”, para acceder a sitios Reemplazo de sesión Cambiando valores de campos ocultos Modificación del ingreso Usando script del lado del cliente malicioso Script entre sitios Incluyendo comandos de SQL en el texto ingresado Inyección de SQL Ejemplos Amenaza
7. STRIDE S T R I D Tampering Repudiation Revelado de información Denial of service Se puede acceder con una identidad falsa? Se pueden modificar datos mientras fluyen por la Aplicación? Si se intenta denegar, se puede probar que es un agresor? Se puede acceder a información reservada? Es posible disminuir la disponibilidad de la Aplicación? E Elevation of privilege Puede un atacante asumir roles de usuario privilegiado? Spoofing
8. DREAD D R E A D Reproducibility Exploitability Affected users Discoverability ¿Cuales son las consecuencias? ¿Se puede reproducir bajo ciertas circunstancias? ¿Cuan fácil es realizarla? ¿Cuantos usuarios pueden verse afectados? ¿Es fácil de descubrir? Damage
9. DREAD, Cont. Muy difícil de encontrar Pocos, si es que hay alguno Tal vez alguno Raramente se puede hacer Puede acceder a datos poco importantes Bajo (1) Más costoso de ver Algunos Se deben tener ciertos conocimientos Sucede si se realiza en un corto tiempo Puede obtener datos sensibles, pero casi nada más Medio (2) La mayoría Usuarios afectados Fácil de ver Encubrimiento puede hacerlo Explotabilidad Siempre es posible Reproductibilidad El agresor puede obtener datos muy sensibles, dañar servidores etc. Daño Potencial Alto (3)
10. DREAD, Ejemplo Riesgos Priorizados 12 13 Sum 3 3 D 2 2 A 2 2 R 2 3 E 3 Robo de cookie aut. (XSS) 3 Robo de cookie aut. (Robo de claves) D Amenaza Alto (Impersonalización, robo de claves etc.) Es fácil, pero sirven sólo hasta su expiración Cualquiera usa un sniffer; XSS requiere mayor experiencia Muchos pueden ser afectados, pero cada vez menos gente abre mensajes de desconocidos Fácil de encontrar: basta con escribir <script> en un cuadro de texto y probar
16. Mecanismos de Autenticación en IIS S S S S N N Buena experiencia del usuario? S S N N S S Pasa a través de firewalls? Windows Integrada S S N N S S Soporta navegadores no IE? N N N N N S Las credenciales van como texto plano? S N Passport S N Certificado S S Kerberos S S Digest N S NTLM S Soporta delegación? S Necesita cuenta de Windows? Basic
17. IIS 5 y ASP.Net Inetinfo.exe Aspnet_isapi.dll Aspnet_wp.exe (Worker Process) AppDomain AppDomain HTTP Requests T. nombrada Tubería ASP.NET comparte un proceso pero aísla las aplicaciones en AppDomains* * ASP.NET también soporta jardines de servidores reservando un proceso por cada CPU
18. IIS 6 y ASP.Net Inetinfo.exe W3wp.exe AppDomain Aspnet_isapi.dll HTTP Requests W3wp.exe AppDomain AppDomain Aspnet_isapi.dll Http.sys I/O Completion Ports Kernel Mode User Mode Application pooling: permite decidir como separar las aplicaciones entre los procesos de trabajo Application Pool 1 Application Pool 2
19.
20. Autenticación Windows Bob IIS ASP.NET A A IIS creará un Id de acceso para el llamador (José o IUSR_machinename*) ASP.NET recibe ese Id y realiza un control ACL del recurso solicitado * Normalmente, IIS usa IUSR_machinename para representar usuarios anónimos, pero puede ser cambiado Se ejecuta usando la identidad del proceso o impersonando (José o IUSR_machinename)
21. Por Formulario El recurso está disponible para usuarios anónimos? Recurso El llamador tiene un cookie de autenticación? Se identificó? Página de Ingreso Genera el cookie de autenticación Sí Acceso negado Está autorizado? Sí Sí Sí No No No No