introducción a la seguridad desde la perspectiva del desarrollador v2

31
Introducción a la Seguridad desde la perspectiva del Desarrollador Juan Pablo García Gerente de Desarrollo Datco Chile JuanPablo.Garcia@datc o.cl http://liarjo.spaces. live.com Martín Cabrera Gerente de Arquitectura y Desarrollo Microsoft Chile [email protected] http://liarjo.spaces.live.c om

Upload: liarjo

Post on 10-May-2015

680 views

Category:

Technology


3 download

DESCRIPTION

Presentación de introduccion a la seguridad para programadores.

TRANSCRIPT

Page 1: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

Introducción a la Seguridad desde la perspectiva del Desarrollador

Juan Pablo García

Gerente de Desarrollo

Datco Chile

[email protected]

http://liarjo.spaces.live.com

Martín Cabrera

Gerente de Arquitectura y Desarrollo

Microsoft Chile

[email protected]

http://liarjo.spaces.live.com

Page 2: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

La seguridad y la deformación mediática

Page 3: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

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

Page 4: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2
Page 5: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

Fundamentos de la Seguridad

Page 6: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

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

Page 7: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

Técnicas de Autenticación

• Para aplicaciones Web:– Básica– Integrada (Windows)– Certificados digitales – Windows Live (Passport)

• Otras– Smartcards (certificados)– Biometría

Page 8: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

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

Page 9: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

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

Page 10: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

Auditoría

• Nos permite saber ¿quién hizo qué? y ¿cuando lo hizo?

• Se implementa tradicionalmente a través de notificaciones y logging.

Page 11: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

Técnicas de Auditoría

• Utilizar frameworks de Logging como log4net o System.Diagnostics

• Implementar logging a distintos niveles (Error, Info, Debug)

• Custom

Page 12: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

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

Page 13: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

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

Page 14: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

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

Page 15: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

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

Page 16: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

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

Page 17: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

Encriptación Asimétrica

Page 18: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

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)

Page 19: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

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

Page 20: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

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.

Page 21: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

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

Page 22: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

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

Page 23: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

Lectura Recomendada

Page 24: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

GRACIAS!

Nombre:E-mail:

Page 25: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

Introducción a la Seguridad desde la perspectiva del Desarrollador

Juan Pablo García

Gerente de Desarrollo

Datco Chile

[email protected]

http://liarjo.spaces.live.com

Martín Cabrera

Gerente de Arquitectura y Desarrollo

Microsoft Chile

[email protected]

http://liarjo.spaces.live.com

Page 26: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

BUFFER

Page 27: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

Vulnerabilidades más comunes

Page 28: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

Principios de Seguridad

Page 29: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

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?

Page 30: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

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

Page 31: Introducción a La Seguridad Desde La Perspectiva Del Desarrollador V2

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