1 / 23

OWASP TOP 10 Los diez riesgos más importantes en aplicaciones web

OWASP TOP 10 Los diez riesgos más importantes en aplicaciones web. Luis Martínez Bacha Softtek AppSec Program Manager Hacker Ético Certificado, SCJP larmando.martinez@softtek.com Héctor J. Espinoza Auditor de Seguridad en Aplicaciones - Softtek

liz
Download Presentation

OWASP TOP 10 Los diez riesgos más importantes en aplicaciones web

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OWASP TOP 10Los diez riesgos más importantes en aplicaciones web Luis Martínez BachaSofttek AppSec Program Manager Hacker Ético Certificado, SCJPlarmando.martinez@softtek.com Héctor J. EspinozaAuditor de Seguridad en Aplicaciones - Softtek Hacker Ético Certificadohector.espinoza@softtek.com

  2. OWASP Top 10 (Edición 2010) http://www.owasp.org/index.php/Top_10

  3. A1 – Inyección (SQL) Account: SKU: Account: SKU: "SELECT * FROM accounts WHERE acct=‘’ OR 1=1--’" Account Summary Acct:5424-6066-2134-4334 Acct:4128-7574-3921-0192 Acct:5424-9383-2039-4029 Acct:4128-0004-1234-0293 Tabla BD   Respuesta HTTP   Consulta SQL Pedido HTTP  Finance Transactions Accounts Administration Communication Knowledge Mgmt E-Commerce Bus. Functions Databases Legacy Systems Web Services Directories Billing Human Resrcs Capa de Aplicación APPLICATIONATTACK Custom Code 1. Aplicación presenta un formulario Web al atacante 2. Atacante envía un ataque en los datos del formulario App Server 3. Aplicación dirige el ataque a la base de datos en una consulta SQL Web Server Hardened OS 4. Base de datos ejecuta el ataque y envía los resultados cifrados nuevamente a la aplicación Capa de Red Firewall Firewall 5. Aplicación descifra los datos normalmente y envía los resultados al atacante

  4. A1 - Inyección Las inyecciones (como de SQL, OS y LDAP) ocurren cuando datos no confiables son enviados a un interprete como parte de un comando o consulta. Los datos hostiles del atacante pueden engañar al interprete al ejecutar comandos no previstos u obteniendo datos no autorizados. Debilidad en Seguridad Impacto Técnico Impacto de Negocio Agentes Atacantes Vectores de Ataque _______ Explotable FACIL Prevalencia COMUN Detectable PROMEDIO Impacto SEVERO _______ Considere cualquier persona que pueda mandar datos no confiables al sistema, incluyendo usuarios externos, usuarios internos y administradores. El atacante simplemente envía un ataque basado en texto que explota la sintaxis del interprete objetivo. Casi cualquier origen de datos puede ser un vector de inyección, incluyendo orígenes internos. Los errores de inyección ocurren cuando una aplicación envía datos no confiables a un interprete. Las inyecciones son muy comunes, particularmente en código heredado, casi siempre encontrado en consultas SQL, LDAP, XPATH y comandos OS, argumentos de programa, etc. Los errores de inyección son fáciles de descubrir cuando se examina código, pero es más difícil durante pruebas sobre la instancia. Los escáner y fuzzers pueden ayudar a los atacantes a encontrarlos. Las inyecciones pueden resultar en pérdida de datos, falta de contabilidad o denegación de acceso. Las inyecciones algunas veces pueden ocasionar que el servidor sea tomado por atacante por completo. Considere el valor de negocio de los datos afectados y la plataforma sobre la que esta el interprete. Todos los datos podrían ser robados, modificados o borrados. ¿Tu reputación se podría ver afectada?

  5. A2 – Scripting de Sitios Cruzados Finance Transactions Accounts Administration Communication Knowledge Mgmt E-Commerce Bus. Functions Custom Code 1 Atacante establece una trampa – actualizar perfil Aplicación con vulnerabilidad XSS Reflejado Atacante ingresa un script malicioso en una pagina Web que almacena los datos en el servidor Victima visualiza la pagina – accede al perfil 2 Script se ejecuta en el navegador de la victima 3 Script silenciosamente envía la sesión de la victima al atacante

  6. A2 – Scripting de Sitios Cruzados Los errores XSS ocurren siempre que una aplicación toma datos no confiables y los envía al navegador sin una validación y escape apropiado. XSS permite a los atacantes a ejecutar scripts en el navegador de la victima donde pueden adueñarse de sesiones de usuario, modificar sitios Web o redireccionar al usuario a sitios maliciosos. Debilidad en Seguridad Impacto Técnico Impacto de Negocio Agentes Atacantes Vectores de Ataque _______ Explotable PROMEDIO Prevalencia MUY ESPARCIDO Detectable FÁCIL Impacto MODERADO _______ Considere cualquier persona que pueda mandar datos no confiables al sistema, incluyendo usuarios externos, usuarios internos y administradores. El atacante envía ataques de scripts basados en texto que explotan al interprete en el navegador. Casi cualquier origen de datos puede ser un vector de ataque, incluyendo orígenes internos como datos desde la BD. XSS es el error de seguridad en aplicaciones Web mas común. Los errores de XSS ocurren cuando la aplicación incluye datos proporcionados por el usuario en una pagina enviada al navegador sin la validación y escape apropiado. Hay tres tipos conocidos de XSS: 1) Almacenado 2) Reflejado 3) Basado en DOM La detección de la mayoría de los errores de XSS es fácil ya con pruebas en la instancia de la aplicación o con análisis de código. Los atacantes puede ejecutar scripts en un navegador de la victima para robar sesiones, modificar sitios Web, insertar contenido hostil, incrustar malware a través del navegador del usuario, etc. Considere el valor de negocio del sistema afectado y todos los datos que este procesa. También considere el impacto de negocio al ser expuesto a la vulnerabilidad.

  7. A3 – Pérdida de Autenticación y Gestión de Sesiones Finance Transactions Accounts Administration Communication Knowledge Mgmt E-Commerce Bus. Functions Custom Code 1 Usuario envía credenciales www.boi.com?JSESSIONID=9FA1DB9EA... Sitio utiliza reescritura de URLs (ej., escribe sesión en URL) 2 3 Usuario hace clic en un link hacia http://www.hacker.com en un foro 4 El Atacante utiliza la JSESSIONID y toma posesión de la cuenta del usuario El Atacante verifica encabezados de referencia en los logs de www.hacker.com y encuentra la JSESSIONID del usuario 5

  8. A3 – Pérdida de Autenticación y Gestión de Sesiones Las funciones de la aplicación relacionadas a la autenticación y el manejo de sesión no siempre son implementadas correctamente, permitiendo a los atacantes a recuperar contraseñas, llaves, identificadores de sesión o explotar otros errores de implementación para adquirir la identidad de otros usuarios. Debilidad en Seguridad Impacto Técnico Impacto de Negocio Agentes Atacantes Vectores de Ataque _______ Explotable PROMEDIO Prevalencia COMÚN Detectable PROMEDIO Impacto SEVERO _______ Considere a atacantes externos anónimos, así como usuarios con sus propias cuentas quienes traten de robar cuentas de otros. También considere usuarios internos esperando por tomar acción. El atacante usa pistas o fallas en la autenticación o en las funciones de gestión de las sesiones (por ejemplo, cuentas expuestas, contraseñas, identificadores de sesión) para personificar otros usuarios. Los desarrolladores frecuentemente construyen esquemas de autenticación y gestión de sesiones personalizadas, pero construirlas correctamente es difícil. Como un resultado, esos esquemas personalizados frecuentemente tienen errores en áreas como el cierre de sesión, la gestión de contraseñas, temporizador de sesión, funciones de recordatorio de usuario, pregunta secreta, actualización de cuenta, etc. El encontrar esos errores puede ser difícil algunas veces ya que cada implementación es única. Dichos errores pueden permitir ataques a una o incluso todas las cuentas. Una vez que el ataque a sido exitoso, el atacante puede hacer cualquier cosa que la victima podría hacer. Las cuentas privilegiadas son las que siempre están en la mira. Considere el valor de negocio de los datos afectados o las funciones de la aplicación. También considere el impacto de negocio de al ser expuesto públicamente a este esta vulnerabilidad.

  9. A4 – Referencia Directa Insegura a Objetos Atacante identifica su numero de cuenta 6065 ?acct=6065 Lo modifica a un numero parecido ?acct=6066 Atacante visualiza los datos de la cuenta de la victima https://www.onlinebank.com/user?acct=6065

  10. A4 – Referencia Directa Insegura a Objetos Una referencia directa a objeto ocurre cuando un desarrollador expone una referencia a una implementación de un objeto interno, como pueden ser un archivo o una llave de base de datos. Sin un chequeo de control de acceso u otra protección, los atacantes pueden manipular esas referencias para acceder a datos no autorizados. Debilidad en Seguridad Impacto Técnico Impacto de Negocio Agentes Atacantes Vectores de Ataque _______ Explotable FÁCIL Prevalencia COMÚN Detectable FÁCIL Impacto MODERADO _______ Considere los tipos de usuarios de su sistema. Existe algún usuario con solo accesos parciales a ciertos tipos de datos del sistema. El atacante, quienes un usuario autorizado del sistema, simplemente cambia el valor de un parámetro que directamente relaciona el objeto del sistema con otro objeto al que el usuario no esta autorizado. Las aplicaciones frecuentemente usan el nombre actual o llave de un objeto durante la generación de las paginas Web. Las aplicaciones no siempre verifican si el usuario esta autorizado a ver el objeto en cuestión. Esto resulta en un error de referencia directa insegura a objetos. Los auditores pueden fácilmente manipular los valores de los parámetros para detectar dichos errores y el análisis de código rápidamente muestra si la autorización esta propiamente verificada. Dichos errores pueden comprometer todos los datos que pueden ser referenciados por el parámetro. A menos que el espacio de nombres sea escaso, es fácil para un atacante el acceder a todas los datos disponibles. Considere el valor de negocio de los datos expuestos. También considere el impacto de negocio de al ser expuesto públicamente a este esta vulnerabilidad.

  11. A5 – Falsificación de Petición de Sitios Cruzados Finance Transactions Accounts Administration Communication Knowledge Mgmt E-Commerce Bus. Functions Custom Code Atacante establece una trampa en algún sitio Web en la Internet (o simplemente a través de un correo electrónico) 1 Aplicación con vulnerabilidad CSRF Tag oculto <img> contiene ataque contra sitio vulnerable Mientras que la victima se encuentra conectada al sitio vulnerable, visualiza el sitio del atacante 2 3 Sitio vulnerable recibe un pedido legitimo de la victima y ejecuta la acción solicitada <img> tag es cargado por el navegador – envía un pedido GET (utilizando las credenciales) a un sitio vulnerable

  12. A5 – Falsificación de Petición de Sitios Cruzados (CSRF) Un ataque de CSRF fuerza a un navegador de un usuario con sesión activa a mandar una petición HTTP falsa, incluyendo la cookie de la sesión de la victima y cualquier otra información incluida en la autenticación, hacia la aplicación Web vulnerable. Esto permite al atacante a forzar al navegador de la victima a generar peticiones que la aplicación vulnerable piense que son legítimos. Debilidad en Seguridad Impacto Técnico Impacto de Negocio Agentes Atacantes Vectores de Ataque _______ Explotable PROMEDIO Prevalencia ESPARCIDO Detectable FÁCIL Impacto MODERADO _______ Considere a cualquier persona que pueda engañar a sus usuarios al enviar una petición a tu sitio Web. Cualquier sitio Web u otro tipo de alimentación en HTML que tus usuarios acceden pueden hacer esto. El atacante crea peticiones HTTP falsas y engaña a la victima al enviarlas a través de etiquetas de imagen, XSS u otras numerosas técnicas. Si el usuario es autenticado, el ataque será exitoso. CSRF toma ventaja de las aplicaciones Web que permiten a los atacantes a predecir todos los detalles de una acción particular. Ya que los navegadores envían automáticamente credenciales como la cookie de sesión, los atacantes pueden crear paginas Web maliciosas donde puedan generar peticiones falsas que no son distinguibles de las legítimas. La detección de los errores de CSRF es fácil por pruebas de penetración o análisis de código. Los atacantes pueden ocasionar que las victimas cambien cualquier dato que en teoría seria valido o realizar cualquier función que la victima estaría autorizada a usar. Considere el valor de negocio de los datos afectados o de las funciones de la aplicación. Imagina el no estar seguro si los usuarios intentaron tomar esas acciones. Considere el impacto a tu reputación.

  13. A6 – Configuración Defectuosa de Seguridad Database Finance Transactions Accounts Administration Communication Knowledge Mgmt E-Commerce Bus. Functions Custom Code App Configuration Development Framework App Server QA Servers Web Server Hardened OS Atacante Interno Test Servers Source Control

  14. A6 – Configuración Defectuosa de Seguridad Tener buena seguridad requiere tener una configuración de seguridad definida e implementada para la aplicación, marcos de trabajo, servidor de aplicación, servidor web, servidor de base de datos, y la plataforma. Todas estas configuraciones deben ser definidas, implementadas, y mantenidas ya que muchas no se envían con seguridad por defecto. Esto incluye mantener todo el software al día, incluyendo las librerías de código que utiliza la aplicación. Debilidad en Seguridad Impacto Técnico Impacto de Negocio Agentes Atacantes Vectores de Ataque _______ Explotable FÁCIL Prevalencia COMÚN Detectable FÁCIL Impacto MODERADO _______ Considere atacantes anónimos externos así como usuarios con sus cuentas propias que pueden tratar de comprometer el sistema. También considere “insiders” que quieran ocultar sus acciones. El atacante accede a las cuentas por defecto, páginas no utilizadas, defectos sin parchar, archivos y directorios sin parchar, etc. para obtener acceso no autorizado al sistema u obtener conocimiento del mismo. La Configuración Defectuosa de Seguridad puede ocurrir a cualquier nivel de una pila de aplicaciones, incluyendo la plataforma, servidor web, servidor de aplicaciones, marcos de trabajo y código personalizado. Los desarrolladores y administradores de red necesitan trabajar juntos para asegurar que toda la pila esta configurada apropiadamente. Los escáneres automáticos son útiles para la detección de parches faltantes, errores de configuración, el uso de cuentas por defecto, servicios innecesarios, etc. Estos defectos suelen dar a los atacantes acceso no autorizado a algunos datos o alguna funcionalidad del sistema. Ocasionalmente, estos defectos resultan en un ataque que compromete completamente al sistema. El sistema podría estar completamente comprometido sin que usted lo sepa. Toda su información podría ser robada o modificada lentamente con el tiempo. Los costos de recuperación podrían ser costosos.

  15. A7 – Almacenamiento Criptográfico Inseguro Finance Transactions Accounts Administration Communication Knowledge Mgmt E-Commerce Bus. Functions Custom Code Victima ingresa su tarjeta de crédito en un formulario web 1 Log files Atacante interno obtiene 4 millones de tarjetas de crédito 4 2 El gestionador de errores almacena los datos de la TC porque el gateway no se encuentra disponible 3 Logs son accesibles a todos los miembros de IT por motivos administrativos

  16. A7 – Almacenamiento Criptográfico Inseguro Muchas aplicaciones web no protegen adecuadamente los datos sensibles, tales como tarjetas de crédito, números de seguro social, y credenciales de autenticación, con la codificación o hashing adecuada. Los atacantes pueden robar o modificar dichos datos débilmente protegidos para llevar a cabo robo de identidad, fraudes de tarjetas de crédito u otros delitos. Debilidad en Seguridad Impacto Técnico Impacto de Negocio Agentes Atacantes Vectores de Ataque _______ Explotable FÁCIL Prevalencia COMÚN Detectable DIFÍCIL Impacto SEVERO _______ Considere usuarios de su sistema. ¿Les gustaría tener acceso a datos protegidos a los que no están autorizados? ¿Qué pasa con los administradores internos? Los atacantes normalmente no pueden romper el cifrado. Rompen algo más, como encontrar las llaves, obtener copias de los datos en texto claro, o acceden datos a través de canales que automáticamente los descifran. La falla más común en esta área es simplemente no cifrar los datos que merecen ser cifrados. Cuando el cifrado es empleado, la generación y almacenamiento inseguro de llaves, no rotar las llaves, y el uso de algoritmos débiles es común. El uso de hashes débiles o sin “sal” para proteger contraseñas es también común. Atacantes externos tienen dificultades para detectar estos errores debido al acceso limitado. Deben explotar algo más primero para obtener el acceso necesario. El fracaso frecuentemente compromete todos los datos que debieron haber sido cifrados. Generalmente esta información incluye datos sensibles como registros de salud, credenciales, datos personales, tarjetas de crédito, etc. Considere el valor de negocio de la información perdida y el impacto a su reputación. ¿Cuál es su responsabilidad legal si esta información es expuesta? También considere el daño a su reputación.

  17. A8 – Falla de Restricción de Acceso a URL • Atacante identifica que la URL indica su perfil /user/getAccounts • La modifica apuntando a otra carpeta (perfil) /admin/getAccounts, o /manager/getAccounts • Atacante visualiza otras cuentas

  18. A8 – Falla de Restricción de Acceso a URL Muchas aplicaciones web comprueban derechos de acceso a la URL antes de emitir enlaces y botones protegidos. Sin embargo, las aplicaciones necesitan llevar a cabo comprobaciones de control de acceso similares cada vez que estas páginas son accedidas, o un atacante será capaz de forjar las URLs para acceder estas páginas ocultas de todos modos Debilidad en Seguridad Impacto Técnico Impacto de Negocio Agentes Atacantes Vectores de Ataque _______ Explotable FÁCIL Prevalencia POCO COMÚN Detectable PROMEDIO Impacto MODERADO _______ Cualquier persona con acceso a la red puede enviar una petición a su aplicación. ¿Podrían usuarios anónimos acceder a una página privada o usuarios regulares a páginas privilegiadas? El atacante, que es un usuario autorizado del sistema, simplemente cambia la URL a la de una página privilegiada. ¿Se concede acceso? Usuarios anónimos pueden acceder a páginas privadas que no están protegidas. Las aplicaciones no siempre están protegiendo las solicitudes de páginas. Algunas veces, la protección de URL es manejada a través de la configuración, y el sistema está mal configurado. Algunas veces, los desarrolladores deben incluir comprobaciones de código adecuadas, y lo olvidan. Detectar dichos defectos es fácil. La parte más difícil es identificar que páginas (URLs) existen para atacar. Estos defectos puede permitir que algunas o incluso todas las cuentas sean atacadas. Una vez que se tiene éxito, el atacante puede hacer cualquier cosa que la víctima puede hacer. Cuentas privilegiadas son normalmente el objetivo. Considere el valor de negocio de las funciones expuestas y la información que procesan. También considere el impacto en su reputación si la vulnerabilidad se hace pública.

  19. A9 – Protección insuficiente en la Capa de Transporte Socios de Negocios Victima Externa Backend Systems Custom Code Empleados 2 1 Atacante Externo obtiene credenciales y datos de la red Atacante Interno obtiene credenciales y datos de la red interna Atacarte Externo Atacante Interno

  20. A9 – Protección Insuficiente en la Capa de Transporte Las aplicaciones frecuentemente fallan en autenticar, cifrar y proteger la confidencialidad e integridad del tráfico de red sensible. Cuando lo hacen, en ocasiones utilizan algoritmos débiles, usan certificados expirados o inválidos, o no lo usan correctamente. Debilidad en Seguridad Impacto Técnico Impacto de Negocio Agentes Atacantes Vectores de Ataque _______ Explotable DIFÍCIL Prevalencia COMÚN Detectable FÁCIL Impacto MODERADO _______ Considere cualquier persona que pueda monitorear el tráfico de red de sus usuarios. Si la aplicación está en Internet, nadie sabe como sus usuarios la accederán. No olvide las conexiones en el back-end. Monitorear el tráfico de red de los usuarios puede ser difícil, pero en ocasiones es fácil. La dificultad principal radica en el monitoreo apropiado de tráfico de red mientras los usuarios están accediendo al sitio vulnerable. Las aplicaciones frecuentemente no protegen el tráfico de red. Tal vez usen SSL/TLS durante la autenticación, pero no en otra parte, exponiendo los datos y los identificadores de sesión a que sean interceptados. Certificados expirados o mal configurados también pueden ser utilizados. Detectar las fallas básicas es fácil. Sólo hay que observar el tráfico de red del sitio. Defectos más sutiles requieren inspeccionar el diseño de la aplicación y la configuración del servidor. Tales defectos exponen la información de usuarios individuales y puede conducir al robo de cuenta. Si una cuenta de administrador es comprometida, el sitio completo podría ser comprometido. Considere el valor de negocio de la información expuesta en el canal de comunicación en cuanto a las necesidades confidencialidad e integridad, y la necesidad de autenticar a los dos participantes.

  21. A10 – Redirecciones y Destinos No Validados 1 Atacante envía un ataque a la pagina web vulnerable El pedido es enviado a una pagina web que el atacante tiene acceso. • public void sensitiveMethod( HttpServletRequest request, HttpServletResponse response) { • try { • // Do sensitive stuff here. • ... } catch ( ... La aplicación autoriza el pedido y lo procesa 2 Filtro La pagina destino falla al validar el parámetro, enviando al atacante directamente hacia una pagina no autorizada, salteando los controles de acceso. 3 • public void doPost( HttpServletRequest request, HttpServletResponse response) { • try { • String target = request.getParameter( "dest" ) ); ... request.getRequestDispatcher( target ).forward(request, response); } catch ( ... http://www.ejemplo.com/destino.jsp?fwd=admin.jsp

  22. A10 – Redirecciones y Destinos No Validados Las aplicaciones web frecuentemente redireccionan y envían a los usuarios a otras páginas y sitios web, y usan datos no confiables para determinar las páginas de destino. Sin una validación adecuada, los atacantes pueden redirigir a las víctimas a sitios de phishing o malware, o usar reenvíos para acceder páginas no autorizadas Debilidad en Seguridad Impacto Técnico Impacto de Negocio Agentes Atacantes Vectores de Ataque _______ Explotable FÁCIL Prevalencia POCO COMÚN Detectable FÁCIL Impacto MODERADO _______ Considere cualquier persona que puede engañar a los usuarios para que envíen una petición a su sitio web. Cualquier sitio web o cualquier otro tipo de alimentación en HTML que sus usuarios utilicen podría hacer esto. El atacante envía enlaces hacía redireccionamientos no validos y engaña a la victima para que haga clic sobre dicho enlace. Las víctimas son más propensas a hacer clic en él, ya que el enlace es a un sitio válido. El objetivo del atacante es utilizar reenvíos inseguros para eludir controles de seguridad. Las aplicaciones frecuentemente redirigen a los usuarios a otras páginas, o utilizan reenvíos internos de similar manera. Algunas veces la página de destino se especifica en un parámetro no validado, permitiendo al atacante elegir la página de destino. Tales redireccionamientos pueden intentar instalar malware o engañar alas victimas para que revelen contraseñas u otra información sensible. Reenvíos inseguros pueden permitir que se eluda el control de acceso Considere el valor de negocio de conservar la confianza de sus usuarios. ¿Qué si son poseídos por malware? ¿Qué si los atacantes pueden acceder funciones que son internas únicamente?

  23. Gracias por tu tiempo Puedes contactarnos: hector.espinoza@softtek.com larmando.martinez@softtek.com

More Related