documentas
DESCRIPTION
asTRANSCRIPT
Seguridad en .NetSeguridad en .NetSeguridad en .NetSeguridad en .Net
Daniel SearaDaniel Seara
Proceso de desarrolloProceso de desarrollo
Definir que hace la aplicación y como Definir que hace la aplicación y como se usase usa
Los usuarios ven páginas con catálogosLos usuarios ven páginas con catálogosRealizan búsquedas del mismoRealizan búsquedas del mismoAgregan ítems al carritoAgregan ítems al carritoCierran la operaciónCierran la operación
Diagrama de la aplicaciónDiagrama de la aplicaciónMostrando Mostrando
sub sistemassub sistemasFlujo de datosFlujo de datosListando afirmacionesListando afirmaciones
Diseñando aplicaciones Diseñando aplicaciones segurasseguras
Refinar el diagrama de la arquitecturaRefinar el diagrama de la arquitecturaMostrar mecanismos de autenticaciónMostrar mecanismos de autenticación
Mostrar mecanismos de autorizaciónMostrar mecanismos de autorización
Mostrar tecnologías (ej. DPAPI)Mostrar tecnologías (ej. DPAPI)
Diagrama de límites de confianzaDiagrama de límites de confianza
Identificar puntos de entradaIdentificar puntos de entrada
Empezar a pensar como el agresorEmpezar a pensar como el agresor¿Donde están mis vulnerabilidades?¿Donde están mis vulnerabilidades?
¿Qué puedo hacer para resolverlas?¿Qué puedo hacer para resolverlas?
Amenazas en una Amenazas en una aplicaciónaplicación
AmenazaAmenaza EjemplosEjemplosInyección de SQLInyección de SQL Incluyendo comandos de SQL en el texto Incluyendo comandos de SQL en el texto
ingresadoingresado
Script entre sitiosScript entre sitios Usando script del lado del cliente maliciosoUsando script del lado del cliente malicioso
Modificación del Modificación del ingresoingreso
Cambiando valores de campos ocultosCambiando valores de campos ocultos
Robo de clavesRobo de claves Usando un investigador de paquetes (Usando un investigador de paquetes (sniffersniffer) ) para obtener claves de acceso o cookies no para obtener claves de acceso o cookies no encriptadasencriptadas
Reemplazo de Reemplazo de sesiónsesión
Uso de Cookie de sesión “robado”, para acceder Uso de Cookie de sesión “robado”, para acceder a sitiosa sitios
Reemplazo de Reemplazo de identidadidentidad
Uso de Cookie de Autenticación por Formulario, Uso de Cookie de Autenticación por Formulario, para hacerse pasar por otropara hacerse pasar por otro
Revelado de Revelado de informacióninformación
Mostrar al cliente el seguimiento de la pila, Mostrar al cliente el seguimiento de la pila, cuando sucede un errorcuando sucede un error
http://msdn.microsoft.com/library/en-us/dnnetsec/html/THCMCh10.asp?frame=true#c10618429_004http://msdn.microsoft.com/library/en-us/dnnetsec/html/THCMCh10.asp?frame=true#c10618429_004i
Identificando AmenazasIdentificando Amenazas
Método #1: Lista de AmenazasMétodo #1: Lista de AmenazasComenzar con una lista baseComenzar con una lista baseIdentificar las que se aplican a la App.Identificar las que se aplican a la App.
Método #2: STRIDEMétodo #2: STRIDELista categorizada de tipos de AmenazasLista categorizada de tipos de AmenazasIdentificar Amenazas por tipoIdentificar Amenazas por tipo
Opcionalmente dibujar árbolesOpcionalmente dibujar árbolesLos nodos raíz representan las metas del Los nodos raíz representan las metas del atacanteatacanteLos árboles ayudan a identificar las Los árboles ayudan a identificar las condiciones de Amenazacondiciones de Amenaza
Modelando amenazasModelando amenazas
Identificar elementosIdentificar elementos
Documentar ArquitecturaDocumentar Arquitectura
Descomponer la AplicaciónDescomponer la Aplicación
Identificar AmenazasIdentificar Amenazas
Documentar AmenazasDocumentar Amenazas
Cuantificar AmenazasCuantificar Amenazas
11
22
33
44
55
66
STRIDESTRIDE
SS
TT
RR
II
DD
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?
EEElevation of privilegePuede un atacante asumir roles de usuario privilegiado?
Spoofing
DREADDREAD
DD
RR
EE
AA
DD
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
DREAD, Cont.DREAD, Cont.
Alto (3)Alto (3) Medio (2)Medio (2) Bajo (1)Bajo (1)Daño PotencialDaño Potencial El agresor El agresor
puede obtener puede obtener datos muy datos muy sensibles, sensibles, dañar dañar servidores etc.servidores etc.
Puede obtener Puede obtener datos sensibles, datos sensibles, pero casi nada pero casi nada másmás
Puede acceder a Puede acceder a datos poco datos poco importantesimportantes
ReproductibilidaReproductibilidadd
Siempre es Siempre es posibleposible
Sucede si se Sucede si se realiza en un realiza en un corto tiempocorto tiempo
Raramente se Raramente se puede hacerpuede hacer
ExplotabilidadExplotabilidad puede hacerlopuede hacerlo Se deben tener Se deben tener ciertos ciertos conocimientosconocimientos
Tal vez algunoTal vez alguno
Usuarios Usuarios afectadosafectados
La mayoríaLa mayoría AlgunosAlgunos Pocos, si es que Pocos, si es que hay algunohay alguno
EncubrimientoEncubrimiento Fácil de verFácil de ver Más costoso de Más costoso de verver
Muy difícil de Muy difícil de encontrarencontrar
DREAD, EjemploDREAD, Ejemplo
Amenaza D R E A D SumRobo de cookie aut. (Robo de claves) 3 2 3 2 3 13
Robo de cookie aut. (XSS) 3 2 2 2 3 12
Alto(Impersonalización, robo de claves etc.)
Alto(Impersonalización, robo de claves etc.)
Es fácil, pero sirven sólo hasta su expiración
Es fácil, pero sirven sólo hasta su expiración
Cualquiera usa un sniffer; XSS requiere mayor experiencia
Cualquiera usa un sniffer; XSS requiere mayor experiencia
Muchos pueden ser afectados, pero cada vez menos gente abre mensajes de desconocidos
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
Fácil de encontrar: basta con escribir <script> en un cuadro de texto y probar
RiesgosPriorizados
RiesgosPriorizados
Ejemplos de ataquesEjemplos de ataques
Inyección de SQL (SQL Injection)Inyección de SQL (SQL Injection)Es común por el armado de sentencias Es común por el armado de sentencias SQL encadenando valores ingresados por SQL encadenando valores ingresados por el usuarioel usuario
Puede evitarse simplemente con la Puede evitarse simplemente con la buena práctica de usar Procedimientos buena práctica de usar Procedimientos AlmacenadosAlmacenados
ASP.Net a partir de 1.1, valida ASP.Net a partir de 1.1, valida automáticamente que no se envíe código automáticamente que no se envíe código inválidoinválido
Inyección de SQLInyección de SQL
Ejemplos de ataquesEjemplos de ataques
Denegación de servicio (Denial of Denegación de servicio (Denial of Service)Service)
Evita el acceso a servicios generalmente Evita el acceso a servicios generalmente al crear consumos inválidosal crear consumos inválidos
Consumo inválido de recursosConsumo inválido de recursos
Utilización desmedida de recursos publicados Utilización desmedida de recursos publicados (UDP)(UDP)
Consumo de ancho de bandaConsumo de ancho de banda
Etc.Etc.
Plataforma de protecciónPlataforma de protección
El esquema FirewallEl esquema Firewall
La DMZ (Zona des militarizada)La DMZ (Zona des militarizada)
Autenticación y Autenticación y autorizaciónautorización
AutenticaciónAutenticaciónMecanismo para identificar un usuarioMecanismo para identificar un usuario
AutorizaciónAutorizaciónMecanismo para permitir el acceso de un Mecanismo para permitir el acceso de un usuario específico, a un usuario usuario específico, a un usuario específicoespecífico
Por identidadPor identidad
Por pertenenciaPor pertenencia
Mecanismos de Mecanismos de Autenticación en IISAutenticación en IIS
BasicBasic DigestDigest
Windows Windows IntegradaIntegrada
CertificaCertificadodo
PasspoPassportrtNTLMNTLM
KerberKerberosos
Necesita cuenta de Necesita cuenta de Windows?Windows? SS SS SS SS NN NN
Soporta delegación?Soporta delegación? SS SS NN SS SS SS
Las credenciales van como Las credenciales van como texto plano?texto plano? SS NN NN NN NN NN
Soporta navegadores no Soporta navegadores no IE?IE? SS SS NN NN SS SS
Pasa a través de firewalls?Pasa a través de firewalls? SS SS NN NN SS SS
Buena experiencia del Buena experiencia del usuario?usuario? NN NN SS SS SS SS
IIS 5 y ASP.NetIIS 5 y ASP.Net
Inetinfo.exeInetinfo.exe
Aspnet_isapi.dll
Aspnet_wp.exe(Worker Process)
Aspnet_wp.exe(Worker Process)
AppDomain
AppDomainHTTP 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
IIS 6 y ASP.NetIIS 6 y ASP.Net
Inetinfo.exeInetinfo.exe
W3wp.exeW3wp.exe
AppDomain
Aspnet_isapi.dll
HTTP Requests
W3wp.exeW3wp.exe
AppDomain
AppDomain
Aspnet_isapi.dll
Http.sysHttp.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
Autenticación en ASP.NetAutenticación en ASP.Net
Autenticación WindowsAutenticación WindowsUtiliza usuarios existentes de WindowsUtiliza usuarios existentes de WindowsIdeal para aplicaciones IntranetIdeal para aplicaciones Intranet
PassportPassportConveniente para los usuarios (un solo Conveniente para los usuarios (un solo inicio)inicio)Deja el almacenamiento de credenciales Deja el almacenamiento de credenciales en manos de otrosen manos de otros
FormsFormsTípicamente utilizada en aplicaciones de Típicamente utilizada en aplicaciones de tipo carritotipo carritoIdeal para aplicaciones InternetIdeal para aplicaciones Internet
Autenticación WindowsAutenticación Windows
Bob IISIIS ASP.NETASP.NETA A
IIS creará un Id de acceso para el llamador (José oIUSR_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)
Por FormularioPor Formulario
El recurso está disponible para
usuarios anónimos?
El recurso está disponible para
usuarios anónimos? RecursoRecurso
El llamador tiene un cookie de autenticación?
El llamador tiene un cookie de autenticación?
Se identificó?
Se identificó?
Página de Ingreso
Página de Ingreso
Genera el cookie de autenticación
Genera el cookie de autenticación
Sí
Accesonegado
Accesonegado
Está autorizado?Está autorizado?
Sí
Sí
Sí
No
No
No
No
Seguridad en Seguridad en ComponentesComponentes
Atributos de seguridadAtributos de seguridadPermite identificar el tipo de permisos Permite identificar el tipo de permisos que un tipo y/o sus métodos requieren que un tipo y/o sus métodos requieren para ser ejecutadospara ser ejecutados
DemandDemand
PermitPermit
AssertAssert
El componente debe tener un nombre El componente debe tener un nombre firme (Strong name)firme (Strong name)
SnSn
VersiónVersión
Seguridad en Base de Seguridad en Base de datosdatos
Repasa los conceptos de seguridad Repasa los conceptos de seguridad en la presentación acerca de datosen la presentación acerca de datos
Autenticación integradaAutenticación integrada
Cadena de conexión protegidaCadena de conexión protegidaEncriptaciónEncriptación
Ubicación fuera de la aplicaciónUbicación fuera de la aplicación
Seguridad en ServiciosSeguridad en Servicios
Identificar adecuadamente al usuario Identificar adecuadamente al usuario que accede a un servicioque accede a un servicio
IntegradaIntegrada
ImpersonalizaciónImpersonalización
Mejoras para servicios Web (WSE)Mejoras para servicios Web (WSE)
ReferenciasReferenciasHow To: Perform a Security Code How To: Perform a Security Code Review for Managed Code (.NET Review for Managed Code (.NET Framework 2.0) Framework 2.0)
http://msdn.microsoft.com/practices/http://msdn.microsoft.com/practices/default.aspx?pull=/library/en-us/default.aspx?pull=/library/en-us/dnpag2/html/PAGHT000027.aspdnpag2/html/PAGHT000027.asp
Threat Modeling Web Applications Threat Modeling Web Applications http://msdn.microsoft.com/practices/http://msdn.microsoft.com/practices/default.aspx?pull=/library/en-us/default.aspx?pull=/library/en-us/dnpag2/html/tmwa.aspdnpag2/html/tmwa.asp
Security Engineering Index Security Engineering Index http://msdn.microsoft.com/practices/http://msdn.microsoft.com/practices/default.aspx?pull=/library/en-us/default.aspx?pull=/library/en-us/dnpag2/html/securityengindex.aspdnpag2/html/securityengindex.asp