UNIVERSIDAD DE GUADALAJARA CENTRO UNIVERSITARIO DE CIENCIAS ECONÓMICO ADMINISTRATIVAS COORDINACIÓN DE POSGRADOS MAESTRÍA EN TECNOLOGÍAS DE INFORMACIÓN “EFECTIVIDAD DE TÉCNICAS DE OWASP PARA ASEGURAR APLICACIONES WEB CONTRA INYECCIÓN DE SQL” QUE PARA OBTENER EL GRADO DE: MAESTRO EN TECNOLOGÍAS DE INFORMACIÓN PRESENTA: MANUEL LÓPEZ ARREDONDO DIRECTOR: MTRO. LUIS ALBERTO MACIEL ARELLANO ZAPOPAN, JALISCO A XXX XX DEL XXXX Dedicatoria Mis padres que me dieron la mejor herencia que un hijo puede pedir: amor, apoyo y educación. i Agradecimientos Mi más sincero agradecimiento al Mtro. Luis Maciel por invertir parte de su valioso tiempo en dirigir éste trabajo de investigación; sin su apoyo sería complicado concluir una tesis de ésta calidad. ii Resumen El presente documento muestra un estudio del nivel de riesgo al que se encuentran expuestas todo tipo de instituciones, empresas privadas y gobiernos por medio de sus aplicaciones web, ya sea sitios internos (intranet) o externos (internet), mediante la explotación de las vulnerabilidades de inyección de SQL, así como del nivel de efectividad de las técnicas de OWASP (Open Web Application Security Project) para mitigar ésas vulnerabilidades. Por medio de la ejecución de pruebas de penetración enfocadas a explotar las vulnerabilidades mencionadas, y con base a una evaluación de las prácticas de desarrollo seguro de software de la organización objetivo, tendremos un panorama inicial del estado de la seguridad de la aplicación, y obtendremos el nivel de madurez de las prácticas de desarrollo de software seguro de la organización; para después, implementar las técnicas de OWASP, realizar el mismo ejercicio, e identificar si éstas técnicas son efectivas mediante la comparación de resultados. Lo anterior con la finalidad de ayudar a los profesionales de Seguridad de la Información, Desarrolladores de Software y Organizaciones en general, a tomar decisiones más informadas para mitigar riesgos de integridad y confidencialidad de la información en aplicaciones web. iii Contenido INTRODUCCIÓN ................................................................................................................. 1 ASPECTOS PRELIMINARES ................................................................................................... 3 Planteamiento del Problema................................................................................................. 4 La fundación OWASP ............................................................................................................ 9 Objetivos de Investigación .................................................................................................. 11 1.1.1 Objetivos Generales ........................................................................................................ 11 1.1.2 Objetivos Específicos ....................................................................................................... 11 1.1.3 Hipótesis .......................................................................................................................... 12 CONTRIBUCIÓN ..................................................................................................................... 12 COMPARACIÓN CON TRABAJOS ANTERIORES .............................................................................. 13 MARCO TEÓRICO ............................................................................................................ 15 Terminología Elemental ...................................................................................................... 16 Ataques de Inyección de SQL .............................................................................................. 17 1.1.4 Pruebas de Caja Negra..................................................................................................... 18 1.1.5 Herramientas ................................................................................................................... 20 Técnicas OWASP ................................................................................................................. 26 1.1.6 OWASP Top Ten ............................................................................................................... 27 1.1.7 Enterprise Security API (ESAPI) ........................................................................................ 29 1.1.8 AppSensor........................................................................................................................ 30 1.1.9 Application Verification Security Standard (ASVS) .......................................................... 32 1.1.10 OWASP Testing Guide.................................................................................................... 35 1.1.11 OWASP Software Assurance Maturity Model (SAMM) ................................................. 36 Método .............................................................................................................................. 37 CASOS DE ESTUDIO .......................................................................................................... 40 CONCLUSIONES ............................................................................................................... 41 Resultados ......................................................................................................................... 42 Discusión ............................................................................................................................ 42 Conclusiones ...................................................................................................................... 42 Trabajo Futuro.................................................................................................................... 42 REFERENCIAS .................................................................................................................. 43 iv Lista de Figuras Figura 1 Costo anual promedio de un ciber ataque (Ponemon Institute, 2012)............................ 4 Figura 2 Vulnerabilidades por trimestre 2005-2012 (The Open Source Vulnerability Database, 2012)........................................................................................................................................ 6 Figura 3 Vulnerabilidades mas comunes en OSVDB por categoría 2000-2012 (Hewlett-Packard, 2012)........................................................................................................................................ 6 Figura 4 Relación de OWASP con otros estándares y regulaciones ............................................ 10 Figura 5 Aplicación Web de Arquitectura de cuatro capas ........................................................ 17 Figura 6 Ilustración del ataque de inyección de SQL (Hewlett-Packard, 2012) ........................... 19 Figura 7 WSDigger .................................................................................................................. 20 Figura 8 Falcove ...................................................................................................................... 22 Figura 9 NMAP ....................................................................................................................... 24 Figura 10 Metasploit Pro ......................................................................................................... 26 Figura 11 Cambios en el OWASP Top 10 de 2010 contra 2013 (Williams & Wichers, 2013) ........ 27 Figura 12 Criterios de evaluación de riesgos de OWASP (OWASP, 2011) ................................... 28 Figura 13 Cuadro de análisis de riesgos para las vulnerabilidades de inyección (Williams & Wichers, 2013) ....................................................................................................................... 28 Figura 14 Ejemplo de implementación de ESAPI (OWASP, 2011)............................................... 29 Figura 15 Contenido del reporte de la revisión de seguridad (OWASP, 2009) ............................ 35 Figura 16 Modelo SAMM (Chandra & Deleersnyder, 2012) ....................................................... 37 v Lista de Tablas Tabla 1 Ejemplos de Casos de Inyección de SQL en los últimos años ........................................... 7 Tabla 2 Puntos de detección por cada excepción en AppSensor (Watson & Coates, 2010) ......... 31 Tabla 3 Niveles de tolerancia para cada tipo de respuesta (Watson & Coates, 2010) ................. 32 Tabla 4 OWASP ASVS Requerimientos de Validación de Captura (V5) (OWASP, 2009) .............. 38 vi INTRODUCCIÓN “El costo total del Cibercrimen es mayor que el efecto combinado que tiene el tráfico de marihuana, heroína y cocaína sobre la economía global.” (Parnell, 2011) En un estudio del SANS Institute se menciona que el 60% de los ataques en Internet se hacen contra aplicaciones Web (Scholt, Balzarotti, & Kirda, 2012); en consecuencia, cualquier organización está expuesta al robo de datos e incluso a problemas de integridad de los mismos, llevando a la organización a enfrentar riesgos regulatorios, de reputación y legales. En el caso de México, un ejemplo de un riesgo legal es el no cumplimiento de la Ley Federal de Protección de Datos en Posesión de Particulares (LFPDPPP), que describe como motivo de incumpliendo con la regulación, el hecho de “Vulnerar la seguridad de bases de datos, locales, programas o equipos, cuando resulte imputable al responsable”; las sanciones van desde 100 hasta 320,000 días de salario mínimo (Diario Oficial de la Federación, 2010). Los ataques de Inyección de SQL son realizados al enviar código malicioso sobre aquellos campos que se encuentran a la vista del usuario; vía la sintaxis del código enviado, se puede explotar al intérprete de base datos. Por ejemplo, existen combinaciones de caracteres que pueden tener un significado especial para el manejador de la base de datos o RDBMS ya que estos caracteres son parte del lenguaje del manejador de base de datos. Los siguientes caracteres son un ejemplo de estos caracteres especiales: ‘ o “ (caracteres que indican cadenas de texto) # (línea simple comentada) /* … */ (varias líneas comentadas) + (suma o concatencación) % (indicador para varios caracteres) 1 Al enviar a la aplicación una combinación de los caracteres arriba mostrados, un atacante puede tener acceso para consultar o manipular la información, al enviar comandos de SQL. El Proyecto Abierto de Seguridad en Aplicaciones Web (OWASP por sus siglas en inglés) provee algunas soluciones para fortalecer la seguridad en aplicaciones web y mitigar el riesgo de que la inyección de SQL sea encontrada y explotada. El propósito de éste estudio de caso es trabajar en la implementación de las técnicas OWASP en organizaciones mexicanas realizando las siguientes tareas: Capacitar a las organizaciones en la implementación de Técnicas OWASP ya sea en línea o en sitio. Identificar las aplicaciones dentro del alcance por cada organización. Implementar las técnicas de OWASP en las aplicaciones dentro del alcance. Medir los resultados mediante: o Indicadores clave de riesgo (KRI por sus siglas en inglés): Número y nivel de riesgo de las vulnerabilidades encontradas por un ejercicio de prueba de penetración, antes y después de la implementación de las técnicas OWASP. o Evaluación del nivel de madurez de la organización para el desarrollo seguro de software, antes y después de la implementación de las técnicas OWASP. 2 Capítulo I ASPECTOS PRELIMINARES “Muchas de las mas serias y comunes vulnerabilidades en software, se deben a errores bien conocidos que son fáciles de encontrar y fáciles de explotar” (CWE/SANS, 2011) 3 Planteamiento del Problema Los ataques cibernéticos son descritos por (Tatum, 2013), como un intento de comprometer la funcionalidad un sistema de computación, o como un intento de rastrear las transacciones en línea de un individuo sin tener su permiso. Éste tipo de ataques pueden pasar sin ser percibidos por el usuario final, y también pueden llevar a la red a un estado en el que no está en funcionamiento, de tal forma que ninguno de los usuarios pueda realizar incluso las tareas más básicas. El primer incidente registrado de un ataque cibernético se dio en 1966 cuando un atacante modificó datos del Banco de Minnesota; y fue hasta 1977 cuando el senador Ribicoff de Estados Unidos creó la ley Federal de Protección de Sistemas Computacionales (Harris, 2008). Actualmente, el costo total de un ataque cibernético va desde $3,252,912 USD hasta $8,933,510 USD (Ponemon Institute, 2012). La siguiente figura muestra el porcentaje anualizado del costo de los ciber ataques por tipos de ataque; donde podemos ver que los “Malicious code” se encuentra en el primer lugar. El reporte distingue a los ataques de Inyección de SQL dentro de ésta categoría. Figura 1 Costo anual de un ciber ataque (Ponemon Institute, 2012) 4 El estudio contempló entre otro tipo de ataques, a las inyecciones de SQL dentro de la categoría “Web-based attacks”. Las vulnerabilidades en las aplicaciones web siguen siendo populares debido a la falta de atención por parte de las organizaciones y desarrolladores de software para evitarlos (Hewlett-Packard, 2012). Resulta impresionante saber que a un atacante le bastan sólo 7 horas para encontrar una vulnerabilidad en una aplicación web, con un 95% de certeza en el hallazgo (Holm, Ekstedt, & Sommestad, 2013). 5 La siguiente figura ilustra las vulnerabilidades reportadas por trimestre desde 2005 hasta 2012 demostrando que las vulnerabilidades de Inyección de SQL han sido una de las más constantes a lo largo de los años (The Open Source Vulnerability Database, 2012). Figura 2 Vulnerabilidades por trimestre 2005-2012 (The Open Source Vulnerability Database, 2012) Finalmente, la figura de abajo, muestra las 6 vulnerabilidades más comunes, de las cuales cuatro impactan a las aplicaciones web, representando el 40% de las vulnerabilidades reportadas (The Open Source Vulnerability Database, 2012; HewlettPackard, 2012). Figura 3 Vulnerabilidades mas comunes en OSVDB por categoría 2000-2012 (Hewlett-Packard, 2012) 6 Sin embargo, el universo de los ataques a aplicaciones web es grande y no sería posible evaluar todos ellos como alcance de éste estudio de caso. Por lo anterior, nos enfocaremos en el ataque más común y con más nivel de riesgo en aplicaciones web: la inyección de SQL (Williams & Wichers, 2013). No resulta claro cuándo fue la primera vez que un ataque de SQL se presentó, sin embargo el crédito se ha dado a Rain Forest Puppy quien en 1998 hizo público cómo funcionan estos ataques al describirlos en su artículo (Puppy, 1998). Desde entonces y como hemos analizado anteriormente, ha sido uno de los ataques más constantes; como se muestra en la siguiente tabla, estos son solo algunos de los ejemplos de aquellos casos en que la inyección de SQL fue utilizada como medio de explotación en una aplicación web (Clarke, 2012): Tabla 1 Ejemplos de Casos de Inyección de SQL en los últimos años Fecha Febrero 2002 Descripción Jeremiah Jacks explotó la vulnerabilidad en el sitio guess.com obteniendo acceso a datos de tarjetas de crédito de 200,000 clientes. Junio 2003 Jeremiah Jacks de nuevo utilizó inyección de SQL en petco.com para obtener acceso a datos de 500,000 tarjetas de crédito. Junio 2005 Master Card reportó el ataque de inyección de SQL más grande del momento al mencionar que 4 millones de registros de tarjetas de crédito fueron robados por un hacker. 7 Diciembre 2005 La empresa EnCase fue atacada por inyección de SQL y perdió datos financieros de aproximadamente 3,800 clientes. Diciembre 2006 Hackers robaron a TJX millones de registros de datos de sus clientes con detalles de sus tarjetas de crédito. Agosto 2007 La página inicial del sitio de las naciones unidas fue cambiada por un hacker mostrando mensajes en contra de los Estados Unidos. 2008 El botnet Asprox utilizó vulnerabilidades de inyección de SQL en sitios web para expandir el malware alrededor del mundo. El número de páginas web atacadas se estima que fue alrededor de 500,000. Febrero 2009 Un grupo de hackers romanos se atribuyó varios ataques utilizando inyección de SQL a sitios web de compañías como Kaspersky, F-Secure y Bit-Defender Agosto 2009 El Departamento de Justicia de Estados Unidos sentenció al ciudadano americano Albert Gonzalez por el robo de 130 millones de números de tarjetas de crédito utilizando inyección de SQL. Abril 2011 Barracuda Networks sufrió un ataque de inyección de SQL y el hacker hizo público los registros de sus clientes incluyendo usuarios y passwords. Mayo 2011 LulSec comprometió el sitio web de Sony por medio de inyección de SQL, de acuerdo a la prensa, el grupo hacktivista obtuvo acceso a contraseñas, correos electrónicos, dirección particular y fechas de nacimiento de alrededor de un millón de usuarios. Adicionalmente, obtuvo 3.5 millones de cupones de música de su sitio. Diciembre 2012 El proyecto WhiteFox es un esfuerzo del hacktivismo para promover el tránsito libre de la información. Por medio de inyección de SQL ha obtenido acceso a 1.6 millones de registros de diversas organizaciones como la NASA, FBI, Interpol y el Pentágono. Los tipos de datos obtenidos son nombres, correos electrónicos, direcciones particulares entre otros, que fueron hechos públicos en Internet. 8 Julio 2012 Uno de los más grandes robos de información por medio de inyección de SQL se dio en Alemania cuando el hacker “8in4ry_Munch3r” tuvo acceso a credenciales de usuarios de Gamigo al obtener 11 millones de contraseñas encriptadas y 8.2 millones de correos electrónicos. Además de los impactos arriba mencionados, se estima que el impacto económico de un ataque de inyección de SQL es de $2.2 billones de dólares (Morana & Ucedavelez, 2009). La fundación OWASP La fundación OWASP surgió en 2001 debido a la necesidad de contar con un estándar de la industria de la seguridad para desarrollar una metodología para hacer pruebas de seguridad en aplicaciones web. Sus miembros desde un inicio y hasta la fecha hacen aportaciones voluntarias ya sea con fondos económicos, desarrollando proyectos, software y documentación en nombre de la fundación, así como en la difusión del material mencionado. OWASP es una fundación no lucrativa cuyo principal propósito es proporcionar a la industria de la seguridad información material que ayude a las organizaciones y profesionales a tomar decisiones informadas cuando haya que aplicar controles de seguridad en aplicaciones web. El material desarrollado por la fundación es libre y el código es abierto, de tal forma que puede ser obtenido por cualquier persona e incluso puede ser mejorado dependiendo de las necesidades de cada organización. El software generado por OWASP se puede distribuir bajo la licencia de software libre. La influencia de OWASP en la industria se determina bajo 4 factores: 9 Citaciones en la industria: Instituciones gubernamentales de diversos países y organismos internacionales hacen referencia a material desarrollado por OWASP para implementar controles de seguridad en aplicaciones web. Proyectos desarrollados: Más de 400 proyectos entre documentos, herramientas, ambientes de aprendizaje, guías y otros materiales que ayudan a las organizaciones a mejorar su capacidad de desarrollar código seguro. Patrocinadores: A nivel global, organizaciones como IBM, HP, ORACLE, Symantec, entre otros, así como varias Universidades alrededor del mundo apoyan a la fundación ya sea por medio de donativos económicos, apoyando eventos como conferencias o reuniones de capítulo, ofreciendo capital intelectual para el desarrollo de proyectos, por mencionar algunos. Capítulos Locales de OWASP: Los capítulos locales ofrecen la posibilidad de realizar eventos en cada ciudad con el fin de dar a conocer nuevas tendencias y proyectos desarrollados por la Fundación así como a seguir generando conocimiento en relación a la seguridad en aplicaciones web. Los eventos desarrollados por los capítulos no tienen costo y cualquier persona puede atender las reuniones. Al día de hoy hay más de 100 capítulos en todo el mundo. OWASP está influenciado por otros estándares internacionales de seguridad de la información como COBIT e ISO27001; por lo tanto “Es perfectamente correcto mezclar y combinar controles de COBIT y de ISO 17799 y casi cualquier otro estándar de seguridad de la información; rara vez se encuentran en desacuerdo en los detalles” (van der Stock, 2005). La siguiente figura muestra una relación entre OWASP como marco referencia contra otros estándares y regulaciones internacionales en materia de seguridad de la información: Figura 4 Relación de OWASP con otros estándares y regulaciones 10 Objetivos de Investigación 1.1.1 Objetivos Generales Evaluar la efectividad de la aplicación de técnicas de OWASP para la protección contra ataques de inyección de SQL. 1.1.2 Objetivos Específicos Los objetivos particulares de la tesis son: Ejecutar ataques de Inyección de SQL a objetivos específicos. Obtener las métricas de riesgo tales como el número total de vulnerabilidades identificadas así como su clasificación de riesgo con base a OWASP. 11 Implementar técnicas de OWASP, a las aplicaciones web objetivo y a la organización objetivo. Una vez que las técnicas OWASP han sido implementados, ejecutar las mismas técnicas y script de ataques a los mismos objetivos. Obtener las métricas de riesgo, y el nivel de madurez; para evaluar si el número de vulnerabilidades y su respectivo nivel de riesgo, cambió con base al ejercicio inicial. Presentar los resultados en conferencias y revistas especializadas. 1.1.3 Hipótesis La implementación de técnicas OWASP en aplicaciones web disminuye el número de vulnerabilidades encontradas por un ataque de inyección de SQL. La implementación de técnicas OWASP en aplicaciones web disminuye el nivel de riesgo de las vulnerabilidades encontradas por un ataque de inyección de SQL. CONTRIBUCIÓN Más allá de validar la efectividad de las técnicas de OWASP, la tesis proveerá casos prácticos de éxito a los proyectos OWASP que serán utilizados dentro de la investigación, esto con el objetivo de incrementar y difundir no sólo la misión de la fundación, sino también crear conciencia de la importancia de la seguridad de la información en las aplicaciones web, dentro de las empresas de la ciudad de Guadalajara. Adicionalmente, la participación y aportación de casos prácticos a los proyectos OWASP, ayudará a que los proyectos sean promovidos dentro de la fundación OWASP y en consecuencia citados en la industria por otras instituciones. 12 COMPARACIÓN CON TRABAJOS ANTERIORES La revisión de la bibliografía nos permite identificar trabajos similares aunque con diferentes enfoques, como el de (Rodriguez Argueta, 2011) que hace un análisis del estado de la seguridad de las aplicaciones con dominios .gob.mx; el trabajo se enfoca en evaluar la seguridad con base a estándares internacionales, como el de OWASP, y a proponer técnicas de pruebas de penetración en las aplicaciones. Sin embargo, no lleva la implementación de dichas técnicas a la práctica. El trabajo realizado por (Ramirez Lopez, 2009) propone una marco de control basado en estándares internacionales como la ISACA y el NIST, para analizar las vulnerabilidades en sistemas operativos, y para realizar pruebas de penetración a los mismos. El trabajo, además de que el enfoque es en sistemas operativos y no en aplicaciones web, tampoco lleva a cabo la implementación del esquema propuesto. El estudio realizado por (Saenz Gonzalez, 2009), es lo más apegado que se pudo encontrar, ya que indica los requerimientos y las guías para la construcción de un laboratorio para pruebas de penetración y análisis de vulnerabilidades con base al NIST. Sin embargo, no lleva a cabo la práctica de las pruebas de penetración en un escenario real, además la investigación se enfoca a las pruebas sobre redes de computadora y no a las aplicaciones web. La investigación de (Carreon Mendoza, 2009), propone una estrategia para el desarrollo seguro de software de una paraestatal mexicana, sin embargo no lleva la estrategia a la práctica y no menciona bajo qué estándares se construye dicha estrategia. El trabajo mas apegado a nuestra investigación es el realizado por (Dharam & Shiva, 2012) quienes proponen una técnica de monitoreo contra ataques de inyección de SQL; ésta metodología se basa en un marco de control llamado “Runtime Monitoring” que 13 consiste en la evaluación de todos las posibles combinaciones de ataques que pueden representar un ataque de inyección de SQL. Llevaron el enfoque a la implementación y lo probaron con base a una serie de ataques básicos predefinidos, en los cuales, la implementación demostró que identificó exitosamente todos los ataques llevados acabo. Como parte del trabajo futuro, (Dharam & Shiva, 2012) proponen incrementar las reglas de ataques de inyección de SQL dentro de su enfoque para que éste sea capaz de identificar todos los posibles ataques que actualmente se llevan a cabo. La diferencia principal de nuestro estudio con respecto a éste último trabajo, es que nosotros estaremos probando la efectividad de las técnicas de OWASP en un ambiente real, bajo circunstancias lo más reales posibles y basándonos en herramientas automáticas y técnicas manuales, lo cual implica que el alcance de nuestras pruebas será más amplio, ya que la investigación de (Dharam & Shiva, 2012) sólo se enfoca en un limitado conjunto de reglas de ataques de inyección de SQL. 14 Capítulo II MARCO TEÓRICO “Los ciberataques pueden llegar a ser devastadores, y sus efectos son cercanos a los que causan las armas de destrucción masiva.” (Levin, 2010) 15 Terminología Elemental A continuación daremos un breve repaso a los conceptos básicos de seguridad de la información para establecer un lenguaje común de acuerdo a (EC-Council, 2011): Amenaza: Una acción o evento que podría comprometer la seguridad. Una amenaza es una potencial violación de la seguridad. Vulnerabilidad: Existencia de una debilidad, diseño, o error de implementación que puede llevar a que un evento no deseado, o no esperado, comprometa la seguridad del sistema. Sistema Objetivo: Un sistema, producto o componente de Tecnología de Información (TI) que es objeto de una evaluación de seguridad de la información. Ataque: Un asalto a la seguridad del sistema resultado de una amenaza. Un ataque es cualquier acción que viola la seguridad del sistema. Explotación: Una forma definida de romper la seguridad de un sistema de TI a través de una vulnerabilidad. Riesgo: Es la Probabilidad de que una amenaza tome ventaja de una vulnerabilidad que impacte al negocio (Harris, 2008). Controles: Medidas que son implementadas para mitigar un riesgo (Harris, 2008). Por otro lado, los elementos fundamentales que forman la seguridad de la información según (Harris, 2008) son: Disponibilidad: Confiabilidad de que los datos y los recursos pueden ser accedidos por personas autorizadas. Integridad: Asegura la exactitud y confiabilidad de la información y de los sistemas; y cualquier modificación es prevenida y autorizada. 16 Confidencialidad: Asegura el nivel necesario de secreto a cada parte de los datos y previene la fuga de información. Es importante dejar en claro que las pruebas de penetración son los procesos de simular un ataque sobre la red o los sistemas, bajo la petición del dueño y de la alta gerencia de una organización. El objetivo es medir el nivel de resistencia que tiene una aplicación web contra un ataque, así como descubrir cualquier vulnerabilidad en el ambiente (Harris, 2008). Ataques de Inyección de SQL Una aplicación web es un conjunto de páginas que son generadas como respuesta a una petición del usuario. En internet existen muchos tipos de aplicaciones web tales como motores de búsqueda, tiendas en línea, periódicos y revistas en línea, foros de discusión, juegos, entre otros. (Murach & Steelman, 2008) Muchas de las aplicaciones web están soportadas por diferentes capas de infraestructura para proporcionar su servicio, según (Clarke, 2012), una arquitectura compleja puede representarse como muestra la Figura 4 Figura 5 Aplicación Web de Arquitectura de cuatro capas 17 Donde la capa de presentación es la capa que ve el usuario final y donde interactúa con la aplicación para obtener datos o un servicio. La capa lógica realiza las operaciones de programación y contiene los llamados a los servicios que se encuentran en la capa de aplicación, estos servicios contienen actividades específicas de procesamiento dependiendo de las instrucciones enviadas por la capa lógica para finalmente almacenar datos en la capa de almacenamiento, o servidores de Bases de Datos. Los ataques de inyección de SQL funcionan al enviar código en cualquier campo de texto de la aplicación cuya intención es permitir al usuario final enviar información a la base de datos; estos son puntos de entrada de la aplicación. Al enviar código a través de éstas vías de entrada, el código es interpretado por la base de datos, ejecuta los comandos enviados, y regresa la información al usuario final o atacante (Meucci, Keary, & Cuthbert, 2008). Los ataques de inyección SQL están divididos en las tres siguientes clases (Meucci, Keary, & Cuthbert, 2008): Inband: los datos son extraídos usando el mismo canal que es usado para inyectar el código SQL. Este es el tipo de ataque más simple, en el que los datos recibidos se muestran en la propia aplicación web. Out-of-band: los datos son extraídos usando un canal diferente (por ejemplo, un correo con el resultado de la consulta es generado y enviado al atacante). Inferential: no hay transferencia de datos, pero el atacante puede reconstruir la información enviando peticiones y observando el comportamiento que mantiene el servidor de bases de datos. 1.1.4 Pruebas de Caja Negra El primer paso en esta prueba es entender cuando la aplicación conecta a un servidor de bases de datos para acceder a algún dato (Meucci, Keary, & Cuthbert, 2008). 18 Un atacante debe probar todos los campos que pueden ser usados para crear una consulta SQL, incluyendo los campos ocultos de una petición POST y entonces probarlos por separado, intentando modificar la consulta real y producir un error. La prueba más básica consiste en añadir una comilla simple (‘) o un punto y coma (;) al campo que se quiere probar. El segundo paso es el fin de una sentencia SQL y, si no está filtrado, puede generar un error. Un mensaje de error, ofrece una gran cantidad de información al atacante con el fin de crear una inyección con éxito. Sin embargo, las aplicaciones podrían no enviar mucho detalle; como puede ser el acaso de obtener un mensaje tipo: “500 Server Error” o una página de error diseñada por el programador para evitar que estos mensajes de error del sistema sean enviados, lo que significa se deben utilizar técnicas de inyección SQL ciega (Blind SQL Injection). Un ejemplo de un ataque utilizando la barra de dirección en un explorador de Internet, es enviar comandos SQL por el método GET, y si el dominio de la aplicación web es vulnerable, la petición sería la siguiente: http://www.victima.com/index.php?username=1'%20or%20'1'%20=%20'1&passw ord=1'%20or%20'1'%20=%20'1 El ataque de inyección ciega de SQL (Blind SQL inyection) demanda mucho tiempo y varias peticiones al servidor, para poder ser exitoso y explotar la inyección de SQL. Por lo tanto, el uso de herramientas automatizadas que faciliten ésta tareas es muy común y en la siguiente sección analizaremos algunas de ellas. Figura 6 Ilustración del ataque de inyección de SQL (Hewlett-Packard, 2012) 19 1.1.5 Herramientas WSDigger Es una herramienta de software libre utilizada para automatizar pruebas de penetración; fue diseñada por McAfee Foundstone. Contiene plug-ins para evaluar vulnerabilidades, entre otras, la de inyección de SQL (McAfee Foundstone). Figura 7 WSDigger 20 Acunetix Web Scanner Acunetix Web Scanner determina si una aplicación web contiene vulnerabilidades como la de inyección de SQL, las principales características según (Acunetix Ltd) son: Verifica la complejidad de las contraseñas durante la autenticación de las páginas del tipo HTML o HTTP. Garantiza seguridad. Revisa el contenido dinámico de una página web, como las formas. Soporta la mayoría de las tecnologías, incluyendo ASP, ASP.NET, PHP y CGI. Descubre directorios con permisos débiles. 21 Determina si hay métodos de HTTP peligrosos, habilitados en un servidor web. Reporta si en la aplicación web se encontraron vulnerabilidades del OWASP Top 10. AppScan AppScan es una herramienta que evalúa la seguridad de un sitio web por medio de pruebas de seguridad. Primero explora todo el sitio web para identificar todas las páginas y componentes que le dan forma; posteriormente ejecuta pruebas de vulnerabilidad masivas incluyendo la inyección de SQL (SC Magazine, 2007). Falcove Es una herramienta de escaneo de vulnerabilidades que ayuda a identificar si un sitio web es vulnerable. Audita los contenidos dinámicos de las páginas incluyendo los campos para ingreso de contraseñas, carritos de compras y otras aplicaciones web. Finalmente genera reportes de vulnerabilidades indicando el estado del sistema. (SoftPile, 2008) Figura 8 Falcove 22 WebInspect La herramienta proporciona el conocimiento para identificar rápidamente vulnerabilidades críticas en aplicaciones web. Realiza simulación de ataques externos, para posteriormente analizar la información contra el código interno de la aplicación, para evaluar qué vulnerabilidades se pueden estar explotando en tiempo real. Ayuda al cumplimiento de regulaciones y estándares de seguridad como OWASP (HP Web Inspect, 2013). McAfee WAAM McAfee Web Application Assessment Module (WAAM) ofrece un escaneo profundo de las aplicaciones web asegurando que los errores comunes de codificación 23 sean corregidos como parte del proceso de administración de vulnerabilidades. Sus revisiones incluyen identificación de inyección de SQL y los reportes ayudan al cumplimiento de regulaciones y están apegados a estándares de seguridad como el OWASP Top 10 (McAfee Inc, 2012). SQLiX Es una herramienta de software libre cuyo propósito es encontrar vulnerabilidades de inyección de SQL en aplicaciones web. Está basado en scripts de Perl y ofrece la posibilidad de escanear sólo una página web por ejecución (OWASP, 2011). SQLmap Es una herramienta de software libre para la realización de pruebas de penetración orientadas a identificar y explotar vulnerabilidades de inyección de SQL en aplicaciones web ( Assumpcao Guimaraes & Stampar, 2012). NMAP NMAP es una herramienta que utiliza scripts para el escaneo de puertos en un servidor; la última versión de nmap permite al usuario realizar un ecaneo de vulnerabilidades sobre bases de datos SQL Server. Por medio de ésta versión de nmap es posible escalar privilegios en SQL, obtener nombres de tablas y registros, evaluar complejidad de las contraseñas, entre otras vulnerabilidades. NMAP es una herramienta de software libre que normalmente corre en un sandbox como Backtrack o Metasploit. Figura 9 NMAP 24 SQLNinja Es una herramienta de software libre orientada a identificar y explotar vulnerabilidades de inyección de SQL en bases de datos de Microsoft SQL Server. Sus comandos tienen la capacidad de proporcionar acceso remoto completo a la base de datos de la aplicación web que está siendo analizada. Se requiere Metasploit y módulos adicionales de PERL para poder utilizarla (icesurfer & nico, 2012). Zed Proxy Attack (ZAP) ZAP es una herramienta de software libre para la ejecución de pruebas integradas de penetración. Principalmente hace análisis de tráfico y funciona como un Proxy entre dos puntos de conexión en una red. Al estar en medio de la comunicación, además de analizar el tráfico en la comunicación, la puede atrapar y permitir al usuario modificar los parámetros que serán enviados al otro punto de conexión, que normalmente es un servidor. Es útil para la identificación de páginas web que potencialmente pueden tener la 25 vulnerabilidad de inyección de SQL; pero no tiene la capacidad de explotarla (OWASP, 2013). Metasploit Pro Herramienta que realiza pruebas de penetración sobre aplicaciones web; tiene la versión Pro con interfaz gráfica y soporte directo del proveedor; también tiene la versión de software libre, que es a base de líneas de comando y las actualizaciones y soporte son manuales y proporcionados por la comunidad. La revisión de las vulnerabilidades cumple con el OWASP Top 10. Figura 10 Metasploit Pro Técnicas OWASP Hasta ahora hemos descrito cómo se pueden ejecutar los ataques de inyección de SQL así como diversas herramientas disponibles, tanto comerciales como de software libre, que pueden ser útiles para la identificación y explotación de la vulnerabilidad. 26 A continuación, describiremos las técnicas que OWASP tiene disponibles para realizar análisis de vulnerabilidades en aplicaciones web así como los controles que la fundación ha desarrollado para mitigarlos. Éstas serán la base para la implementación del estudio de caso. 1.1.6 OWASP Top Ten El proyecto OWASP Top 10 nació en 2003 con la finalidad de dar a conocer las vulnerabilidades más comunes en aplicaciones web; es un compendio de diferentes estándares y herramientas para identificar esas vulnerabilidades y proveer información para poder mitigarlas. El objetivo principal de éste proyecto es hacer que los desarrolladores de aplicaciones web y profesionales de seguridad de la información se encuentren mejor informados y construyan aplicaciones web más seguras. Los principales cambios en el Top 10 de la versión 2010 con respecto a la versión 2013 se muestran en la siguiente figura: Figura 11 Cambios en el OWASP Top 10 de 2010 contra 2013 (Williams & Wichers, 2013) 27 La evaluación del riesgo se hace con base a la complejidad de encontrar y explotar una vulnerabilidad en las aplicaciones web así como los posibles impactos para las organizaciones. La siguiente figura nos ayuda a entender la metodología de OWASP para la evaluación de los riesgos: Figura 12 Criterios de evaluación de riesgos de OWASP (OWASP, 2011) Con base al criterio ya mencionado, OWASP identificó las vulnerabilidades de inyección como la vulnerabilidad número uno de su Top 10 debido a que el estudio realizado demostró que la explotación de ésta vulnerabilidad no es compleja, es muy común encontrarla en las aplicaciones web y los impactos son severos para las organizaciones. La figura de evaluación de riesgos de OWASP para las vulnerabilidades de inyección, se muestra de la siguiente figura: Figura 13 Cuadro de análisis de riesgos para las vulnerabilidades de inyección (Williams & Wichers, 2013) 28 El proyecto OWASP Top 10 es un esfuerzo inicial y sugiere verificar otros proyectos como el OWASP Testing Guide, el OWASP Application Security Verification Standard (ASVS) y el OWASP Software Assurance Maturity Model (SAMM), con el objetivo de tener más herramientas para un mejor manejo de riesgos en las vulnerabilidades de aplicaciones web. A continuación estudiaremos algunos de estos proyectos. 1.1.7 Enterprise Security API (ESAPI) El proyecto OWASP Enterprise Security API (ESAPI) es una librería de controles de seguridad bajo la licencia de software libre que facilita a los desarrolladores de software escribir aplicaciones de bajo riesgo. El diseño de ESAPI se compone de los siguientes principios: Contiene un conjunto de interfaces de control de seguridad. Estos definen los tipos de parámetros que son pasados a cada tipo de control de seguridad. Describe una referencia de implementación para cada control de seguridad. La lógica no es orientada a una organización ni a una aplicación en particular. Las implementaciones son opcionales y pueden adecuarse a las necesidades de la organización para cada control de seguridad. El código del ESAPI puede ser ajustado y modificado. La ESAPI es una colección de clases que contienen controles clave de seguridad que todas las aplicaciones necesitan. Las interfaces de control del ESAPI incluyen una clase tipo ESAPI que es conocida como una clase localizadora. La clase localizadora ESAPI es llamada con el propósito de regresar instancias individuales de controles de seguridad, que son llamados a posteriori para realizar validaciones de seguridad. Un ejemplo de la implementación de se puede apreciar en la figura siguiente: Figura 14 Ejemplo de implementación de ESAPI (OWASP, 2011) 29 Naming conventions such as this are not part of ESAPI but are good practice $clean = array(); //this is local in scope $clean_sql = array(); //this is local in scope $clean['id'] = ESAPI::getValidator()->getValidInput( ... ); $clean_sql['id'] = ESAPI::getEncoder()->encodeForSQL( new MySQLCodec(), $clean['id'] Step 1 Step 2 ); This is also an ESAPI control Dentro de la ESAPI existen referencias de implementación de controles de seguridad para cada uno de los siguientes tipos de control: • Authentication • Access control • Input validation • Output encoding/escaping • Cryptography • Error handling and logging • Communication security • HTTP security • Security configuration 1.1.8 AppSensor El proyecto OWASP AppSensor, es un marco de referencia que tiene como objetivo detectar actividad maliciosa dentro de la misma aplicación antes de que el usuario pueda explotar una vulnerabilidad. Dado que las vulnerabilidades son explotadas por los atacantes por medio de prueba y error, muchas vulnerabilidades no serían explotadas dado que el AppSensor tomaría acciones preventivas con base a los tipos de ataques identificados. La arquitectura del AppSensor se compone de dos módulos: 30 Módulo de detección: Es responsable de identificar los comportamientos maliciosos basado en las políticas definidas por el desarrollador. Los puntos de detección pueden ser integrados dentro de la capa de presentación, la de negocios y la de aplicación. El modulo de detección reporta las actividades al modulo de respuesta. Modulo de respuesta: La unidad de respuesta es una unidad que tomará acciones en contra del usuario. La acción dependerá de si el evento es identificado como un ataque o sólo un evento sospechoso así como del historial del usuario en relación a actividades maliciosas y las políticas definidas para dar respuesta a esos eventos. Los siguientes tipos de detección son configurados en el AppSensor; el número total de puntos de detección está definido para cada tipo de detección. A continuación se enumeran los tipos de detección así como el número de puntos de detección para cada tipo: Tabla 2 Puntos de detección por cada excepción en AppSensor (Watson & Coates, 2010) Excepción Requerimiento Autenticación Control de Acceso Sesión Entrada Encodificación Inyección de Comando Archivo Entrada/Salida Tendencia de Usuario Tendencia de Sistema # Puntos de Detección 4 11 6 4 2 2 4 2 4 3 El valor del AppSensor se centra no sólo en la detección de actividad maliciosa sino también en las acciones tomadas con base a la actividad identificada. Los tipos más comunes de respuesta son mensajes de advertencia al usuario, logout, bloqueo de la cuenta y notificación al administrador. Sin embargo, dado que el AppSensor está 31 conectado a la aplicación, las posibilidades de respuestas a una acción están limitadas por las mismas capacidades de la aplicación. Cuando se desarrollan las políticas de respuesta es crítico definir los niveles de tolerancia apropiados para la respuesta a los eventos. El objetivo es disuadir posibles ataques y actividad maliciosa al mismo tiempo que se minimizan los falsos-positivos generados por actividades no maliciosas de los usuarios. La siguiente tabla muestra los niveles de tolerancia recomendados para cada tipo de respuesta a ejecutar por el AppSensor: Tabla 3 Niveles de tolerancia para cada tipo de respuesta (Watson & Coates, 2010) Eventos de Sguridad 2 3 5 7 10 Acción de Respuesta Mensaje de Violación de Seguridad Mensaje de Violación de Seguridad + Logout Mensaje de Violación de Seguridad + Bloqueo de la cuenta por 5 minutos Mensaje de Violación de Seguridad + Bloqueo de la cuenta por 30 minutos Notificación al Administrador + Bloqueo de la cuenta indefinido 1.1.9 Application Verification Security Standard (ASVS) El proyecto ASVS tiene como principal objetivo proporcionar un estándar para la realización de pruebas de penetración en aplicaciones web. El estándar define cuatro niveles jerárquicos con diferente alcance de rigurosidad; siendo el primer nivel el menos riguroso y el cuarto el más exhaustivo. Nivel 1 - Verificación Automática: Es la aplicada para aquellas aplicaciones en las que cierta confidencialidad es requerida en el uso de controles de seguridad. El alcance de éste nivel se enfoca a la revisión de código que fue desarrollado o 32 modificado para crear la aplicación. En éste nivel la verificación involucra el uso de herramientas automáticas así como verificaciones manuales; se puede dividir en 1A para el uso de herramientas automáticas para el escaneo de vulnerabilidades en la aplicación web y 1B para el uso de herramientas automáticas en la revisión de código. Las técnicas manuales son sólo utilizadas para confirmar hallazgos identificados por las herramientas automáticas y no se pretende un uso extensivo de pruebas manuales. Las amenazas evaluadas en éste nivel de verificación son virus y gusanos; éste nivel de verificación proporciona una cobertura parcial de la verificación de la seguridad de la aplicación. Nivel 2 – Verificación Manual: Éste nivel de verificación es típicamente el apropiado para aquellas aplicaciones que manejan transacciones personales, transacciones entre negocios también conocidas como business-to-business (B2B), procesamiento de tarjetas de crédito o procesamiento de información identificable de personas (PII por sus siglas en inglés). Éste nivel provee cierta confianza en el uso de los controles de seguridad implementados así como en el correcto funcionamiento de los mismos. El alcance de éste nivel es la evaluación de cada uno de los componentes de la aplicación incluyendo el código desarrollado por terceros o proveedores. Al igual que el nivel 1 se compone de nivel 2A y 2B cuyos alcances son los mismos que para el nivel 1, es decir herramientas automáticas para el primero y técnicas de verificación manuales para el último. Las amenazas verificadas en éste nivel son virus, gusanos y ataques básicos generados con herramientas de software libre. Nivel 3 – Verificación del Diseño: Éste tipo de verificación es el apropiado para aquellas aplicaciones que manejan transacciones B2B incluyendo aquellas que procesan información del bienestar y salud de las personas o generan transacciones críticas de los negocios. En éste nivel las amenazas verificadas son virus, gusanos y atacantes con habilidades más desarrolladas para llevar acabo ataques de seguridad complejos por medio de herramientas automáticas y scripts personalizados. El alcance de éste nivel de verificación son el código nuevo o 33 modificado así como la evaluación de los componentes que proporcionan seguridad a la aplicación y que han sido desarrollados por terceros; del mismo modo, se asegura que los controles de seguridad se encuentren implementados en todos los componentes de la aplicación y que estos estén funcionando de manera adecuada. Nivel 4 – Verificación Interna: Es el aplicado para aplicaciones críticas dedicadas a proteger la vida y el bienestar de las personas, infraestructura crítica del negocio o funciones de defensa. El nivel 4 asegura que los controles estén aplicados en todos los componentes de la aplicación, que éstos se encuentren funcionando correctamente y que las prácticas de desarrollo seguro de software se hayan seguido a lo largo de todo el proceso. Las amenazas verificadas involucran desde atacantes sofisticados con altas habilidades en el uso de herramientas automáticas. El alcance de éste nivel es todo el código de la aplicación. Adicionalmente, el estándar especifica puntos de validación que deben cubrirse por cada nivel; el ASVS tiene definido 14 requerimientos de verificación de seguridad: V1 – Requerimientos de Documentación de la Arquitectura de Seguridad V2 – Requerimientos de Verificación de Autenticación V3 – Requerimientos de Verificación de Administración de la Sesión V4 – Requerimientos de Verificación de Control de Acceso V5 – Requerimientos de Verificación de Validación de Entrada V6 – Requerimientos de Verificación de Salida Encodificación/Escape V7 – Requerimientos de Verificación de Criptografía V8 - Requerimientos de Verificación de Manejo de Errores y Registro de Auditoria V9 - Requerimientos de Verificación de Protección de Datos V10 - Requerimientos de Verificación Seguridad en Comunicaciones V11 - Requerimientos de Verificación de Seguridad en HTTP V12 - Requerimientos de Verificación de Configuración de Seguridad 34 V13 - Requerimientos de Verificación de Búsqueda de Código Malicioso V14 - Requerimientos de Verificación de Seguridad Interna El proyecto ASVS también requiere estándares para hacer un reporte después de ejecutar un análisis de seguridad de la aplicación; la siguiente figura muestra las secciones generales que dicho reporte debería contener: Figura 15 Contenido del reporte de la revisión de seguridad (OWASP, 2009) 1.1.10 OWASP Testing Guide 35 El Proyecto OWASP Testing Guide es un marco de desarrollo de pruebas a partir del cual los profesionales puedan crear su propio programa de pruebas. Tiene como principal objetivo hacer pruebas de penetración y pruebas integradas de seguridad dentro del ciclo de desarrollo del software. El proyecto define los pre-requisitos para realizar pruebas de aplicaciones web: el alcance de las pruebas, los principios de una prueba exitosa, y las técnicas de prueba. Del mismo modo presenta el Marco de Pruebas y explica las técnicas y tareas en relación a las varias fases del ciclo de vida de desarrollo de software. Finalmente describe como realizar pruebas para vulnerabilidades específicas a través de inspección de código y pruebas de intrusión. 1.1.11 OWASP Software Assurance Maturity Model (SAMM) El SAMM es un marco de referencia para ayudar a las organizaciones a implementar una estrategia para tener seguridad en el software de acuerdo a los riesgos específicos de la organización. La aplicación de SAMM ayudaría a las organizaciones a (Chandra & Deleersnyder, 2012): Evaluar las prácticas existentes de seguridad en el software. Construir un programa de desarrollo de software seguro con iteraciones bien definidas. Demostrar mejoras concretas con base al programa definido. El SAMM fue construido pensando en la flexibilidad de su implementación, ya que pudiera ser implementado en empresas grandes, medianas o pequeñas; desde un área o departamento, hasta toda la organización. La base del modelo son las diferentes etapas del ciclo de desarrollo de software con controles de seguridad añadidos a cada fase, de ésa forma, se puede construir el 36 programa para asegurar que el software se desarrolle de manera segura. SAMM define 4 funciones de negocio, y cada una tiene prácticas de seguridad definidas. El SAMM cuenta con cuatro niveles de madurez definido por métricas y controles implementados en la organización, donde 0 es el nivel más bajo y 3 el nivel más alto de madurez para cada una de las prácticas de seguridad. La siguiente figura muestra las 12 prácticas de seguridad y sus respectivas funciones de negocio definidas por SAMM: Figura 16 Modelo SAMM (Chandra & Deleersnyder, 2012) Método El tipo de investigación será Descriptiva (Hernández Sampieri, Fernández Collado, & Baptista Lucio, 1991); ya que trataremos primero de describir e identificar cómo se realizan los ataques de inyección de SQL; posteriormente describir los controles OWASP que se pretenden implementar. Por último, y con base a las variables de investigación, medir la efectividad de los controles OWASP para mitigar los ataques de inyección de SQL. Por otro lado, el diseño del experimento será cuasi experimental (Hernández Sampieri, Fernández Collado, & Baptista Lucio, 1991); lo anterior debido a que no nos será posible tener una aplicación web con la misma arquitectura que otra, y tal vez las tecnologías utilizadas para el desarrollo de las aplicaciones, así como la infraestructura en 37 la que se encuentran, será diferente. Del mismo modo, ninguna organización es igual a otra aun estando dentro de una misma industria. El diseño del experimento será de preprueba-postprueba y grupos intactos (Hernández Sampieri, Fernández Collado, & Baptista Lucio, 1991). Éste diseño es el que más se apega a la validación de las hipótesis planteadas; ya que nos permitirá hacer las pruebas de penetración a las aplicaciones objetivo, y a evaluar el nivel de madurez de la organización, antes de la aplicación de técnicas OWASP; obtener resultados, ejecutar de nuevo las pruebas de penetración, evaluar de nuevo el nivel de madurez de la organización, y de ésta manera comparar los resultados obtenidos antes y después de la implementación de técnicas OWASP. El diseño nos permitirá aceptar o rechazar las hipótesis planteadas en el Capítulo uno del presente estudio de caso. Desde el punto de vista técnico, estaremos realizando las evaluaciones de las vulnerabilidades de inyección de SQL con base al nivel cuatro de evaluación de (OWASP, 2009), cuyo alcance es todo el código que fue modificado o desarrollado para crear la aplicación incluyendo librerías y servicios invocados; en términos de la aplicación web, esto implica evaluar toda la aplicación. Los requerimientos de verificación los estaremos acotando al nivel V5 (Input Validation Verification Requirements) ya que es el que se apega a la verificación de inyección de SQL; los puntos de verificación V5 correspondientes a un nivel de evaluación cuatro se detallan en la siguiente tabla (OWASP, 2009): Level 4 Level 3 Level 2B Level 2A Level 1B Verification Requirement Level 1A Tabla 4 OWASP ASVS Requerimientos de Validación de Captura (V5) (OWASP, 2009) 38 V5.1 Verify that the runtime environment is not susceptible to buffer overflows, or that security controls prevent buffer overflows. V5.2 Verify that a positive validation pattern is defined and applied to all input. V5.3 Verify that all input validation failures result in input rejection or input sanitization. V5.4 Verify that a character set, such as UTF-8, is specified for all sources of input. V5.5 Verify that all input validation is performed on the server side. V5.6 Verify that a single input validation control is used by the application for each type of data that is accepted. V5.7 Verify that all input validation failures are logged. V5.8 Verify that all input data is canonicalized for all downstream decoders or interpreters prior to validation. V5.9 Verify that all input validation controls are not affected by any malicious code. Utilizaremos diversas herramientas para automatizar la identificación y explotación de la vulnerabilidad de inyección de SQL; dado el costo de las soluciones comerciales, nos enfocaremos a utilizar soluciones de software libre como SQLiX, SQLmap, SQL Ninja, ZAP. Por otro lado, evaluaremos las prácticas de desarrollo de software de la organización con base al cuestionario de (Chandra & Deleersnyder, 2012), definiremos el nivel de madurez descrito por SAMM y entregaremos las recomendaciones a la organización. Se espera que la organización trabaje en esos puntos, para después de un tiempo determinado con la organización objetivo, regresar y aplicar el mismo cuestionario, verificando evidencias de la implementación de las recomendaciones, y revaluar el nivel de madurez de (Chandra & Deleersnyder, 2012). 39 Capítulo III CASOS DE ESTUDIO “Los atacantes se adaptan constantemente, los defensores también necesitan adaptarse de manera continua.” (Harkins, 2013) 40 Capítulo IV CONCLUSIONES “Los perdedores ignoran las tendencias. Los ganadores sobreviven por ser capaces de predecir, prevenir, detectar y responder” (Harkins, 2013) 41 Resultados Discusión Conclusiones Trabajo Futuro 42 Capítulo V REFERENCIAS 43 Assumpcao Guimaraes, B., & Stampar, M. (2012). SQLmap. Recuperado el Abril de 2013, de SQLmap: http://sqlmap.org/ Acunetix Ltd. (s.f.). Acunetix. Recuperado el Abril de 2013, de Acunetix: http://www.acunetix.com/vulnerability-scanner/wvsbrochure.pdf Carreon Mendoza, M. (2009). Esquema de Seguridad para el desarrollo de Aplicaciones Web para CFE. Instituo Politécnico Nacional. Chandra, P., & Deleersnyder, S. (2012). OWASP Software Assurance Maturity Model. Creative Commons (CC) Attribution-Share Alike. Clarke, J. (2012). SQL Injection Attacks and Defense, 2nd Edition. Syngress. CWE/SANS. (September de 2011). 2011 CWE/SANS Top 25 Most Dangerous Software Errors. Recuperado el May de 2013, de 2011 CWE/SANS Top 25 Most Dangerous Software Errors: http://cwe.mitre.org/top25/ Dharam, R., & Shiva, S. (2012). Runtime Monitoring Technique to handle Tautology based SQL Injection Attacks. International Journal of Cyber-Security and Digital Forensics (IJCSDF) 1(3). Diario Oficial de la Federación. (2010). DECRETO por el que se expide la Ley Federal de Protección de Datos Personales en Posesión de los Particulares. Diario Oficial de la Federación, 11-12. EC-Council. (2011). Ethical Hacking and Countermeasures v6.1. EC-Council. Harkins, M. (2013). Managing Risk and Information Security Protect to Enable. Apress Media. Harris, S. (2008). All in One CISSP Exam Guide. McGraw-Hill. Hernández Sampieri, R., Fernández Collado, C., & Baptista Lucio, P. (1991). Metodología de la investigación. Naucalpan de Juárez, Edo. de México: McGRAW - HILL INTERAMERICANA DE MÉXICO, S.A. de C.V. Hewlett-Packard. (2012). HP 2012 Cyber Risk Report. Holm, H., Ekstedt, M., & Sommestad, T. (2013). Effort estimates on web application vulnerability discovery. 46th Hawaii International Conference on System Sciences (pág. 1). Hawaii: IEEE. HP Web Inspect. (2013). Data Sheet. Recuperado el Abril de 2013, de HP: http://h20195.www2.hp.com/V2/GetDocument.aspx?docname=4AA15363ENW&&cc=us&lc=en icesurfer, & nico. (2012). SQL Ninja. Recuperado el Abril de 2013, de SQL Ninja: http://sqlninja.sourceforge.net/ Levin, C. (2010). Opening Statement of Senator Carl Levin, Senate Armed Services Committee Hearing on Nominations of Vice Admiral James A. Winnefeld and Lieutenant General Keith B. Alexander. McAfee Foundstone. (s.f.). McAfee. Recuperado el Abril de 2013, de WSDigger v1.0: http://www.mcafee.com/mx/downloads/free-tools/wsdigger.aspx McAfee Inc. (2012). Scanning Web Applications for Vulnerabilities. Recuperado el Abril de 2013, de McAfee: http://www.mcafee.com/us/resources/solution-briefs/sb-scanweb-apps-vulnerabilities.pdf Meucci, M., Keary, E., & Cuthbert, D. (2008). OWASP Testing Guide. Creative Commons (CC) Attribution Share-Alike. Murach, J., & Steelman, A. (2008). Java Servlets and JSP. Murach Editions. 44 OWASP. (2009). OWASP Application Security Verification Standard (ASVS). Creative Commons (CC) Attribution Share-Alike. OWASP. (2011). OWASP Enterprise Security API (ESAPI). Recuperado el Abril de 2013, de OWASP Enterprise Security API (ESAPI): https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API OWASP. (2011). OWASP Risk Rating Methology. Recuperado el Abril de 2013, de OWASP Risk Rating Methology: http://www.owasp.org/idex.php/OWASP_Risk_Rating_Methodology OWASP. (2011). SQLiX Project. Recuperado el Abril de 2013, de OWASP: https://www.owasp.org/index.php/Category:OWASP_SQLiX_Project OWASP. (2013). OWASP ZAP Proxy. Recuperado el Abril de 2013, de OWASP ZAP Proxy: http://code.google.com/p/zaproxy/ Parnell, B.-A. (2011). Cyber crime now bigger than the drugs trade. The Register. Ponemon Institute. (2012). 2012 Cost of Cyber Crime Study:. Ponemon Institute LLC. Puppy, R. F. (24 de Diciembre de 1998). Phrack. Recuperado el Abril de 2013, de NT Web Technology Vulnerabilities: http://www.phrack.com/issues.html?issue=54&id=8#article Ramirez Lopez, J. (2009). Desarrollo de un Esquema de Análisis de Vulnerabilidades y Pruebas de Penetración en Sistemas Operativos para una Organización de la Administración Pública Federal. Insituto Politécnico Nacional. Rodriguez Argueta, M. (2011). Análisis de la Seguridad en Sitios Web. Instituto Politécnico Nacional. Saenz Gonzalez, M. (2009). Diseño de un Laboratorio de Análisis de Vulnerabilidades y Pruebas de Penetración en Redes de Cómputo. Instituto Politécnico Nacional. SC Magazine. (2007). SC Magazine. Recuperado el Abril de 2013, de SC Magazine for IT Security Professionals: http://www.scmagazine.com/reviews/section/107/ Scholt, T., Balzarotti, D., & Kirda, E. (2012). Have things changed now? An Empirical Study on Input Validation Vulnerabilities in Web Applications. SoftPile. (2008). AntiMalware Tools. Recuperado el Abril de 2013, de Softpile: http://falcove-web-vulnerability-scanner.softpile.com/ Tatum, M. (Enero de 2013). What Is a Cyberattack? Recuperado el Marzo de 2013, de Wise Geek: http://www.wisegeek.com/what-is-a-cyberattack.htm The Open Source Vulnerability Database. (2012). The Open Source Vulnerability Database. Recuperado el Marzo 2013 de 2013, de The Open Source Vulnerability Database: http://www.osvdb.org van der Stock, A. (2005). Una Guía para Construir Aplicaciones y Servicios Web Seguros. Free Software Foundation. Watson, C., & Coates, M. (2010). OWASP AppSensor. Cerative Common (CC) Share-A Like. Williams, J., & Wichers, D. (2013). OWASP Top Ten - 2013. Creative Commons (CC) Attribution Share-Alike. 45