documentas

25
Seguridad en .Net Seguridad en .Net Daniel Seara Daniel Seara

Upload: jesus-celestino

Post on 01-Jun-2015

672 views

Category:

Education


2 download

DESCRIPTION

as

TRANSCRIPT

Page 1: Documentas

Seguridad en .NetSeguridad en .NetSeguridad en .NetSeguridad en .Net

Daniel SearaDaniel Seara

Page 2: Documentas

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

Page 3: Documentas

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?

Page 4: Documentas

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

Page 5: Documentas

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

Page 6: Documentas

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

Page 7: Documentas

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

Page 8: Documentas

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

Page 9: Documentas

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

Page 10: Documentas

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

Page 11: Documentas

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

Page 12: Documentas

Inyección de SQLInyección de SQL

Page 13: Documentas

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.

Page 14: Documentas

Plataforma de protecciónPlataforma de protección

El esquema FirewallEl esquema Firewall

La DMZ (Zona des militarizada)La DMZ (Zona des militarizada)

Page 15: Documentas

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

Page 16: Documentas

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

Page 17: Documentas

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

Page 18: Documentas

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

Page 19: Documentas

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

Page 20: Documentas

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)

Page 21: Documentas

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

Accesonegado

Accesonegado

Está autorizado?Está autorizado?

No

No

No

No

Page 22: Documentas

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

Page 23: Documentas

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

Page 24: Documentas

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)

Page 25: Documentas

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