Post on 10-May-2015
description
Introducción a la Seguridad desde la perspectiva del Desarrollador
Juan Pablo García
Gerente de Desarrollo
Datco Chile
JuanPablo.Garcia@datco.cl
http://liarjo.spaces.live.com
Martín Cabrera
Gerente de Arquitectura y Desarrollo
Microsoft Chile
mcabrera@microsoft.com
http://liarjo.spaces.live.com
La seguridad y la deformación mediática
Top 10: Errores de desarrollo Web (OWASP)
1. Parámetros no validados
2. Burlar el control de acceso
3. Burlar la administración de cuentas y sesiones
4. Defectos de Cross-Site Scripting (XSS)
5. Buffer Overflows
6. Defectos de Command Injection
7. Problemas de manejo de Errores
8. Uso inseguro de criptografía
9. Errores de administración remota
10. “Misconfiguration” de servidores y aplicaciones
Fundamentos de la Seguridad
Autenticación
• ¿Quién es quien?
• ¿Qué credenciales se necesitan para validar la identidad?
• La complejidad está en que se van a conectar usuarios finales, otras aplicaciones, etc
Técnicas de Autenticación
• Para aplicaciones Web:– Básica– Integrada (Windows)– Certificados digitales – Windows Live (Passport)
• Otras– Smartcards (certificados)– Biometría
Autorización
• Determina las operaciones que un usuario/sistema autenticado puede realizar sobre mi aplicación
• Determina también los recursos/componentes de mi aplicación que un usuario autenticado puede manipular
Técnicas de Autorización
• Custom
• Basadas en roles
• Pueden ser directas o indirectas (ej: delego a la base SQL).
• Se implementa a nivel de todas las capas
Auditoría
• Nos permite saber ¿quién hizo qué? y ¿cuando lo hizo?
• Se implementa tradicionalmente a través de notificaciones y logging.
Técnicas de Auditoría
• Utilizar frameworks de Logging como log4net o System.Diagnostics
• Implementar logging a distintos niveles (Error, Info, Debug)
• Custom
Confidencialidad
• Es la necesidad de que la información únicamente sea conocida por personas autorizadas
• Para garantizar la confidencialidad se deben proteger los datos sensibles mediante control de acceso y encriptación de los datos
Encriptación
• Es el proceso de codificación de la información– Una clave es una cadena de bits que varía el
resultado de una determinada encriptación
• La encriptación sólo es tan fuerte como la fuerza de su clave
Algoritmo de encriptaciónClave
Datos
Encriptación
Termino Criptográfico
Descripción
Encripción Simétrica Encriptado y desencriptado de datos con una clave secreta
Encripción Asimétrica
Encriptado y desencriptado de datos con un par de claves pública/privada
HashingMapeo de una cadena grande de información a una cadena corta y de longitud fija
Firma Digital Hashing de los datos y encriptado asimétrico del hash con la clave privada
Encriptación Simétrica
• Se utiliza la misma clave y el mismo algoritmo para codificar y decodificar la información
• Rápida y eficiente• Es difícil intercambiar las claves de manera
segura con lo que se modifican frecuentemente
DatosDatos
Encriptar Desencriptar
La clave es conocida por el emisor y el receptor
Encriptación Asimétrica
• Dos claves, una privada y una pública
• Los mensajes codificados con la clave pública sólo pueden ser decodificados usando la clave privada y vice versa
• La encriptación asimétrica es más segura que la simétrica, pero no tan eficiente
Encriptación Asimétrica
Integridad
• Es que contenido permanezca inalterado a menos que sea modificado por personal autorizado, y esta modificación sea registrada, asegurando su precisión y confiabilidad.
• La integridad de un mensaje se obtiene adjuntándole otro conjunto de datos de comprobación de la integridad: la “huella digital” (hash)
Integridad
Clave Pública
Clave Privada
Mensaje HashHash
(Encriptado)
MD5
Mensaje
MD5Hash’
Mensaje
Hash (Encriptado)
Hash (Encriptado)
Hash
Hash’ =
Hash
Mensaje integro y autentico
Mensaje manipulado o desconocido
SI
NO
Disponibilidad
• Desde la perspectiva de seguridad, Disponibilidad significa que mi aplicación permanezca activa para usuarios legítimos.
• Controlar intentos de ataques de carga masiva es uno de los aspectos que debemos controlar para asegurar que la aplicación se mantiene disponible.
DisponibilidadMitigación de DOS
En el Código
1. Validación del imput de Datos
2. Trate de no permitir operaciones que consuman mucha CPU, “atomice”
3. Trate de crear pocos cuellos de botella
4. Fije Time Out estrictos
En el Deployment
1. Use balanciadores de Carga
2. Use metodos de Caché
3. Instale aplicaciones de manera distribuida
Buenas Prácticas
• Ejecutar con privilegios mínimos• Reducir las interfaces de ataque• No confiar en el ingreso de datos del usuario• Defensa en capas• No confiarse en la seguridad por ocultamiento• Use la API Data Protection (DPAPI) para proteger sus
secretos• Pruebe la seguridad• Aprenda de sus errores
Lectura Recomendada
GRACIAS!
Nombre:E-mail:
Introducción a la Seguridad desde la perspectiva del Desarrollador
Juan Pablo García
Gerente de Desarrollo
Datco Chile
JuanPablo.Garcia@datco.cl
http://liarjo.spaces.live.com
Martín Cabrera
Gerente de Arquitectura y Desarrollo
Microsoft Chile
mcabrera@microsoft.com
http://liarjo.spaces.live.com
BUFFER
Vulnerabilidades más comunes
Principios de Seguridad
Una pelea desigual
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 aplicaciones
Vulnerabilidades comunes
• Dos fallos principales de seguridad– Confianza en los datos de entrada
• “¡Todos los datos de entrada son culpables hasta que se demuestre lo contrario!”– Son la fuente de los problemas más graves
• Buffer Overruns• Inyección de SQL• Cross-site Scripting
– Todo lo demás
SDSD33
Prácticas aconsejables de seguridad
Un 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 sin Características no usadas del producto sin habilitar por defectohabilitar por defectoRequerir mínimos privilegios privilegeRequerir mínimos privilegios privilege
Proteger, detectar, defender, recuperar, Proteger, detectar, defender, recuperar, administraradministrarProcesos: How to’s, guías de arquitecturaProcesos: How to’s, guías de arquitecturaFormaciónFormación