Exploración de los problemas particulares de seguridad que presentan las aplicaciones web, y enumeración de los distintos tipos de ataques o amenazas ...
Descripción: El presente trabajo tiene como principal objetivo el análisis de vulnerabilidades en diferentes Aplicaciones Web y su solución.
Descripción: Desarrollo de Aplicaciones Móviles Web
Descripción completa
Descripción completa
Desarrollo de aplicaciones web
Libro PFDDescripción completa
examen
Este documento es un trabajo sobre Android realizado por tres alumnos para la asignatura de Programación Orientada a Objetos.
Descripción: Especializacion en Seguridad Informatica
Prueba de Aplicaciones Web-pressmanDescripción completa
1. Explique para qué es y para qué sirve un lenguaje de programación. 2. Realice un cuadro comparativo de las ventajas y desventajas que ofrecen las aplicaciones web en relación con las apl…Descripción completa
Descripción: PHP y MySQL Tecnologia Para El Desarrollo de Aplicaciones Web
Informatica
protocolDescripción completa
Descripción completa
Descripción completa
Universidad Católica del Uruguay Facultad de Ingeniería y Tecnologías Ingeniería en Informática
Trabajo Obligatorio
GESTION III
SEGURIDAD EN DESARROLLO DE APLICACIONES WEB
Deybi Alvez Sebastián López Irene Miñón
18 de octubre de 2006
Trabajo Obligatorio de Gestión III
Seguridad en Desarrollo de Aplicaciones Web
2
Trabajo Obligatorio de Gestión III
Seguridad en Desarrollo de Aplicaciones Web
Contenido Contenido.......................................... Contenido.......................... ................................. ................................. ................................ ................................. ................................. ............................3 ............3 Introducción ................ ................................ ................................ ................................. ................................. ................................ ................................................ ................................ ..5 Riesgos inherentes al entorno Web............ Web............................. ................................. ................................ ................................. ...................................6 ..................6 Mitos sobre la seguridad web............. web.............................. ................................. ................................ ................................. ........................................7 .......................7 Amenazas comunes........... comunes............................ ................................. ................................ ................................. ...........................................................8 ..........................................8 SQL Injection...... Injection....................... ................................. ................................ ................................. ................................. ................................. .....................................10 ....................10 Manipulación de parámetros......... parámetros......................... ................................ ................................. ................................. .......................................... .......................... .11 Manipulación de campos ocultos........ ocultos......................... ................................. ................................. ................................. .................................11 .................11 Manipulación de URL......... URL......................... ................................. ................................. ................................. ................................. ................................ ..................12 ..12 Ejecución de comandos ............... ................................ ................................. ................................. ................................. ................................. ..........................12 .........12 Cross Site Scripting (XSS) ................. ................................. ................................ ................................. .................................................... ................................... .13 Tipo 1 – XSS local......... local......................... ................................. ................................. ................................. .......................................................14 ......................................14 Tipo 2 – XSS reflejado ............... ............................... ................................ ................................. ................................. ..........................................14 ..........................14 Tipo 3 – XSS persistente..... persistente..................... ................................. ................................. ................................. .................................................14 ................................14 Puntos importantes en una auditoria de aplicaciones Web ........................................ ........................................................ ..................16 ..16 ............................... ............... ................................. ................................. ................................ ................................. ................................. ................................. .............................16 ............16 Fase de Requerimientos. Requerimientos................. ................................. ................................. ................................ ................................. ......................................16 .....................16 Controles de autenticación..... autenticación...................... ................................. ................................. ................................. ................................. ............................16 ...........16 Control de caracteres especiales........ especiales........................ ................................ ................................. ................................. ..................................16 ..................16 Control de Logs.............. Logs.............................. ................................. ................................. ................................ .................................................. .................................. ....17 Fase de Testing...... Testing...................... ................................. ................................. ................................. ................................. .............................................17 .............................17 Documentación...................... Documentación..... ................................. ................................. ................................. ................................ ................................. ...............................17 ..............17 Mensajes de error.......... error........................... ................................. ................................ ................................. ................................. ......................................17 ......................17 Control de tags maliciosos...... maliciosos...................... ................................. ................................. ................................. ................................. .............................17 .............17 Encriptación (SSL)....... (SSL)....................... ................................ ................................. ................................. ................................. .........................................17 ........................17 Logins de aplicación....... aplicación....................... ................................. ................................. ................................ ......................................................18 ......................................18 ASP/JSP................ ASP/JSP ................................ ................................ ................................. ................................. ................................ ...............................................18 ...............................18 Controles específicos de Java............. Java.............................. ................................. ................................ .................................................18 .................................18 Controles específicos de Perl.......... Perl.......................... ................................ ................................. ......................................................18 .....................................18 Conclusiones......................... Conclusiones......... ................................. ................................. ................................. ................................. .................................................... .................................... .19 Bibliografía................... Bibliografía.. ................................. ................................. ................................. ................................ ................................. ................................. ...............................20 ...............20
3
Trabajo Obligatorio de Gestión III
Seguridad en Desarrollo de Aplicaciones Web
4
Trabajo Obligatorio de Gestión III
Seguridad en Desarrollo de Aplicaciones Web
Introducción La seguridad, en informática como en otras áreas, se basa en la protección de activos. Estos activos pueden ser elementos tan tangibles como un servidor o una base de datos, o pueden ser la reputación de una empresa. Generalmente podemos evaluar la seguridad de un activo en base base a tres tres aspect aspectos os princi principal pales es que no necesi necesitan tan explic explicaci ación: ón: integ integrid ridad, ad, dispon disponibi ibilid lidad, ad, confidencialidad. Estos Estos tres tres aspect aspectos os a su vez dependen dependen de otros otros tres tres elemen elementos tos principa principales les que engloban engloban prácticamente todos los distintos controles que se pueden establecer en un sistema informático:
Autenticación: Autenticación: los clientes de nuestras aplicaciones o servicios deben ser identificados de forma única, sean usuarios finales, otros servicios o computadoras externas. Autorización: Autorización: no solo es necesario saber quienes acceden a nuestros activos, también es necesario establecer que es lo que pueden hacer con ellos. Un nivel de autorización dado determina que tipo de operaciones o transacciones puede efectuar un cliente dado sobre un recurso dado.
Registro Registro y Auditoria Auditoria:: luego de efectuada una operación, es importante que esta sea regist registrad rada a adecua adecuadam dament ente, e, en partic particula ularr es esenci esencial al si querem queremos os evitar evitar el repudi repudio o de transacciones efectuada por un cliente.
Todos estos conceptos son especialmente válidos en el entorno de Internet, y particularmente importantes dado el crecimiento explosivo de los servicios y aplicaciones accesibles a través de Internet. Si bien cuando se habla de la seguridad de aplicaciones web se deben considerar no sólo sólo las amenaz amenazas as extern externas as a la compañ compañía ía sino sino tambié también n las intern internas as (admin (administ istrad radore ores s malint malintenc encion ionado ados, s, usuari usuarios os que provoc provocan an accide accidente ntes, s, etc), etc), en el presen presente te trabaj trabajo o nos enfocaremos enfocaremos principalme principalmente nte en las externas, por ser (generalmente (generalmente)) las más peligrosas peligrosas e impredecibles. Es sabido por otro lado que las aplicaciones más robustas y resistentes a ataques son aquellas en las cuales las cuestiones de seguridad fueron consideradas desde las primeras etapas del desarrollo. En las próximas secciones exploraremos los problemas particulares de seguridad que presentan las aplicaciones web, y enumeraremos los distintos tipos de ataques o amenazas externas a las que se puede enfrentar. Desarrollaremos algunos de ellos, en particular concentrándonos en aquellos ataques que burlan lo que la aplicación espera recibir por entrada del usuario; mostraremos cómo se los puede evitar o mitigar, especialmente desde la p erspectiva del desarrollo.
Finalmente Finalmente,, a partir partir de los elementos elementos vistos y otros otros adicionales adicionales elaboraremos elaboraremos una lista lista de elementos de seguridad que deben ser tenidos en cuenta tanto por desarrolladores, diseñadores y administradores de la aplicación, como por una eventual auditoría de sistemas.
5
Trabajo Obligatorio de Gestión III
Seguridad en Desarrollo de Aplicaciones Web
Riesgos inherentes al entorno Web Se ha comprobado que en los últimos años, 75% o más de los ataques electrónicos fueron a nivel de aplicación (y no a nivel de host o de red).
•
Blancos atractivos.
Todo tipo de transacciones se realizan actualmente en la web, y cada vez en mayor proporción. proporción. Detalles Detalles de cuentas cuentas bancarias, bancarias, tarjetas tarjetas de crédito crédito y todo tipo de informació información n confidencial y de valor circulan en enormes cantidades y continuamente. Es por ende lógico que la mayoría de los esfuerzos de hackers y demás atacantes se centre en vulnerar estas aplicaciones. •
Presiones de negocio La variedad y complejidad de los requerimientos de usuarios finales continúa creciendo, y con ellos aumenta la complejidad de las aplicaciones, la cantidad de funcionalidades y fases de testeo. Esto sumado al incremento en la competencia y en la necesidad de supera superarl rla a en el time-t time-to-m o-mark arket, et, impli implican can sacrif sacrifici icios os import important antes es en los aspect aspectos os nofunc funcio iona nale les s de la apli aplica caci ción ón y espe especí cífi fica came ment nte e en los los aspe aspect ctos os de segu seguri rida dad. d. Especialmente cuando no existe una conciencia de seguridad a nivel corporativo, se tiende a generar una alta presión para terminar el trabajo sin considerar suficientemente las posibles vulnerabilidades. •
Debilidades de HTTP.
Las aplicaciones web están en parte definidas definidas por su uso del protocolo HTTP como como medio de comunicación entre cliente y servidor. Este protocolo: o Es simple y basado en ASCII ASCII - no se requiere gran esfuerzo para generar generar pedidos y descifrar el contenido de las respuestas. o Utiliza un puerto TCP bien conocido – de poco sirve un firewall para proteger una aplicación si tiene que admitir el tráfico a través del puerto 80 o No mantiene por sí mismo el estado de la sesión – un atacante no tiene que emular mecani mecanismo smos s de manteni mantenimi mient ento o de sesión sesión,, basta basta con emiti emitirr un reques requestt para para lograr lograr el cometi cometido. do. Mecani Mecanismo smos s como como el uso de cookie cookies s permit permiten en simula simularr una sesión sesión virtual virtual intercambiando información adicional en cada request/response, pero no son efectivas si no se las implementa bien, e introducen problemas adicionales de seguridad y privacidad. Existen Existen muchas muchas excepcion excepciones es y variantes variantes adicionales adicionales a estos elementos; elementos; en particular particular se utiliza utiliza ampliament ampliamente e SSL como protocolo protocolo de encriptació encriptación n a nivel de transporte transporte en las comunicaciones cliente-servidor. Como explicaremos a continuación, esto está lejos de resolver todas las vulnerabilidades de la aplicación.
6
Trabajo Obligatorio de Gestión III
Seguridad en Desarrollo de Aplicaciones Web
Mitos sobre la seguridad web •
•
•
•
El usuario solamente enviará entradas esperadas - HTML admite el uso de tags que manipulan la entradas a la ap licación, por ejemplo si la aplicación utiliza campos ocultos para enviar información sensible estos pueden ser fácilmente manipulados desde el cliente. La vali valida daci ción ón se pued puede e real realiz izar arse se únic únicam amen ente te del del lado lado del clie client nte e con con JavaScript - si no se efectúa niguna validación del lado del servidor, cualquier atacante que evite esta validación validación (para nada difícil de lograr) lograr) tendrá acceso total a toda la aplicación.
El uso de firewalls es suficiente - como explicamos anteriormente, si el firewall tiene que habilitar los puertos 80 y/o 443 para que la aplicación sea accesible al exterior, no podrá hacer nada para detectar entradas maliciosas del cliente, y por supuesto no es protección contra ataques internos. El uso uso de SS SSL L es una una solu soluci ción ón sufic suficie ient nte e - SSL SSL simpl simplem emen ente te cubr cubre e el reques request/ t/res respon ponse se HTTP HTTP dificu dificult ltand ando o la interc intercepc epcion ion del tráfic tráfico o entre entre client cliente e y servidor, pero no agrega seguridad al servidor ni evita el envío de código malicioso desde el cliente.
7
Seguridad en Desarrollo de Aplicaciones Web
Trabajo Obligatorio de Gestión III
Amenazas comunes Los múltiples ataques externos a los que puede estar expuesto un sitio web son usualmente clasificados en 6 categorías principales. Indicaremos cada una y los tipos de ataques más típicos que incluyen, y a continuación describiremos en mayor detalle cuatro de ellos. •
Autenticación: son las que explotan el método de validación de la identidad de
un usuario, servicio o aplicación o Fuerza Bruta o Autenticación insuficiente o Débil validación de recuperación de Password •
Autorización: explotan el mecanismo de un sitio web de determinar si un usuario
o servicio tiene los permisos necesarios para ejecutar una acción. o Predicción de Credenciales o Sesión o Autorización insuficiente o Expiración de Sesión insuficiente o Fijado de Sesión
Ataques Lógicos : explotan la lógica de la aplicación (el flujo procedural utilizado por la aplicación para efectuar cierta acción. o Abuso de funcionalidad o Denial of Service o Insuficiente Anti-Automatismo Anti-Automatismo o Insuficiente validación de procesos o Manipulación de entradas (URL, campos)
•
•
Ataques al cliente o o
•
:
atacan al usuario de la aplicación.
Content Spoofing Cross-Site Scripting
Ejecución de comandos : ataques diseñados para ejecutar comandos remotos
en el servidor. o Buffer Overflow o Format String o LDAP Injection o Ejecucuón de Comandos (OS Commanding) o SQL Injection o SSI Injection o XPath Injection •
Robo de Información : ataques que apuntan a adquirir información específica
sobre el sitio web. o Indexado de directorio o Caminos transversales o Predicción de ubicación de recursos o Escape de información
8
Trabajo Obligatorio de Gestión III
Seguridad en Desarrollo de Aplicaciones Web
Los ataques que vamos a describir son SQL Injection, Manipulación de entradas, Ejecución de Comandos, y Cross Site Scripting
9
Trabajo Obligatorio de Gestión III
Seguridad en Desarrollo de Aplicaciones Web
SQL Injection SQL Injection es una vulnerabilidad que afecta aplicaciones a nivel de base de datos. Dicha vulnerabilidad consiste en enviar instrucciones SQL adicionales a partir de parámetros entrada ingresados por el usuario. Al "inyectar" "inyectar" el código código SQL malicioso dentro de estos campos, el código “invasor” se ejecuta dentro del código SQL propio de la aplicación para alterar su funcionamiento normal, de acuerdo con el propósito del atacante. SQL Injection es un problema de seguridad que debe ser tomado en cuenta por el programador para prevenirlo. La vulnerabilidad ocurre cuando la aplicación ejecuta una sentencia SQL que utiliza el valor de campos de entrada sin validarlos correctamente. Permiten al atacante saltar restricciones restricciones de acceso, elevar privilegios del del usuario, extracción de información de la base de datos, ejecución de comandos dentro del servidor. Incluso es posible destruir parte la base de datos de la aplicación (por ejemplo insertando una sentencia Drop Table).
Ejemplo Consideremos un simple form de autenticación de usuario contra base de datos
Username: Administrador Password: xxxxxxx El form anterior ejecuta la siguiente consulta SQL:
Select idusuario from tabla_usuarios Where nombre_usuario=‘$usuario’ And clave=‘$clave’ Si en lugar del password esperado se ingresa lo siguiente
Username: Administrador Password: ’ or ‘1’=‘1 La consulta que realmente se ejecuta es la siguiente:
Select idusuario from tabla_usuarios Where nombre_usuario=‘Administrador’ And clave=‘’ or ‘1’=‘1’;
Contramedidas Los riesgos de SQL Injection pueden superarse relativamente fácil con cambios de programación simples, que sin embargo requieren considerable disciplina de los programadores para aplicar los métodos siguientes para cada procedimiento y función accesibles de la red.
10
Trabajo Obligatorio de Gestión III
Seguridad en Desarrollo de Aplicaciones Web
Variables de alcance: La más poderosa protección contra el SQL Injection es utilizar solamente variables de alcance para imposibilitar la concatenación de instrucciones SQL donde puedan aplicarse variables en las instrucciones anexadas. Validación de la entrada: es necesaria una validación fuerte en lado de servidor para entrada de usuario, validación de datos filtrar la entrada del usuario de caracteres SQL, verificar tanto el tamaño como el tipo de los datos y sintaxis de las entradas de usuario. Este punto se aplica a muchos ataques similares, en particular lo reafirmaremos para los próximos ataques analizados. Mensajes de error: Los mensajes de error a menudo revelan demasiada información que puede ser útil al atacante (nombres de tablas, campos, vistas); por lo tanto no se deberá exponer al usuario final los mensajes de error devueltos por el gestor gestor de la base de datos. Los mensaj mensajes es de errore errores s de la base base de datos datos deberí deberían an ser notifica notificados dos solame solamente nte a los administradores de la aplicación.
Manipulación de parámetros Es un conjunto de técnicas que atacan la lògica de negocio de la aplicación, tomando ventaja del uso de campos ocultos o fijos para la transferencia de información sensible entre browser y servidor. En particular, tags ocultos en un form, cookies o parámetros anexados a la URL son fácilmente modificables por un atacante. Vamos a analizar dos tipos en particular: manipulación de campos ocultos y manipulación de URL
Manipulación de campos ocultos Cualquiera de los valores que se almacenan en los campos de un form pueden ser manipulados por un atac atacan ante te.. En parti particu cula larr los los campo campos s ocul oculto tos s son son usual usualme ment nte e atra atract ctiv ivos os para para su manipulaci manipulación ón ya que muchos muchos desarroll desarrolladores adores los utilizan utilizan para informació información n confidencia confidenciall de estatus de algún objeto sobre el que se está trabajando. La manipulación de estos campos es tan simple como salvar la página, editar el valor de estos campos en su código HTML y recargarla en el browser. Ejemplo Un form de orden de productos incluye el siguiente campo o culto
11
Trabajo Obligatorio de Gestión III
Seguridad en Desarrollo de Aplicaciones Web
Basta con modificar este campo para que, a menos que exista una validación posterior del lado del servidor, la aplicación cobre por el artículo el precio dispuesto por el usuario.
Manipulación de URL Los forms HTML envían sus resultados usando uno de d os métodos posibles: GET o POST. Si el método es GET, todos los parámetros del form y sus valores correspondientes aparecen en cadena de búsqueda del siguiente URL que el usuario ve. Esta cadena puede ser fácilmente manipulable
Ejemplo 1 Un sitio web permite a un usuario autenticado seleccionar una de sus cuentas a partir de un combo, y debitar un monto fijo de esa cuenta. Cuando se presiona Submit en el browser, se solicita la siguiente URL:
http://www.mydomain.com/example.asp? accountnumber=12345&debitamount=1 Un usua usuari rio o mali malici cios oso o pued puede e modi modifi ficar car los los parám parámet etro ros s de la URL URL (acc (accou ount ntnu numb mber er and and debitamount), para debitar otra cuenta:
http://www.mydomain.com/example.asp? accountnumber=67891&creditamount=9999 Existen otros parámetros URL que podrian ser modificados, tales como atributos y módulos internos. Los atributos son parámetros únicos que caracterizan el comportamiento de la página que se envía. Ejemplo 2 Una aplica aplicació ción n web para para compar comparti tirr conten contenido idos s permit permite e únicam únicament ente e al creado creadorr del mismo mismo modificarlo, y chequea si el usuario que accede una entrada es el autor o no. Un usuario normal solicitaría el siguiente link:
http://www.mydomain.com/getpage.asp?id=77492&mode=readonly Un usuario malicioso puede modificar el parámetro mode a readwrite para obtener permisos indebidos sobre el contenido.
Ejecución de comandos
12
Trabajo Obligatorio de Gestión III
Seguridad en Desarrollo de Aplicaciones Web
Las técnicas de manipulación de entrada vistas son sólo algunas que llevan a la posibilidad de ejecutar remotamente comandos del Sistema Operativo de la víctima. Determinados caracteres especiales pueden ser interpretados por scripts de validación poco seguro seguros s como como una instru instrucci cción ón al SO de espera esperarr un comando comando arbitrar arbitrario io a contin continuac uación ión.. En partic particula ular, r, el punto punto y coma coma o la barra | son en Unix Unix caracte caracteres res que permi permiten ten encade encadenar nar comandos. Por tanto incluir en el campo de entrada un ; seguido del comando que se desea ejecutar puede tener éxito si el mecanismo de validación no es lo bastante robusto.
Ejemplo 1. La aplicació aplicación n recibe recibe un número número de 8 dígitos dígitos cuando cuando el usuario usuario selecc selecciona iona una una opción opción de menú. El form HTML llama a un script escrito en comandos de Shell pasándole por parámetro este número. El código HTML desplegado por el browser tiene esta forma: