La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011

Presentaciones similares


Presentación del tema: "66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011"— Transcripción de la presentación:

1 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011
Top 5 OWASP + WAF 66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011 Cristian

2 OWASP Organización focalizada en mejorar la seguridad de las aplicaciones de software. Consenso general sobre cuáles son las vulnerabilidades más críticas de las aplicaciones web. Incluye una lista de las diez vulnerabilidades más críticas. Cristian

3 OWASP Top Ten (2010 Edition)
A1: Injection A2: Cross-Site Scripting (XSS) A3: Broken Authentication and Session Management A4: Insecure Direct Object References A5: Cross Site Request Forgery (CSRF) A6: Security Misconfiguration A7: Failure to Restrict URL Access A8: Insecure Cryptographic Storage A9: Insufficient Transport Layer Protection A10: Unvalidated Redirects and Forwards Cristian

4 Mutillidae Herramienta didáctica para ilustrar el Top 10
Hecha en PHP/MySQL Simple de explotar Fácil de restaurar Incluye tips de ayuda para explotar y entender las distintas vulnerabilidades Cristian

5 A1 - SQL Injection Andres

6 SQL Injection Se inserta o "inyecta" código SQL invasor dentro del código SQL programado, a fin de alterar el funcionamiento normal del programa y lograr así que se ejecute la porción de código "invasor" en la base de datos. Ocurre cuando… Reciben strings y los interpretan como comandos SQL, OS Shell, LDAP, XPath, Hibernate, etc… Intérpretes… Muchas aplicaciones continúan siendo vulnerables A pesar que es muy simple de evitar SQL injection sigue siendo muy común Usualmente severo. La base de datos puede ser leída por completo, o modificada. Impacto típico Andres

7 "SELECT * FROM accounts WHERE acct=‘’ OR 1=1--’"
SQL Injection Account: SKU: Account: SKU: "SELECT * FROM accounts WHERE acct=‘’ OR 1=1--’" Account Summary Acct: Acct: Acct: Acct: HTTP response  DB Table  HTTP request SQL query Accounts Finance Administration Transactions Communication Knowledge Mgmt E-Commerce Bus. Functions Application Layer Databases Legacy Systems Web Services Directories Human Resrcs Billing APPLICATION ATTACK Custom Code 1. La aplicación muestra un formulario 2. El atacante ingresa una consulta SQL maliciosa en algún campo del formulario App Server Andres 3. La aplicación reenvía dicha consulta al motor de base de datos Web Server Hardened OS Network Layer 4. El motor de la BD ejecuta la consulta con código malicioso y envía los resultados a la aplicación Firewall Firewall 5. La aplicación muestra los resultados al usuario

8 Demo Andres

9 Métodos de Prevención Escapar las variables antes de ser enviadas al intérprete Parametrizar las sentencias sql Realizar una “white list” de validación para los datos ingresados por el usuario Acotar los privilegios de la base de datos para reducir el impacto Andres

10 A2 – Cross-Site Scripting (XSS)
Tifi

11 XSS Una aplicación toma datos ingresados por el usuario y los envía al navegador sin previo encoding ni validación. Permite ejecutar scripts en el navegador de la víctima permitiendo el robo de cookies de sesión, ejecución de virus, etc. Ocurre cuando… Guardados en la base de datos Reflejados desde los inputs de la aplicación (form field, hidden field, URL, etc.) Envíados directamente embebiendo código javascript Tipos de ataques Robo de cookies de sesión, robo de datos sensibles, sobreescritura de páginas web, Phishing Crítico: Instalación de un proxy XSS el cual permite al atacante observar el comportamiento de un usuario en un sitio vulnerable y forzarlo a ingresar a otros sitios. Impacto típico Tifi

12 XSS 1 El atacante prepara la trampa – “Mi Perfil”
Aplicación vulnerable a XSS (guardado) El atacante ingresa un script malicioso dentro de una página web que almacena los datos en el servidor Custom Code Accounts Finance Administration Transactions Communication Knowledge Mgmt E-Commerce Bus. Functions 2 La víctima ingresa al perfil del atacante - “Mi Perfil” Tifi El script corre en el browser de la víctima con acceso completo al DOM y a las cookies 3 El script envía (silenciosamente) la cookie de sesión de la víctima al atacante

13 Demo Tifi: Flash + Phishing

14 Métodos de Prevención No mostrar directamente los datos ingresados por el usuario Encode a la salida de los datos ingresados por el usuario Frameworks: filtrado y validación automática Enterprise Security API Creado por OWASP Provee un conjunto de interfases para encode y validación de datos Disponible en varios lenguajes. AntySamy API para sanitizar HTML Modelo de protección “white list” Fácil de usar Toma un html/css crudo y lo retorna seguro Tifi que validar en todos los lugares en los que se tomen valores del querystring, del form, de una base de datos, de una cookie, o de las variables Session y Application, y luego se escriben en el response.

15 A3 – Broken Authentication and Session Management
Lau Incluye todos los aspectos del tratamiento de la autenticación del usuario y el manejo de sesiones activas.

16 Broken Authentication and Session Management
El SESSION ID es usado para trackear el estado en HTTP El SESSION ID está expuesto en las redes, navegadores, etc. Métodos no estandarizados de autenticación Ocurre cuando… Las credenciales viajan en cada request Se debe usar SSL cuando se requiera autenticación HTTP es “stateless” Los cambios de password, recordarme, olvidé mi password, pregunta secreta, logout, , etc… Proteger… Severo: Se comprometen cuentas y sesiones de usuario Impacto típico Lau Password Strength - passwords deben tener restricciones, de tamaño mínimo y complejidad. La complejidad implica combinaciones alfanumericas, etc. Los usuarios deben cambiar periodicamente le pass y no usar pass anteriores. Password Use - Restringir nro de intentos x unidad de tiempo. No indicar si el user o pass fueron fallidos. Los usuarios deben ser informados de la ultima vez que se loguearon con exito y la cant de login fallidos a ese momento. Password Change Controls - Proveer un mecanismo simple de cambio de pass, e indicar siempre old pass y new pass en el proceso, ademas de toda la info de cuenta. Password Storage - Todos los pass deben ser guardados hasheados o encriptados. Hash es bueno xq es irreversible, pero la encripcon es necesaria cunado se necesita el pass en txt plano, para x ej loguearse en otro sistema. Los pass nunca deben estar hardcodeados en el codigo. Protecting Credentials in Transit - La unica técnica efectiva es encriptar toda la transaccion de login con algo como SSL. Ya que a pesar de usar hash este puede ser interceptado y retransmitido. Session ID Protection – Idealmente la sesión del usuario debe ser protegida x ssl, pero si ssl no es viable x razones de performance o otrras razones el session id debe ser protegido de otras maneras. NUNCA incluirlo en las urls, o reenviar las urls a “amigos”. El session ID debe ser largo, complicado y random. Session id elegido x los usuarios nunca debe ser aceptado. Account Lists -Evitar mostrar la lista de usuarios, si se usa usar pseudonimos que mapeen a los nombres de usuarios reales, los pseudonimos no deben servir como username para loguearse. Browser Caching – Authentication and session nunca deben ser submiteadas por GET, usar POST. Authentication pages no deberian cachearse para evitar el “back button”. Trust Relationships – Your site architecture should avoid implicit trust between components whenever possible. Each component should authenticate itself to any other component it is interacting with unless there is a strong reason not to (such as performance or lack of a usable mechanism). If trust relationships are required, strong procedural and architecture mechanisms should be in place to ensure that such trust cannot be abused as the site architecture evolves over time.

17 Broken Authentication
El usuario envía credenciales y reserva un viaje en una agencia 1 Custom Code Accounts Finance Administration Transactions Communication Knowledge Mgmt E-Commerce Bus. Functions jsessionid=2P0OC2JDPXM0OQSNDLPSKHCJUN2JV?dest=Hawaii El sitio reescribe la url concatenando el session id 2 Lau 3 El usuario reenvía el link a sus amigos Cuando sus amigos ingresen al link usarán su sesión y su tarjeta de crédito 4

18 Demo Lau: Cookies stealing Lau: Agregado y edición de cookie

19 Métodos de Prevención Autenticación simple, centralizada y estandarizada SSL para proteger credenciales y session id en todo momento Verificar que el logout destruya la sesión Usuarios y passwords encriptados en la base de datos Configuración adecuada del timeout de sesión Evitar vulnerabilidades XSS Lau

20 A4 – Insecure Direct Object References
Dami Una referencia directa insegura a objetos ocurre cuando un desarrollador expone una referencia a un objeto de implementación interno, tal como un fichero, directorio, o base de datos. Sin un chequeo de control de acceso u otra protección, los atacantes pueden manipular estas referencias para acceder datos no autorizados.

21 Insecure Direct Object References
Un desarrollador expone referencias a la implentación interna de un archivo, directorio, registro de base de datos, claves, url’s, etc. Los atacantes pueden manipular esas referencias y acceder a contenido no autorizado. Ocurre cuando… Accesos a objetos Referencias (deben ser indirectas) Proteger… Severo: Acceso a información no autorizada Impacto típico Dami

22 Insecure Direct Object References
El atacante decubre que su número de cuenta es 6065 Lo modfica por otro valor ?account=6066 El atacante logra acceder a otra cuenta Dami

23 Demo Dami Una aplicación presenta una referencia directa insegura a objetos, por ejemplo, una lista con posibles documentos que pueden ser seleccionados para ser visualizarlos, donde cada entrada de la lista referencia directamente a un fichero del sistema de archivos. Un atacante, como usuario autorizado en el sistema, simplemente modifica el valor de un parámetro (uno de esos documentos) que se refiere directamente a un objeto del sistema a otro objeto para el que el usuario no se encuentra autorizado.

24 Métodos de Prevención Eliminar referencias directas
Reemplazarlos por mapeos temporales Interfaz ESAPI para mapero indirecto Validar referencias directas Verificar que el usuario tiene acceso al recurso Dami

25 A5 – Cross Site Request Forgery (CSRF)
Andres

26 CSRF EL navegador de la victima logueada envía un request pre-autenticado a una aplicación vulnerable, la cual fuerza al navegador a realizar acciones en beneficio del atacante Ocurre cuando… Idem XSS Proteger Severo: Acceso a información sensible Severo: Cambio de datos de cuenta Impacto típico Andres Proteger… No mostrar directamente los datos ingresados por el usuario Encode a la salida de los datos ingresados por el usuario Enterprise Security API Creado por OWASP Provee un conjunto de interfases para encode y validación de datos Disponible en varios lenguajes. AntySamy API para sanitizar HTML Modelo de protección “white list” Fácil de usar Toma un html/css crudo y lo retorna seguro

27 CSRF 1 El atacante prepara una trampa para un sitio web vulnerable
La aplicación tiene la vulnerabilidad CSRF Un tag oculto <img> contiene un ataque embebido Custom Code Accounts Finance Administration Transactions Communication Knowledge Mgmt E-Commerce Bus. Functions 2 El usuario logueado ingresa al sitio del atacante Andres 3 El sitio vulnerable al ver el request legítimo de la víctima, ejecuta la acción. El tag <img> cargado por el browser envía por GET las credenciales al sitio vulnerable

28 Demo Andres

29 Métodos de Prevención Agregar un nonce por request (Number used once) a la URL y a todos los formularios Los tokens deben ser criptográficamente fuertes. No utilizar request del tipo GET (URL) para datos o transacciones importantes. Utilizar POST, aunque esto solo no es suficiente. Verificar que el request HTTP provenga del sitio original Andres

30 ESAPI Dami – Lau Método de prevención de código abierto.
Es una solución open source multi-plataforma. Provee soporte para la mayoría de los lenguajes y es muy simple. Incluye todo lo necesario para proteger una app de las vulnerabilidades detalladas en el top 10 de owasp.

31 Interfaces para Top 5 ESAPI OWASP Top 5 OWASP ESAPI A1. SQL Injection
A2. Cross Site Scripting (XSS) A3. Broken Authentication and Sessions A4. Insecure Direct Object Reference A5. Cross Site Request Forgery (CSRF) OWASP ESAPI Encoder Validator, Encoder Authenticator, User, HTTPUtils AccessReferenceMap, AccessController User (CSRF Token) Dami – Lau Encoders: reemplazan caracteres conflictivos por &entity; o por su representación en hexadecimal Validator: valida que la entrada matchee con el tipo de dato esperado Authenticator: User: HTTPUtils: set of helper functions related to HTTP requests, responses, sessions, cookies, headers, and logging AccessReferenceMap: para generar referencias indirectas y vincularlas a referencias directas AccessController: para controlar si se tiene acceso al recurso (autorización)

32 Input Validation Dami

33 Output Validation Dami

34 Esquema de encoding con ESAPI
#1: ( &, <, >, " )  &entity; ( ', / )  &#xHH; ESAPI: encodeForHTML() HTML Element Content (e.g., <div> some text to display </div> ) #2: All non-alphanumeric < 256  &#xHH ESAPI: encodeForHTMLAttribute() HTML Attribute Values (e.g., <input name='person' type='TEXT' value='defaultValue'> ) #3: All non-alphanumeric < 256  \xHH ESAPI: encodeForJavaScript() JavaScript Data (e.g., <script> some javascript </script> ) Dami - Lau ALL other contexts CANNOT include Untrusted Data Recommendation: Only allow #1 and #2 and disallow all others See: for more details #4: All non-alphanumeric < 256  \HH ESAPI: encodeForCSS() HTML Style Property Values (e.g., .pdiv a:hover {color: red; text-decoration: underline} ) #5: All non-alphanumeric < 256  %HH ESAPI: encodeForURL() URI Attribute Values (e.g., <a href="javascript:toggle('lesson')" )

35 Demo Dami – Lau SQL: process-login-attempt.php (linea 18)
XSS: view-someones-blog.php (linea 170) BA: process-login-attempt.php (linea 50) IDOR: source-viewer.php (linea 79, 198) CSRF: source-viewer.php (linea 60, 145) Dns-lookup.php (linea 35) Add-to-your-blog.php (linea 68, 86, 181)

36 WAF Cristian

37 Características principales
Filtro que aplica un conjunto de reglas a una comunicación HTTP Controla entradas, salidas y accesos Buena (y única) solución para enlatados Falsos positivos  Soporta seguridad con listas negras y listas blancas. Alta performance. Cristian

38 Configuración #Preventing Cookie Stealing, CSRF Post and Phishing attack SecRule ARGS “<script” #Preventing CSRF Post Iframe SecRule ARGS “<iframe” #Preventing Flash attack SecRule ARGS “<embed” #Preventing CSRF Get attack SecRule ARGS "<img“ #Preventing SQL Injection and Broken Authentication and Session Management SecRule ARGS "'.+=.+--“ SecRule ARGS "select.+from“ #Preventing Insecure Direct Object Reference SecRule ARGS "\.\./“ SecRule ARGS ";[[:space:]]*(ls|id|pwd|wget|dir)”

39 Demo Cristian

40 Conclusiones Desarrollar código seguro Revisar las aplicaciones
Seguir las best practices de la guía de OWASP’s de como construir una aplicación web segura Usar OWASP’s Application Security Verification Standard como guía para saber las necesidades de seguridad Usar componentes estandar (ESAPI) Revisar las aplicaciones Tener un experto en el equipo que revise las aplicaciones Seguir las guías propuestas por OWASP OWASP Code Review Guide: OWASP Testing Guide: Cristian - Tifi


Descargar ppt "66.69 Criptografía y Seguridad Informática 1er. Cuatrimestre 2011"

Presentaciones similares


Anuncios Google