GUÍA DE BUENAS PRÁCTICAS PARA EL DESARROLLO DE APLICACIONESWEB SEGURAS, ORIENTADA A LA FORMACIÓN DE PROGRAMADORES LILIANA CÚJAR BAHAMÓN CÓDIGO 21404870 UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BÁSICAS TECNOLOGÍA E INGENIERÍA ESPECIALIZACIÓN EN SEGURIDAD INFORMÁTICA MEDELLÍN 2016 GUÍA DE BUENAS PRÁCTICAS PARA EL DESARROLLO DE APLICACIONES WEB SEGURAS, ORIENTADAS A LA FORMACIÓN DE PROGRAMADORES LILIANA CÚJAR BAHAMÓN CÓDIGO 21404870 Proyecto de Grado para optar al título de Especialista en Seguridad Informática Director de Cuso: Ing. Ramses Ríos Lampriello UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BÁSICAS TECNOLOGÍA E INGENIERÍA ESPECIALIZACIÓN EN SEGURIDAD INFORMÁTICA MEDELLÍN 2016 2 Nota de aceptación Aprobado por el Comité de Grado en cumplimiento con los requisitos exigidos por la Universidad Nacional Abierta y a Distancia UNAD para optar el título de Especialista en Seguridad Informática. ______________________________ Jurado ______________________________ Jurado Medellín, Abril 16 de 2016 3 AGRADECIMIENTOS Dedicado a Dios quien es mi guía y protector, a mi esposo, a mis hijas con todo mi amor por su apoyo y por haber soportado mi ausencia durante este tiempo y a mis compañeros de trabajo quienes me alentaron a seguir adelante. 4 TABLA DE CONTENIDO Pág. GLOSARIO RESUMEN INTRODUCCIÓN 1. 1.1. 1.2. 1.3. 1.4. 1.5. 9 10 11 BUENAS PRÁCTICAS PARA EL DESARROLLO DE UN PROYECTO INFORMÁTICO ¿QUÉ SON BUENAS PRÁCTICAS? ¿PORQUE SE LES LLAMAN BUENAS PRÁCTICAS? ¿QUE HACE QUE UNA PRÁCTICA SEA MAL DESARROLLADA? ¿QUÉ ES UN PROYECTO INFORMÁTICO? TIPS DE BUENAS PRÁCTICAS PARA EL DESARROLLO DE UN PROYECTO INFORMÁTICO 13 13 14 14 14 15 2. 2.1. 2.2. 2.2.1. 2.2.2. 2.2.3. 2.3. LA SEGURIDAD EN INFORMÁTICA RIESGOS QUE PUEDEN AFECTAR LA WEB ¿QUE ES CRIPTOGRAFÍA? ¿Qué uso tiene la criptografía? ¿Qué clases de tecnologías criptográficas existen? Servicios criptográficos disponibles IMPORTANCIA DE LAS COMPAÑÌAS ESPECIALIZADAS EN LA SEGURIDAD DE LAS APLICACIONES WEB 18 19 20 21 22 23 3. 3.1. 3.1.1. APLICACIONES WEB Y SEGURIDAD CICLO DE VIDA N EL DESARROLLO DE APLICACIONES WEB Etapa de levantamiento de necesidades u oportunidades o de requisitos Etapa de análisis Etapa de diseño Etapa de codificación Etapa de pruebas 26 26 28 Etapa de instalación Etapa de mantenimiento ARQUITECTURA PARA EL DESARROLLO DE APLICACIONES WEB. 28 28 3.1.2. 3.1.3. 3.1.4. 3.1.5. 3.1.6. 3.1.7. 3.2. 5 24 28 28 28 28 29 3.3. 3.3.1 3.4. 3.4.1. 3.4.2. 3.5. 3.6. 3.6.1. 3.7. 3.8. 4. 4.1. 4.1.1. 4.1.2. 4.1.3. 4.2. 4.2.1. 4.2.2. 4.2.3. 4.3. 4.3.1. 4.3.2. 4.3.3. 4.4. 4.4.1. 4.4.1.1. 4.4.1.2. 4.4.1.3. 4.4.1.4. 4.4.1.5. 4.4.1.6. 4.4.1.7. 4.4.1.8. 4.4.1.9. QUE ES UN WEB HOSTING O ALOJAMIENTO WEB Qué se debe tener en cuenta para escoger un buen Hosting QUE ES UN SERVIDOR WEB Qué clase de servidores Web existen ¿Qué diferencia existe entre los gratuitos y los que tienen costo? QUE ES UN DOMINIO BUENAS PRÁCTICAS DE CODIFICACIÓN – ARQUITECTURA PARA EL DESARROLLO DE APLICACIONES WEB Recomendaciones que se debe tener en cuenta para la seguridad en el diseño de una aplicación web ELEMENTOS Y HERRRAMIENTAS QUE PODRÍA SER ÚTILES EN LA CREACIÓN DE UNA APLICACIÓN WEB SEGURIDAD EN EL CICLO DE VIDA DE UNA APLICACIÓN WEB BUENAS PRÁCTICAS PARA LA CONSTRUCCIÓN DE APLICACIONES WEB SEGURAS ETAPA DE LEVANTAMIENTO DE NECESIDADES U OPORTUNIDADES O DE REQUISITOS Pasos a seguir Vulnerabilidades encontradas en esta etapa Prevención ETAPA DE ANÁLSIS Pasos a seguir Vulnerabilidades encontradas en esta etapa Prevención ETAPA DE DISEÑO Pasos a seguir Vulnerabilidades encontradas en esta etapa Prevención ETAPA DE CODIFICACIÓN VULNERABILIDADES TOP 1 – OWASP A1: inyección A2: Pérdida de autenticación y gestión de sesiones A3: secuencia de comandos en sitios cruzados (xss) o cross site scripting (XSS) A4 – referencia directa insegura a objetos A5 – Configuración de seguridad incorrecta A6 – Exposición de datos sensibles A7 – Ausencia de control de acceso a funciones A8 - Falsificación de peticiones en sitios cruzados (CSRF) A9 - Utilización de componentes con vulnerabilidades conocida 6 29 30 31 31 32 32 33 35 35 39 41 41 41 42 43 44 44 44 45 46 46 47 47 48 49 49 52 54 55 56 58 60 61 63 4.4.1.10. A10 – Redirecciones y reenvíos no validados 4.5. OTRAS PÁGINAS ÚTILES PARA PROGRAMACION SEGURA DE APLICACIONES WEB 5. 5.1. 5.2. 6. 6.1. 6.2. 6.3. HERRAMIENTAS QUE PERMITEN ENCONTRAR VULNERABILIDADES Y COMPROBAR CÓDIGO HERRAMIENT DE ESCANEO DE VULNERABILIDADES HERRAMIENTAS DE ANÁLISIS DE CÓDIGO TECNOLOGÍA A IMPLEMENTAR – ACUNETIX WEB VULNERABILITY SCANNER QUE ES Y PARA QUE SIRVE ACUNETIX WEB VULNERABILITY SCANNER QUE DETECCIONES REALIZA APLICACIÓN DE LA HERRAMIENTA ACUNETIX A UNA PÁGINA WEB 65 67 69 69 70 71 71 71 72 7. PÁGINA WEB DEL DESARROLLO DEL PROYECTO 78 8. CONCLUSIONES Y RECOMENDACIONES 79 9. BIBLIOGRAFÍA 76 7 LISTA DE FIGURAS Pag. Figura 1- Proceso de cifrado y descifrado de la información 21 Figura 2- Arquitectura de una aplicación WEB 29 Figura 3- Web, Hosting y Dominio 30 Figura 4- Partes del dominio 33 Figura 5- Aplicación de la herramienta ACUNETX a una página 73 Figura 6- Nivel de vulnerabilidades encontradas 73 Figura 7- Explicación de las vulnerabilidades encontradas 74 8 GLOSARIO APLICACIÓN WEB: información o herramientas a las que un cliente puede acceder utilizando un servidor web y una conexión a internet, todo esto por intermedio de un navegador. TCP/IP: (Transmission Control Protocol/Internet Protocol), protocolo que gobierna las comunicaciones en Internet permitiendo conectar diferentes redes independientes entre sí. HTML (Hyper Text Markup Language o Lenguaje de marcas de hipertexto), lenguaje empleado para el desarrollo de páginas de Internet. Está compuesto por una serie de etiquetas que definen el contenido y la apariencia de una página web HTTP (Hyper Text Tranfer Protocol), protocolo que emplean los computadores para comunicarse a través de la web. URL (Uniform Resource Locator o localizador uniforme de recursos) secuencia de caracteres que sirven como medio de localización de los recursos que forman la web en Internet. WWW: World Wide Web: conocida como la red, es el sistema mundial de servidores web conectados a Internet 9 RESUMEN El siguiente trabajo recopila un poco de información acerca de lo que significa la seguridad en el desarrollo de aplicaciones Web, y pretende crear una guía en la que los estudiantes de la media técnica de las instituciones educativas puedan apoyarse con documentación seria y responsable ofrecida por personas especializadas, dedicadas al estudio de las vulnerabilidades, ataques, y las diferentes formas que existen para prevenirlos o para defenderse en caso de ataque. Se dan a conocer las vulnerabilidades más conocidas de acuerdo con estudios especializados en el tema por empresas con dedicación exclusiva, con código abierto y gratuita para las personas que quieran acceder a sus páginas; se muestran además, algunas herramientas de escaneo que pueden ayudar a solucionar algunos problemas relacionados con la seguridad, como también páginas de internet y algunas direcciones que pueden dar solución o esclarecer en algunos casos, errores o temas en los que no se posee mucho conocimiento y ejemplos de casos conocidos. Esta guía solo pretende encaminar al estudiante hacia soluciones que puedan ayudarle a desarrollar una aplicación web, no es el caso de copiar o mostrar como propio lo que ya ha sido resuelto por otros, es precisamente llevarlos hacia las páginas que han sido escritas con anterioridad y a las que se puede acceder confiadamente con la información adecuada. PALABRAS CLAVE: Seguridad. Aplicaciones WEB. Guía. Media Técnica. Vulnerabilidades. Ataques. Herramientas. Internet. Código abierto. Escaneo. 10 INTRODUCCIÓN El origen de las vulnerabilidades de una aplicación web puede estar en cualquier componente de una aplicación web en producción: la base de datos, la configuración de los servicios, el sistema operativo, los accesos a sistemas o módulos relacionados, entre otras. Sin embargo, muchas de ellas pueden prevenirse escribiendo código fuente seguro y protegido contra amenazas potenciales. Estudios de seguridad plantean que el 70% de las aplicaciones web tienen vulnerabilidades, los problemas de seguridad en los sitios web se encuentran a nivel de la aplicación como resultado de malas prácticas en la construcción del software, los desarrolladores requieren comprender que al programar aplicaciones WEB deben considerar requerimientos de seguridad y que se requiere no solo cumplir con el objetivo funcional básico de la aplicación, sino una concepción general de los riesgos que puede correr la información contenida, y gestionada por el sistema. El concepto de la seguridad en las aplicaciones web es un área de investigación que ha pasado a ser vital dentro de la Ingeniería de Software, como resultado del crecimiento de las aplicaciones sobre Internet. Los ataques han ido en aumento dadas las posibilidades de éxito que han tenido y se puede decir que sin consecuencia alguna. Como consecuencia, el desarrollador de software no solo debe concentrarse en los requerimientos de los usuarios y en la autenticación para el acceso a las aplicaciones sino en prevenir desde el desarrollo posibles ataques. Esto implica que en el proceso de diseño y construcción del software se incorporen prácticas de seguridad como requerimientos críticos del sistema. Para el proyecto, The Open Web Application Security Project, OWASP (“la comunidad libre y abierta sobre seguridad en aplicaciones”) es muy importante por la información que alberga acerca del desarrollo de las aplicaciones Web, contiene información desde el momento de la creación de la página Web, muestra información de cómo se crean las vulnerabilidades desde el momento mismo de la programación, las formas de contrarrestarlas, escaneo, ejemplos, prevenciones y soluciones en caso de daño por intrusión. Se mencionan igualmente otras páginas que ofrecen información gratuita y que son igualmente páginas serias y bien respaldadas. 11 Como forma de obviar lo que podría traducirse como un peligro anunciado, la creación de una guía de buenas prácticas de seguridad en Aplicaciones WEB desde la elaboración de software en su etapa incipiente para que sean adoptadas por los estudiantes de Media Técnica en Desarrollo del software de las instituciones educativas del Municipio de Medellín hace que a futuro se vea reflejado el trabajo responsable de un desarrollador de aplicaciones web y que finalmente se traduzca en buenos resultados y personal calificado. En la actualidad, existen publicaciones que permiten formar un criterio sobre el tema, no existen acuerdos sobre mejores prácticas básicas sobre lo que se debe considerar en el proceso de desarrollo, la seguridad se centra en la defensa y no en la prevención por lo que se propone la definición de mejores prácticas como los primeros pasos durante la formación de programadores para crear hábitos de construcción de software seguro. El Vivero del Software es un lugar ubicado en la ciudad de Medellín en donde germina, se incentiva y se fortalece el talento de los jóvenes estudiantes de Media Técnica en Desarrollo del software de las instituciones educativas del Municipio de Medellín. Es aquí donde se revela la necesidad de incluir las buenas prácticas desde el momento mismo de la concepción de la idea de la creación de una página Web por los estudiantes que comienzan en el mundo del desarrollo del software. 12 1. BUENAS PRÁCTICAS PARA EL DESARROLLO DE UN PROYECTO INFORMÁTICO Cada vez que miramos en nuestro entorno, vemos la cantidad de tecnología que existe, la comunicación, los juegos, la televisión, la telefonía, en fin, cada negocio, cada casa y particularmente cada persona cuenta con un aparato que le permite comunicarse y estar informado de manera inmediata. Nuestro activo principal, tanto personal como de empresas es la información que se genera ante cualquier uso de la tecnología, y todo esto generalmente queda guardado en nuestros aparatos electrónicos. Es importante saber que cuando se utiliza un computador, un teléfono o enviamos un correo, necesitamos de programas o aplicaciones que ayuden a obtener y desarrollar la actividad que se requiere, los desarrolladores de estas aplicaciones, los programadores que manejan páginas WEB son los actores más importantes de este intercambio tecnológico y por supuesto están las amenazas, los riegos y las vulnerabilidades latentes en cada uno de estos programas y aplicaciones. Lo primero que se debe tener en cuenta son algunos tips que existen para proporcionar buenas prácticas en cualquier proyecto informático. 1.1. ¿QUÉ SON BUENAS PRÁCTICAS? Son un conjunto de acciones ordenadas, ciertas, coherente y seguras, con objetivos claros y procedimientos adecuados, realizadas por personas que ponen en práctica sus conocimientos en pro de satisfacer una necesidad identificada, obviamente, cumpliendo con normas, políticas, reglas y estándares que la certifiquen como apta para ponerla en funcionamiento y que se convierta en un referente para mejorar otros procesos. 13 1.2. ¿PORQUE SE LES LLAMAN BUENAS PRÁCTICAS? Porque cumplen con normas, políticas, estándares y reglas que la hacen válida y conforme a la Ley para que cumpla con su perfecto su funcionamiento. Porque atacan de raíz una necesidad convirtiéndola en una fortaleza. Porque el personal encargado son personas calificadas y especializados para desarrollar la labor. Porque las propuestas son innovadoras y creativas. 1.3. ¿QUE HACE QUE UNA PRÁCTICA SEA MAL DESARROLLADA? El tiempo reducido en su ejecución. Personal con conocimientos escasos del tema. Que la necesidad no sea tan evidente. Desarrollo por investigaciones equivocadas. Etapas de inicio poco sólidas.1 1.4. ¿QUÉ ES UN PROYECTO INFORMÁTICO? Es el cubrimiento de una necesidad identificada por alguien y realizado por un grupo de personas conocedoras de las tecnologías de la información y la comunicación, que construyen un producto de software que satisfaga esa necesidad.2 1 Feaps.( 2007) Buenas prácticas FEAPS , pag. 6,7, 9 y 10 M. Astudillo. (2009) El Proyecto informático. Documento disponible en: http://www.monografias.com/trabajos-pdf2/proyecto-informatico/proyecto-informatico.pdf 2 14 1.5. TIPS DE BUENAS PRÁCTICAS PARA PROYECTO INFORMÁTICO EL DESARROLLO DE UN Existe tanta literatura como medios para obtener los diferentes tips que hacen que un proyecto informático sea reconocido como “buen proyecto”, porque cumplen con los lineamientos específicos que lo hacen sobresalir de los demás proyectos y porque culminan satisfaciendo las necesidades por los que fueron creados. Aquí nombro algunos de ellos: Lo primero que se debe hacer es un acercamiento con el cliente para saber sus necesidades, expectativas, requerimientos y viabilidad de su petición. Una vez se tenga reconocido el proyecto y lo que se va a hacer, se debe empezar con la planificación del trabajo en general, hacer un bosquejo de los resultados y hacérselo saber al cliente para poner en marcha el proyecto; de ahí en adelante se debe tener en cuenta lo que sigue: Involucrar al cliente en el desarrollo del proyecto. Hacer partícipe al cliente de la evolución del proyecto y sobretodo en la fase de requerimientos, con esto se garantiza que lo que se hace es lo que quiere el cliente. Valorar la importancia del sistema a implementar. El cliente debe tener claro que lo que se está haciendo será para beneficio de su empresa por tanto debe instruir a sus empleados acerca de la importancia de poner en funcionamiento el proyecto finalizado. Concientizar al cliente y sobre todo a los empleados de que el proyecto en mención es un apoyo a la gestión de los empleados y que en ningún momento sustituirá al empleado quien es el responsable y decide qué, cuándo y cómo realizar el trabajo. Tener siempre presente los objetivos del negocio. Tener siempre una comunicación directa con el cliente, evitar los intermediarios. 15 Elaborar un mapa de riesgos. Flexibilidad en los requerimientos. El cliente hace la solicitud de un proyecto producto de una necesidad manifiesta, sabe lo que necesita pero no sabe cómo se desarrollará, por tanto a medida que se realicen los requerimientos, el cliente puede ir modificando sus exigencias de acuerdo a la complejidad del proyecto. Evaluar de manera efectiva la complejidad de los requerimientos. Explicar al cliente lo que significa en tiempo y plata sus requerimientos permitiendo al cliente reformar sus exigencias y al realizador del proyecto cumplir con los tiempos estipulados. Reconocer delante del cliente la importancia de la realización del proyecto y los beneficios que traerá a su empresa. Cuando se dirija al cliente hacerlo en lenguaje ordinario, evitar las palabras técnicas que confundan al cliente, los tecnicismos generan desconfianza, las palabras comunes, hacen que el cliente entienda y confíe. Averiguar quiénes serán los beneficiados con el proyecto, que hacen y que necesitan y definir las posibles soluciones acordes con los procesos implementados en la empresa. Definir el alcance del proyecto, identificar los requerimientos y organizarlos de acuerdo con su urgencia. Una vez se está ejecutando el proyecto, se debe estar preparado para posibles pequeñas variaciones en el alcance del proyecto, lo cual implica reprocesar; esto solo es posible si redunda en mejor calidad en el proyecto y excelente satisfacción para el cliente. Se debe tener en cuenta de documentar constantemente, levantar actas de las reuniones y documentar los procesos realizados. 16 Tener clara la trazabilidad del producto, conocer los requerimientos y todos los métodos que se aplican para su solución desde el levantamiento de requerimientos, pasando por los modelos arquitectónicos, el diseño, el programa que se utilizará, el código fuente aplicada y los casos de prueba. Utilizar diseños ágiles que le permitan hacer modificaciones a medida que el proyecto avance, igualmente hacer modificaciones al modelo de acuerdo con la exigencia del proyecto. Realizar las pruebas de código y comprobar su funcionamiento. Las herramientas que generan código facilitan en gran medida el trabajo. El diseño es una parte esencial para el desarrollo del proyecto, con ello se tiene identificado su inicio, avance y culminación. Tener claro que en la etapa de requerimientos se debe hacer además de la recolección y análisis de los requerimientos, un estudio de factibilidad que integra la disponibilidad de recursos que se utilizarán para llevar a cabo el proyecto, objetivos, alcance, limitaciones, costos aproximados, tiempo de ejecución, etc. Existen numerosas herramientas para desarrollo de software, tener en cuenta las convenciones necesarias de acuerdo con el lenguaje de programación que escoja.3 3 J.C. Herazo (2010) ¿Preparado para presentar tu proyecto de seguridad informática ante gerencia? Disponible en: http://liacolombia.com/2011/02/%C2%BFpreparado-para-presentar-tuproyecto-de-seguridad-informatica-ante-gerencia/ 17 2. LA SEGURIDAD EN INFORMÁTICA La seguridad informática no es más que la acción de proteger mediante mecanismos técnicos y legales, los activos ante cualquier amenaza, riesgo o daño que lo pueda atacar, empezando por los activos físicos con los cuales se crea y adelantan las labores diarias, y siguiendo con la información generada que finalmente se convierte en el reflejo del buen nombre de la empresa. El Riesgo es la identificación de las vulnerabilidades medidas mediante la probabilidad de que ocurra un suceso y los posibles daños que ocasionaría en el desarrollo de la empresa, es allí donde toma parte la seguridad informática buscando mecanismos de defensa y protección. Es de vital importancia dirigir la protección de los activos hacia los objetivos fundamentales de la seguridad como son la integridad, la disponibilidad y la confidencialidad. La Integridad, garantiza que los datos permanezcan exactos y que no puedan ser borrados o modificados por personas no autorizadas, La firma digital es uno de los mecanismos fundamentales para conservar la integridad en la información. La Disponibilidad asegura que la información se encuentre al alcance de los que la necesiten y que estén autorizadas, para ello existen los permisos que se otorgan a los usuarios, de lectura, de escritura y de ejecución. La Confidencialidad asegura que la información esté resguardada y que solo sea accesible para las personas que cuentan con la autorización necesaria para utilizarla, para la confidencialidad es importante el cifrado de la información relevante. Estos tres objetivos podrían ser más eficaces si a cada usuario que haga uso de la información de la empresa se le diera permiso y tuviera que autenticarse al momento de ingreso, esto como parte de la seguridad y para que se pueda identificar el tipo de operaciones que realiza y la clase de información pueda manipular en un caso dado. Igualmente se debe tener el control de los movimientos que se presenten con el sistema realizando registros y auditorías, 18 esto garantiza el no repudio (verificación que una transacción cualquiera que sea su naturaleza haya sido entregada y recibida) 4 Todo caso de seguridad en la empresa es de orden primordial toda vez que no solamente existe ataques desde el exterior, sino que dentro de las mismas compañías existen empleados que pueden afectar la información ya sea de forma involuntaria o voluntaria y que pueden poner en riesgo la estabilidad de la compañía. 2.1. RIESGOS QUE PUEDEN AFECTAR LA WEB Cada día el uso de aplicaciones WEB en las compañías se hace más frecuente dado el avance tecnológico en cuanto a comercio electrónico y a la necesidad de prontitud y facilidad de las transacciones o negocios, las compañías cada día se ven obligadas a manejar su información a través de la red lo que las hacen vulnerables ante los ataques informáticos. La empresa Gartnet Inc. Situada en Stamford, Connecticut, Estados Unidos, Está dedicada a la consultoría e investigación de las Tecnologías de la información, estima que el 75% de los ataques informáticos están direccionados hacia las aplicaciones web y que generalmente éstos son producidos con fines de ganancias económicas, por tan razón, la seguridad en las aplicaciones debe ser tenida en cuenta desde el momento del diseño hasta el momento de su ejecución5. Muchas de las aplicaciones que tienen que ver con transacciones comerciales son objetivos de los delincuentes informáticos que tratan de violar la seguridad para obtener claves, contraseñas, números de tarjetas de crédito etc.; Estas aplicaciones generalmente presentan vulnerabilidades porque no son desarrolladas con el tiempo necesario para tener en cuenta la seguridad dadas las presiones ejercidas por el cliente para la entrega y porque no se tiene la conciencia de la importancia que la seguridad representa. 4 Infosegur (2013). Objetivos de la Seguridad informática. Disponible en: https://infosegur.wordpress.com/tag/no-repudio/ 5 Gartner. Computer attacks. Información disponible en: Chttp://www.gartner.com/search/site/freecontent/simple?typeaheadTermType=&typeaheadTermId= &keywords=computer+attacks# 19 Otro de los objetivos son las debilidades de HTTP que existen cuando se utilizan puertos TCP conocidos como el puerto 80 y/o 443 para la comunicación y aunque la función del Firewall es filtrar el tráfico de información que entra y sale de dos redes o de computadores que trabajan dentro de una misma red y que deben cumplir con unas reglas específicas (que en caso de no cumplirse, la información es bloqueada), si utiliza estos puertos para permitir la comunicación, de nada sirve. Una de las formas de prevenir estos riegos es a través de la Criptografía. Existen variedad de herramientas que permiten detectar las vulnerabilidades de las páginas web, sin embargo, existen métodos que ayudan a proteger la información y a mantenerla oculta en caso de ataques cibernéticos. Para esto se ha desarrollado una técnica importante en el ocultamiento de la información, LA CRIPTOGRAFÍA. 2.2. ¿QUÉ ES CRIPTOGRAFÍA? Es la aplicación de una técnica, código o conjunto de códigos que han utilizado para ocultar información importante. Desde tiempos antiguos como en la época de los romanos, por necesidad de que no fueran descubiertas sus estrategias de guerra enviaban códigos que solo ellos conocían y que nadie podía descifrarlos. Igualmente se utilizó la máquina Enigma usada en la segunda Guerra mundial para enviar mensajes cifrados y se han utilizado otros como el cifrado César, el diseño Feistel, etc. (H. Corrales, C. Cilleruelo, A. Cuevas, 2014, p. 4) 6 En nuestra época, con la llegada de las computadoras, el envío constante de información a través de los correos electrónicos, las transacciones que se realizan a través de la red, se hizo necesario encontrar una manera de esconder de manera óptima la información de manera que se haga inteligible ante cualquier ojo normal. Guardar información importante en los discos duros o en cualquier otro dispositivo, hace que la información allí almacenada sea apetecida por cualquier invasor dañino, es por esto que esta información, en ocasiones primordial y puede llegar a ser muy valiosa para la empresa, por tanto esta técnica que es utilizada para ocultar información importante que no pueda ser accedida por nadie excepto por el creador y por el receptor de la información quien conoce de antemano la clave; con ello se garantiza la integridad, la confidencialidad y la disponibilidad de la información en tiempo real. 6 Consultado el 26 de octubre de 2015, disponible en: http://www3.uah.es/libretics/concurso2014/files2014/Trabajos/Criptografia%20y%20Metodos%20de%20Ci frado.pdf 20 Figura 1: Proceso de cifrado y descifrado de la información Fuente: Construcción propia Algunos ejemplos de algoritmos de criptografía clásica se pueden consultar en la página https://genomorro.files.wordpress.com/2007/09/trabajo.pdf 2.2.1. ¿Qué uso tiene la Criptografía? La criptografía se creó con el propósito de esconder información de manera que cualquier persona que acceda a ella no pueda descifrarla fácilmente. La Criptografía se ha utilizado para: Permitir que la información solo sea accedida por las personas autorizadas. Solo pueda ser modificada por las personas que tengan los permisos para hacerlo. Que la información se pueda consultar en cualquier momento que se requiera. Hace más seguras las comunicaciones y permite que mediante el cifrado simétrica se pueda tener privacidad y velocidad de transferencia al mismo tiempo. Con el uso de firmas digitales, se asegura que el acceso a la información sea más controlado. Facilitan el comercio electrónico reduciendo los riesgos de robo. 21 La criptografía no solo es utilizada con fines benévolos, también ha sido utilizada para robos al interior de las compañías. Fuga de información. Encriptación de información con fines ilegales (pornografía, espionaje, música, videos etc). 2.2.2. ¿Qué clases de tecnologías criptográficas existen? Existen muchas maneras de encriptar la información, algunas de ellas se conocen como: Criptografía Simétrica: Técnica utilizada en ocultar información mediante una única clave (números, letras, palabras o cadenas de letras o palabras aleatorias con o sin sentido) que se utiliza para enmascarar y desenmascarar un texto. Esta clave es conocida por el emisor y el recetor del mensaje. 7 Criptografía Asimétrica: Técnica utilizada para el envío y recepción de información mediante 2 claves, una pública (conocida por todos) y una privada (conocida por una sola persona), la seguridad que ofrece la criptografía asimétrica es que solo las dos claves son utilizadas para el descifrado de la información. La clave pública la conoce el emisor para encriptar la información y la clave privada es conocida solamente por el receptor para descifrarla. 8 La Firma digital: Técnica que permite demostrar ante auditores, que los documentos son propios, se realiza mediante un Hash generado al documento original, mediante la clave pública se realiza el hash del descifrado y se comparan, si coincide, la información es veraz y la firma es auténtica. Es importante comprobar las fechas de caducidad o revoque. 9 Certificados digitales: Técnica que consiste en utilizar un certificado o paquete de información que identifica al usuario que contiene información 7 ANGEL, José de Jesús. Criptografía para principiantes. P. 13 Disponible en: http://spi1.nisu.org/recop/www.seguridata.com/pdf/cbasica.pdf 8 Ibid., p. 21 9 Ibid., p. 24 22 acerca de éste, como dirección de correo electrónico, clave pública, país de origen, periodo de validez y firma digital del certificado. Generalmente es utilizada para identificar al titular del emisor de la información; es una técnica utilizada como refuerzo de las técnicas anteriores10 2.2.3. Servicios criptográficos disponibles: A continuación se enumeran algunas herramientas que ofrecen servicios de encriptación, generadores de claves públicas y privadas y firmas digitales de documentos: EncryptOnClick: Aplicación que sirve para encriptar ficheros protegiéndolos con una contraseña a la que puede acceder solo las personas interesadas, su interfaz se compone de cuatro botones por los que se puede acceder a todas acciones del programa. Folder encripter: Aplicación que permite encriptar y desencriptar mediante una contraseña, archivos o carpetas. Softavir-strict: Herramienta que permite ejecutar solamente los programas que hayan sido añadidos a la lista (Lista blanca), así asegura que no dejara que ningún software intruso ingrese al sistema. Secryptor: Herramienta que permite encriptar los archivos guardados en la nube. Cryptext: Herramienta que encripta y desencripta el menú contextual de Windows. Hide it Pro: Es una aplicación gratuita que sirve para encriptar archivos y desencriptarlo mediante contraseña o pin. Paragon Encrypted Disk SE: Es una herramienta que encripta archivos mediante imágenes codificadas en diferentes tipos de codificación. 10 Ibid., p. 37 23 PGP ENCRYPTER: Programa que permite el cifrado de la información, genera claves públicas y privadas y realiza firmas digitales. GnuPG: Herramienta de seguridad que permite generar un nuevo par de claves, intercambia claves. Cifra y descifra documentos y firma y verifica firmas. BCArchive : Herramienta para encriptar y desencriptar información. SecureZIP Express: Herramienta disponible para el cifrado de información, expedición de certificados digitales mediante X.509 y entrega de claves. 2.3. IMPORTANCIA DE LAS COMPAÑÌAS ESPECIALIZADAS EN LA SEGURIDAD DE LAS APLICACIONES WEB Son muchas las compañías que ofrecen información gratuita para los desarrolladores de aplicaciones WEB, especializadas en estos temas y llevan mucho tiempo dedicadas a la investigación y a la forma de combatir los diferentes ataques producidos a las aplicaciones web. Su único propósito es hacer de la informática un medio seguro y libre de ataques, aunque esto sea una tarea casi que imposible dada la creciente proliferación de delincuentes informáticos. La UNAM-CERT (http://www.cert.org.mx/index.html) es también un equipo serio que da respuesta a incidentes de seguridad informática liderado por la Universidad Nacional Autónoma de México, que se encarga de proveer el servicio de respuesta a incidentes de seguridad a sitios que han sido víctimas, a la alerta mediante la publicación de las vulnerabilidades encontradas y a la investigación en pro de la mejora respecto de la seguridad de los sitios web. En su página (http://www.seguridad.unam.mx/vulnerabilidadesDB/) ofrece un estudio detallado de las vulnerabilidades encontradas en el desarrollo de las páginas web desde el 2005 a marzo de 2016, los ataques realizados y la manera de combatirlos. El OBSERVATORIO TECNOLÓGICO, liderado por el Ministerio de Educación, Cultura y Deporte del Gobierno de España, es un espacio colaborativo para el profesorado basado en la observación de la tecnología informática y que ofrece información tecnológica a nivel de software y hardware, además de la seguridad informática, mecanismos de seguridad, vulnerabilidades, políticas etc. 24 http://recursostic.educacion.es/observatorio/web/es/component/content/article/104 0-introduccion-a-la-seguridad-informatica?start=3 IBM Bluemix es un entorno de plataforma como servicio desarrollado por IBM que soporta varios lenguajes de programación y servicios con metodología colaborativa en donde se puede crear, aportar y utilizar entre otras, aplicaciones en la nube. En su página http://www.ibm.com/developerworks/ssa/rational/library/desktop-mobileapplication-security-design/ ofrece información acerca de la seguridad en las aplicaciones Web y toma como referencia el proyecto OWASP para informar acerca de las vulnerabilidades, algunos ejemplos de ellas y la forma de prevenir los ataques y de combatirlos. OWASP es un proyecto abierto de seguridad en aplicaciones Web, dedicado a ofrecer alternativas para la confiabilidad desde su desarrollo hasta el mantenimiento. Ofrece herramientas, documentos, foros etc. de forma gratuita y abierto para personas que deseen aportar conocimientos en estas áreas y de igual manera alimentarse de la información especializada. https://www.owasp.org/index.php/Main_Page 25 3. APLICACIONES WEB Y SEGURIDAD Primero que nada debemos saber que la palabra WEB (Acrónimo de World Wide Web), es una palabra inglesa que tiene como significado red, telaraña o malla y es utilizada en los medios informáticos para referirnos a internet 11 Una aplicación web, es una herramienta que ha sido creada mediante código con el único propósito de interactuar con el usuario y cumplir con un propósito específico de realizar una orden que le ha solicitado un usuario. Es también una herramienta que se ejecuta en internet y por tanto todos los datos archivos, o historial de navegación, quedan guardados en la web. Generalmente son accedidas directamente (online) y no necesitan instalarse en el computador para realizar su trabajo, un ejemplo de ello son Yahoo, Gmail o Microsoft Outlook, que son programas que guardan la información en la nube y pueden ser accedidos desde cualquier computador o dispositivo móvil en cualquier parte del mundo. Las aplicaciones web nos ofrecen muchas ventajas como su gratuidad o sea que se puede obtener una aplicación que sirva para un fin específico de manera gratuita y no necesita descargarse en el computador para poder ejecutarla. Otras de sus bondades es la accesibilidad ya que como su información queda guardada en la nube, se puede ingresar a ella en cualquier momento y lugar, igualmente se puede trabajar en ellas de manera simultánea entre varios usuarios. 3.1. CICLO DE VIDA EN EL DESARROLLO DE APLICACIONES WEB. El auge que han tenido en los últimos años las TIC (Tecnologías de la Información y la Comunicación) ha hecho que no solamente las empresas se beneficien de ellas por la necesidad en sus transacciones casi que inmediatas y la urgencia en las comunicaciones ágiles y efectivas, sino que ha ingresado a los hogares obligando a las personas a hacer uso de ellas no solamente utilizando la parte transaccional sino utilizándolas como método de investigación y hasta de diversión y esparcimiento. Es así como cada día se inventan nuevos plataformas, sistemas operativos, programas, aplicaciones etc. que son el resultado de grandes investigaciones que 11 Consulta realizada el 24 de octubre de 2015, disponible en: http://definicion.de/web/ 26 permiten suplir en gran parte las necesidades de los usuarios y que hacen al mundo entero partícipe del uso de las tecnologías. Las aplicaciones web son programas informáticos que se realizan a través de un computador y que son accedidas por la web por medio de una red como internet o intranet o sea que no necesitan ser descargadas y se puede acceder a ellas desde cualquier lugar y en múltiples plataformas. Existen muchísimas metodologías para el desarrollo de aplicaciones web, la variedad de estas metodologías depende de los requerimientos. Igualmente existen técnicas de modelado conceptual tradicional, métodos de diseño orientadas a objetos y también existen mejoras del modelo conceptual implantando modelos de navegación y presentación. (Silva, 2001), (Marcos, 2002). Las aplicaciones web tienen un proceso de desarrollo o de vida que puede dividirse en etapas; este proceso permite visualizar el trabajo de manera ordenada, haciendo que cualquier persona sepa observarlo y entenderlo. Estas etapas están divididas así: 12 Etapa de levantamiento de necesidades u oportunidades o de requisitos Etapa de análisis Etapa de diseño Etapa de codificación, Etapa de Pruebas Etapa de instalación Etapa de mantenimiento.12 Consulta realizada el 28 de octubre de 2015, disponible en: http://elvex.ugr.es/idbis/db/docs/lifecycle.pdf 27 3.1.1. Etapa de levantamiento de necesidades u oportunidades o de requisitos: En esta fase se identifican los usuarios y sus necesidades, las formas de las necesidades de información, necesidades de navegación, necesidades de adaptación y necesidades de interfaz de usuario. También requisitos específicos de información, terminando con un prototipo de interfaz del usuario. 3.1.2. Etapa de análisis: Luego de que el cliente ha expresado sus necesidades, se realiza entonces el análisis, se determinan los requisitos que debe tener la aplicación, como público objetivo, hardware y software a utilizar, módulos, requisitos técnicos, alcance, responsabilidades, plazos, costos etc. 3.1.3. Etapa de diseño: Propuesta firmada como aceptada, adelanto en dinero, material, esquemas de diseño o planos del programador, es la manifestación de la estructura de la aplicación. 3.1.4. Etapa de codificación: Desarrollo del código de acuerdo a la estructura anterior, los desarrolladores deben conocer la interfaz y el código a desarrollar de acuerdo con el lenguaje de programación es la traducción de la estructura en código que ofrezcan como resultado una interfaz amigable al cliente. 3.1.5. Etapa de pruebas: Las aplicaciones web necesitan pruebas de integración, de tensión, de escalabilidad, de carga, de resolución y de compatibilidad, con ello se comprueba que la aplicación se desarrolla en forma adecuada conforme a las exigencias del cliente. 3.1.6. Etapa de instalación: Luego de haber terminado con la codificación y realizado las pruebas pertinentes, llega esta etapa que es la entrega oficial del proyecto al cliente, en donde se deja instalado el programa y funcionando, se debe tener en cuenta que durante todo el proceso ha habido acompañamiento directo con el cliente, por tanto, en esta etapa se entrega el programa funcionando a satisfacción del cliente. 3.1.7. Etapa de mantenimiento: Generalmente las aplicaciones WEB necesitan actualizaciones porque las correcciones de errores se van haciendo a medida que se va desarrollando la codificación. 28 3.2. ARQUITECTURA PARA EL DESARROLLO DE APLICACIONES WEB. Web es un sitio dentro de internet que ha sido creada para contener información a la que puede acceder desde un motor de búsqueda con un tema específico, permitiendo a los usuarios obtener información rápidamente con una gama amplia de alternativas de uso. Figura 2: Arquitectura de una aplicación WEB Fuente: http://www.n4designlab.com.mx/blog/index.php/119-aspectos-basicos-de-las-aplicaciones-web Una aplicación WEB tiene 3 componentes principales: Servidor web, conexión a la red y los clientes. Un cliente realiza una petición desde un buscador, esta petición viaja usando una conexión de red usando el protocolo HTTP y llega hasta un servidor web que se encarga de buscar entre su sistema de archivos la solicitud y entrega la respuesta correspondiente, una vez entregada la solicitud, se rompe el proceso. 13 3.3. QUE ES UN WEB HOSTING O ALOJAMIENTO WEB Es un computador con una gran capacidad (Servidor) que ofrece a un cliente, servicios de hospedaje de páginas web (por un tiempo limitado), imágenes, videos, correo electrónico etc. para que pueda ser accedido por otros computadores conectados a internet. 13 Consulta realizada en 28-10-2015 disponible en: https://programacionwebisc.wordpress.com/2-1arquitectura-de-las-aplicaciones-web/ 29 Figura 3: Web, Hosting y Dominio TOMADO DE http://blog.norihost.com/ 3.3.1. Que se debe tener en cuenta para escoger un buen Hosting Tener claro para que necesitas registrar un hosting (Para mostrar un blog personal, para publicar la imagen de una empresa y sus productos o para manejar un nicho de mercado). Tener en cuenta el tamaño y el uso que queramos darle a nuestra página web. El espacio que ofrece. La gestión de archivos vía FTP. Soporte para scripts perl y Python, php, ASP etc. Tasa de transferencia de archivos mensuales. Análisis de servicios y rendimiento VS costo. 30 Analizar la plataforma (Linux o Windows)de acuerdo a nuestras necesidades (páginas estáticas o dinámicas). Verificaciones de los contratos en lo que se refiere al ofrecimiento, multas por incumplimiento, deberes y derechos suyos y del proveedor (Letra menuda). Velocidades de acceso ofrecidas, límites de ancho de banda, impuestos, topes y costo en caso de sobrepasarlos. Garantías y soporte, ubicación, dirección y teléfono del proveedor. Asegurarse de tener COMO MÍNIMO 256 MB de memoria para el buen funcionamiento de los procesos de PHP14 3.4. QUE ES UN SERVIDOR WEB: Es un equipo o computador que posee una enorme capacidad de almacenamiento además de una memoria RAM de proporciones gigantes y una velocidad de conexión muy superior a los computadores comunes y que se encuentra conectado a internet sin interrupción. 15 3.4.1. Qué clase de servidores Web existen: Existen varias clases de servidores Web, los que son gratuitos, y los de costo (compartidos, revendedor, virtuales, dedicados y de colocación). Gratuitos: son los que ofrecen servicio de alojamiento sin ningún costo o privacidad pero que se sostiene a partir de la publicidad contratada por terceros para que se ofrece en las páginas alojadas, es muy limitado en espacio, tráfico y calidad del servicio. 14 Documento consultado el 13 de noviembre de 2015. Disponible en: http://culturacion.com/comoescoger-un-servidor-para-alojar-mi-sitio-web/ 15 Ibíd pag. 1 31 Compartido: Es un servicio económico que permite alojar clientes de varios sitios diferentes, su rendimiento es bueno para páginas sencillas de pequeñas y medianas empresas. Revendedor: Espacio usado por grandes usuarios que venden este servicio a pequeños usuarios. Virtuales: Usado por empresas de diseño y programación web por el control de un computador no compartido mediante el uso de una máquina virtual. Dedicados: Servicio en el cual un cliente compra o alquila toda la máquina y así obtiene el control total y su administración mediante un webmaster que vigile el buen funcionamiento; su costo es considerablemente alto. Colocación: Alquiler o venta de un espacio físico en un centro de datos, solo se le suministra la corriente eléctrica y la conexión a internet, lo demás lo pone el cliente.16 3.4.2. ¿Qué diferencia existe entre los gratuitos y los que tienen costo?. Los servidores Web gratuitos son los que ofrecen servicio de alojamiento sin ningún costo pero que se sostiene a partir de la publicidad que se ofrece en las páginas alojadas, mientras que los Servidores Web con costo ofrecen mayores niveles de seguridad, mayores utilidades, mayor capacidad de memoria, mayor amplitud de almacenaje y soporte. 17 3.5. QUE ES UN DOMINIO: El dominio es el nombre alfanumérico que se le dará a la página, (es aconsejable que el nombre que se escoja sea de fácil recordación y que tenga alguna relación con la actividad o sector económico de la empresa), además de la identificación o dirección del equipo que esté conectado a internet. 16 Consultado el 22 de noviembre de 2015. Disponible en: http://disenowebakus.net/alojamiento-web.php Consulta realizada el 10 de noviembre de 2015, disponible en: http://www.ciudadano2cero.com/que-esun-hosting-web-tipos-alojamiento-cual-elegir/ 17 32 El Sistema de nombres de dominio o DNS sirve para encontrar una página mediante términos fáciles (http://elcorazon.com) de identificar pues en caso contrario nos tocaría introducir una dirección IP muy larga y complicada para ser memorizada como (http://209.85.195.104), que en algunos casos son utilizados por varios dominios. 18 Figura 4: Partes del dominio 3.6. BUENAS PRÁCTICAS DE CODIFICACIÓN – ARQUITECTURA PARA EL DESARROLLO DE APLICACIONES WEB. Antes de iniciar con la seguridad en aplicaciones, todos los que de alguna manera deben trabajar con la parte de la seguridad informática, deben conocer acerca de lo que significa OWASP (“Open Web, Application Security Proyect” o en español “Proyecto abierto de seguridad de aplicaciones Web), ya que es una organización de personas voluntarias que trabajan en pro de la comunidad, proporcionando recursos gratuitos, apoyo a empresas para utilizar documentos, herramientas 18 Consulta realizada el 12 de noviembre gdl.com/servicios/dominios/que-es-un-dominio/ 33 de 2015. Disponible en: http://web- confiables y gratuitas, recursos, foros y capacitaciones, con el fin de que cualquier persona o empresa pueda acceder a ellas y obtener la mayor seguridad en todo lo que respecta a la tecnología, cualquier información al respecto se puede encontrar en página www.owasp.org Al referirnos a esta página en especial no se pretende ignorar los estudios realizados por otras empresas, pero en su gran mayoría, se refieren a esta página catalogándola como una de las principales páginas que aborda temas relacionados con la seguridad en aplicaciones WEB. No es el propósito de este trabajo, reescribir los datos encontrados allí, pero es una invitación para los que requieren del tema de seguridad en las empresas y hasta en la utilización de aplicaciones a nivel personal, por lo menos se informen acerca de estos temas. En este proyecto (OWASP), se mencionan algunos temas importantes relacionados con el desarrollo de aplicaciones Web y la seguridad aplicada a las mismas, algunas de ellas son temas tratados por su importancia como: Herramientas y estándares de seguridad en aplicaciones. Libros completos de revisiones de seguridad en aplicaciones, desarrollo de código fuente seguro, y revisiones de seguridad en código fuente. Controles de seguridad estándar y librerías. Capítulos locales en todo el mundo. Investigaciones de vanguardia. Extensas conferencias alrededor del mundo. 34 Listas de correo19 3.6.1. Recomendaciones que se debe tener en cuenta para la seguridad en el diseño de una aplicación web. Asegurarse de que el visitante obtenga la información solicitada de manera ágil. Nombre el dominio llamativo y acorde a los objetivos y al contenido. Elección adecuada del hosting. Asegurar la navegabilidad. Utilizar estrategias de SEO para mayor comprensión, optimización y posicionamiento en los motores de búsqueda. Mantener copias de seguridad constantemente y guardadas en sitios seguros lejos de la empresa, en caso de emergencias. El servidor debe estar en un sitio con seguridad lejos de la manipulación de extraños. Vigilancia constante.20 3.7. ELEMENTOS Y HERRRAMIENTAS QUE PODRÍA SER ÚTILES EN LA CREACIÓN DE UNA APLICACIÓN WEB Una vez que se conozca el objetivo para el cual se va a desarrollar la aplicación web, se necesitarían los siguientes implementos para desarrollarla: 19 Consulta realizada el 13-11-2015 disponible en https://www.owasp.org/images/5/5f/OWASP_Top_10__2013_Final_-_Espa%C3%B1ol.pdf 20 Consulta realizada el 10 de noviembre de 2015, disponible en: http://www.ciudadano2cero.com/que-esun-hosting-web-tipos-alojamiento-cual-elegir/ 35 Computador con un editor de texto (para personas que tengan conocimientos amplios de generación de códigos) o en su defecto editores online que permiten crear una aplicación web sin necesidad de escribir etiquetas de código, hay varias herramientas que ofrecen este servicio en internet en forma gratuita (las gratuitas son muy limitadas) en tal caso se podría optar por opciones con algún costo que ofrecen más variedad. Se mencionan algunas como: Mockflow: Herramienta que permite crear borradores de páginas web hacer un prototipo en varias plataformas como Android, iPhone, WordPress, Joomla, es fácil de manejar con elementos que arrastran y pegan de acuerdo con el diseño de página conveniente. GuideGuide: Es una extensión de Photoshop, es una herramienta que facilita el diseño web de una manera fácil e intuitiva. Lyervault: Herramienta para la gestión de un proyecto de manera colaborativa ya que guarda y sincroniza cualquier cambio que se haga desde cualquier dispositivo. Invision: Herramienta que convierte los diseños en prototipos interactivos y permite el trabajo colaborativo con el que se puede visualizar el proyecto antes de comenzar con el desarrollo. Proto.io: Es una plataforma de creación de prototipos de aplicaciones en dispositivos móviles de fácil manejo con solo arrastrar y soltar y no requiere de codificación. Sublime text: Editor de texto y de código fuente multiplataforma, escrito en C++ y Python para os plugins, fue creado para facilitar la programación con una interfaz oscura y una amplia gama de colores para la sintaxis 21. 21 Consulta realizada el 22 de noviembre de 2015. Disponible en http://www.40defiebre.com/herramientasoptimizacion-diseno-web/ 36 Conocimientos de Lenguaje de programación HTML (o Leguaje de etiquetas) HTML es un lenguaje en donde se crean estructuras de documentos escribiendo mediante código, lo que se quiere que se muestre en pantalla y se emplea para desarrollar páginas web. Se compone de etiquetas que permiten al navegador interpretarla y entregarlas de manera amigable al usuario. Un ejemplo de ello es el famoso Hola mundo en el lenguaje de Java 1. public class HolaMundo { 2. public static void main(String[] args) { 3. System.out.println("Hola Mundo"); 4. } 5. } En el caso de entregar esta información en HTML sería: <html> <body> <p> Hola mundo </p> </body> </html>22 Servidor local (No es necesario). Editor de página web (opcional), ofrecen alternativas. Algunos editores entre los cuales podemos mencionar algunos como: coffeCup Free editor (Gratuito y con costo) ayuda contextual a la escritura de código con vista previa del resultado a medida que se escriba el código. 22 Consulta realizada el 25 de noviembre de 2015. Disponible en http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=439:html-iun-lenguajede-programacion-ejemplo-concepto-lenguaje-de-etiquetas-vs-programacion-cu00705b&catid=69:tutorialbasico-programador-web-html-desde-cero&Itemid=192 37 TextWrangler (Gratuito) Editor para Mac, especializado en código html, CSS y JavaSrip. Kompozer (Gratuito) multiplataforma – Windows, Mac y Linux, igualmente ofrece vista previa mientras se escribe el código. Aptana Studio(Gratuito) multiplataforma – Windows, Mac y Linux. Ofrece ayuda contextual cuando se escribe el código HTML, soporta lenguajes como PHP, Python y Ruby on Rails.23 Editor de imágenes – Para editar, crear y optimizar imágenes. Se mencionan entre otros algunos como: Pixlr.com (Gratuito), herramienta con variedad de opciones, se puede trabajar online sin necesidad de registrarse. Photoshop Express Con controles simples, ofrece muy pocas opciones comparado con el Photoshop con costo. Splashup (Gratuito) para trabajo online no necesita registro, tiene una variedad amplia para los retoques a través de capas. PicMagick (Gratuito)Editor de imagen de fácil manejo, no requiere registro24 Sistema operativo, programas, aplicaciones etc., los datos (la información que se produce mediante el uso del software y del hardware) y los otros que son los que se necesitan para el desarrollo de una aplicación web como el recurso humano, la infraestructura, papelería etc. 23 Documento consultado en 24 de noviembre de 2015, disponible en: http://www.campusmvp.es/recursos/post/Los-10-mejores-editores-gratuitos-de-HTML-CSS-yJavaScript.aspx 24 Documento consultado el 28 de noviembre de 2015, disponible en: http://hipertextual.com/archivo/2010/09/8-editores-de-imagenes-online-y-gratuitos/ 38 3.8. SEGURIDAD EN EL CICLO DE VIDA DE UNA APLICACIÓN WEB. La seguridad que se debe aplicar al crear una aplicación web es un tema muy amplio dados los puntos de vulnerabilidades que lo contienen y las amenazas constantes a las que se está expuesta, es importante tener un conocimiento muy amplio de la manera de prevenirlos, lo importante en la creación de una aplicación web dinámica es que se puede actualizar constantemente. Aunque las amenazas que rodean las aplicaciones web están latentes, es importante tener en cuenta algunas recomendaciones para minimizar el riesgo, algunas de ellas serían: El servidor debe mantenerse en un lugar seguro donde no tenga acceso de personas no autorizadas. Realizar copias de seguridad frecuentemente y guardarlas en lugares seguros. Cierre los puertos que no utiliza y cancele los servicios no utilizados. Mantenga un programa antivirus potente que vigile y reporte la información que entra y sale. Asegúrese de que se cumpla la orden de utilizar contraseñas fuertes y ocultas. Utilice firewall potentes. Utilice la criptografía para proteger la información sensible. Para descargas utilice solamente fuentes y páginas confiables. Desconfíe de correos de remitentes desconocidos. 39 Verifique que la dirección comience por https, es una conexión segura y no utilice computadores públicos para realizar transacciones. Controle las entradas y salidas, contactos, información, contraseñas etc. de las redes sociales.25 25 J. López.(2010) Monográfico: Seguridad en Internet – Consejos para minimizar los riesgos en la navegación por internet, disponible en: http://recursostic.educacion.es/observatorio/web/en/listadomonograficos?start=4 40 4. BUENAS PRÁCTICAS PARA LA CONSTRUCCIÓN DE APLICACIONES WEB SEGURAS Para evitar problemas de seguridad en una aplicación, es buena práctica construir la seguridad dentro del Ciclo de Vida de Desarrollo del Software igualmente probar en todas las etapas y con frecuencia para detectar vulnerabilidades tempranas dentro del ciclo, que se traducen en correcciones a menor costo. Las pruebas se deben hacer con entradas no convencionales, es decir, no los datos esperados por la aplicación sino las excepciones. Es buena práctica La revisión permanente del código, proceso de comprobar manualmente el código fuente de una aplicación web en busca de vulnerabilidades26 Si bien es cierto que existen innumerables de fallas que se pueden producir para mantener protegido los sistemas de información, también es cierto que la mayoría de ellos ocurren desde el momento mismo del levantamiento de requerimientos ya que generalmente no se tiene en cuenta la cantidad de riesgos a que se está expuesto dada la complejidad de la infraestructura de TI que maneja todo lo relacionado con la información la comunicaciones que viaja a través de internet. 4.1. ETAPA DE LEVANTAMIENTO DE NECESIDADES, OPORTUNIDADES O DE REQUISITOS Esta etapa es el comienzo del proyecto, en donde se deben identificar las necesidades, los objetivos, e importancia, visualizando el futuro, para el desarrollo seguro de la aplicación web, se analizan y se concretan las necesidades del usuario y los requerimientos para el desarrollo del mismo. Para ello se deben tener en cuenta los siguientes pasos: 27 4.1.1. Pasos a seguir 26 (https://www.owasp.org/index.php/Category:OWASP_Code_Review_Project) https://www.owasp.org/images/8/80/Gu%C3%ADa_de_pruebas_de_OWASP_ver_3.0.pdf 27 Garavito L.M. (2013) Prototipo de una aplicación Web para la gestión en el procesos de trabajos de grado de la facultad de Ingeniería de la Universidad EAN. Disponible en: http://repository.ean.edu.co/bitstream/handle/10882/3916/GaravitoLeidy2013.pdf?sequence=5 41 identificar los objetivos del proyecto. Identificar el público objetivo y sus necesidades. Tener clara la finalidad del sitio web. identificar los requerimientos y funcionalidades de la aplicación web. Detallar el contenido o temas que se quiere mostrar. Nombre estratégico para el sitio. Registro de dominio. Investigar el mercado existente e innovar en diseño, estilo y contenido. Custodia de la información. 28 4.1.2. Vulnerabilidades encontradas en esta etapa: Teniendo en cuenta los paso a seguir se deben tener en cuenta las siguientes temas para minimizar los riesgos: Permisos para los usuarios. Inserciones inadecuadas como Virus etc. Falta de políticas institucionales y procedimentales. Exposición de la información sensible e importante. 28 Ibid. Pag. 29 42 contraseñas impropias. Medidas insuficientes de protección en las redes. Hosting inseguro, poco confiable y que no concuerden con las necesidades. 4.1.3. Prevención: En esta etapa es importante tener en cuenta estos pasos para evitar malos entendidos en el futuro de la aplicación. Vigilar (permisos) que las personas que accedan a la página, no puedan vulnerarla. Establecer políticas de seguridad física (sistemas anti-incendios, protecciones eléctricas, vigilancias. Establecer políticas procedimentales (manuales obligaciones, responsabilidades, sanciones etc.) de procedimientos, Codificación de la información sensible mediante la criptografía, esteganografía entre otras. Concientización e implantación de contraseñas fuertes y obligatoriedad de cambios periódicos. Vigilancia de las redes y su circulación (correos electrónicos, voz IP, navegación Internet, mensajería, bases de datos etc.). MZ (zona militarizada) o redes perimetrales de seguridad. Protección como cortafuegos, antispyware, antivirus etc.). 43 Actualizaciones periódicas. Monitoreo constantes e improvisados en hardware y software. Usar tecnologías protectoras (Antivirus, Firewall, antispyware, llaves de protección de software, eliminador de huellas de internet, monitoreador de puertos, etc.) Escoger un buen hosting con costo porque ofrecen mayor seguridad, soporte, capacidad, garantías, rendimiento velocidad etc. 4.2. ETAPA DE ANÁLISIS Una vez analizadas las necesidades, en esta etapa se concretan los implementos, las instalaciones, roles, las contingencias y cubrimientos. 29 4.2.1. Pasos a seguir Listar la infraestructura computacional, los implementos a necesitar para el desarrollo de la página, instalaciones locativas, software, hardware. Determinar los costos y presupuesto. Asignar roles y responsables. Determinar fechas de entregas. 4.2.2. Vulnerabilidades encontradas en esta etapa: Teniendo en cuenta los paso a seguir se deben tener en cuenta las siguientes temas para minimizar los riesgos: 29 Documento consultado el 15 de enero de 2016. Disponible en: http://www.institutomardecortes.edu.mx/pubs/metodologia_web.pdf 44 Siniestros naturales (Incendio, inundación etc) o intencionados (robos, pérdidas, fallas en el suministro eléctrico, etc.). Manipulación inadecuada de la información que alimenta la página web. cubrimiento de seguros, fechas, letra pequeña.30 4.2.3. Prevención: En esta etapa es importante tener en cuenta estos pasos para evitar malos entendidos en el futuro de la aplicación. Convenios con aseguradoras de bienes muebles. Copias de seguridad - Backups continuos, seguro (cifrado), remoto (lejos de la empresa), recuperaciones anteriores. Reglamentos con penalizaciones y sanciones para los intrusos responsables. Revisión periódica de seguros. Creación y puesta en práctica de manuales y procedimientos claros y apropiados de acuerdo al nivel de seguridad necesario. Establecer programas de formación en seguridad para el personal interno y para los usuarios. Mantener informado al personal acerca de las nuevas estrategias de los atacantes y la forma de evitarlos o combatirlos. 31 30 Milano P. (2007) Disponible en: http://www.cybsec.com/upload/cybsec_Tendencias2007_Seguridad_SDLC.pdf. 31 Microsoft Technet – Respuesta a incidentes de seguridad en TI. Disponible en: https://technet.microsoft.com/es-es/library/cc700825.aspx 45 4.3. ETAPA DE DISEÑO En esta etapa se elaboran los modelos de interacción con el usuario, en donde se expone la solución a las necesidades expuestas del cliente. En esta etapa se define que la aplicación sea comprensible, fácil de usar, clara, accesible, amigable y que el usuario finalmente logre los objetivos por el cuál fue creada la aplicación; es la parte primordial en donde se materializan y plasman, la creación de la aplicación web.32 4.3.1. Pasos a seguir Asegurar la usabilidad, cerciorándose que el usuario obtenga el mínimo de errores cometidos durante la realización de una tarea. Elaboración del esquema conceptual: objetos de dominio, relaciones e interacciones (clases, relaciones y subsistemas). Elaboración de diagramas de flujo de cada proceso. Asegurar la accesibilidad, garantizando el mínimo de posibilidades de fracaso en el acceso, ofreciendo entre otros el ancho de banda óptimo para la conexión. Construir una interfaz armónicamente creados. amigable y grata visualmente, con espacios Asegurar que el diseño debe estar evaluado constantemente por usuarios con el fin de corregir errores en la marcha. Determinar un balance entre lo que puede ofrecer el cliente y lo que quiere el usuario. 32 Arencibia J., Toll Y. y otros (212) Guía práctica de arquitectura de información para aplicaciones multimedia educativas. Disponible en http://www.nosolousabilidad.com/articulos/guia_ai.htm 46 Definir la estructura del sitio, la topología de red, la navegación, las opciones de desplazamiento entre páginas. Documentar la estructuración para tener un modelo de referencia sustentable, elaborar índices, mapas del sitio, aplicar metadatos a cada página, clasificar contenidos Respecto de los contenidos se aconseja seguir el diseño piramidal situando la parte importante del documento al principio.33 4.3.2. Vulnerabilidades encontradas en esta etapa: Teniendo en cuenta los paso a seguir se deben tener en cuenta las siguientes temas para minimizar los riesgos: Cliente o usuario insatisfecho, no encuentra la información, no está acorde con los requerimientos. Estructura no está acorde con la jerarquía. Página con información innecesaria. Programas, aplicaciones o software gratuito con deficiencias en seguridad. 4.3.3. Prevención: En esta etapa es importante tener en cuenta estos pasos para evitar malos entendidos en el futuro de la aplicación. 34 33 Fuzi C. (2013) Metodología ágil para el diseño de aplicaciones multimedia de dispositivos móviles. Disponible en: http://es.slideshare.net/cristopherf/metodologia-agil-para-el-diseo-de-aplicacionesmultimedias-moviles 34 Ibid Pag 16 47 Interfaz amigable. El cliente no debe dar más de 4 clic para encontrar la información. Página con la información necesaria. Compra de software garantizado y recomendable por su trayectoria. Validaciones y monitoreo por parte del cliente y de los usuarios durante la ejecución del proyecto. 4.4. ETAPA DE CODIFICACIÓN Dado que es la etapa en la que se presentan mayores vulnerabilidades, es la requiere mayor profundidad y mayor cuidado en el desarrollo de un proyecto web. En ella se debe tener claro el tipo de aplicación (nativa, bajo ambiente web o híbrida) y el lenguaje de programación en el que el programador realizará el proyecto. Para esta etapa, y luego de un análisis de las fuentes de información citadas, se tomó como base el “proyecto abierto de seguridad en aplicaciones Web” (OWASP, Open Web Aplication Security Proyect), liderado por la fundación OWASP. La Fundación OWASP es una entidad sin ánimo de lucro está tomada como referente dado que es un proyecto abierto y por su amplia aceptación por la comunidad de desarrolladores web, la fundación está integrada por personas con un vasto conocimiento en los sistemas y más en lo que se refiere al tema de seguridad informática, dedicado a la búsqueda y lucha contra las causas de software inseguro; tiene como fin crear conciencia acerca de la seguridad en la información, es libre, por tanto cualquier persona se puede afiliar y aportar conocimientos en pro del beneficio de los usuarios; Es una guía de consulta obligatoria para los desarrolladores de software35 Los documentos originales están creados en el idioma Inglés, pero ya han sido traducido algunos de ellos a varios idiomas incluyendo el español, Podemos 35 Página disponible en https://www.owasp.org 48 utilizar los documentos y herramientas que ofrecen, OWASP tiene catalogado los proyectos en categorías, los proyectos de desarrollo y los de documentación. En la ejecución de proyectos de aplicaciones web, OWASP ofrece una guía para la construcción de aplicaciones y servicios Web seguros. Está disponible en: https://www.owasp.org/images/b/b2/OWASP_Development_Guide_2.0.1_Spanish. pdf y está escrita en idioma español, para la fácil comprensión de los hispanohablantes. La página de OWASP Top 10-213 – Contiene los pasos a seguir para la programación de una aplicación Web segura; en esta página se ofrece un estudio detallado de los diez riesgos o vulnerabilidades más críticas en Aplicaciones Web, explicando que son, cómo prevenirlas, ejemplos y referencias bibliográficas como documentos de apoyo para los programadores documentarse. Esta página está Disponible en: https://www.owasp.org/images/5/5f/OWASP_Top_10__2013_Final_-_Espa%C3%B1ol.pdf El documento producido por el profesional en seguridad Mario Robles Tencio, experto en seguridad en Redes, ofrece la descripción de cada una de las vulnerabilidades de OWASP con ejemplos de la manera como se presentan penetraciones de código y las formas de prevenirlos. Estas instrucciones se encuentran en la página: https://www.owasp.org/images/f/ff/3.OWASP_Day_Costa_Rica_Mario.pdf El documento de SEGURIDAD EN APLICACIONES WEB de OWASP, escrito por el Ingeniero de sistemas Carlos Alberto Amaya Tarazona, expone, analiza y explica vulnerabilidades que afectan el ciclo de vida del desarrollo del software. Esta información se puede encontrar en la dirección http://docplayer.es/1851183Seguridad-en-aplicaciones-web.html 4.4.1. VULNERABILIDADES TOP 10 OWASP: Para tener una idea de lo que ofrece OWASP de acuerdo con estudios realizados, citaremos algunas de las vulnerabilidades más conocidas, frecuentes y peligrosas:36 36 OWASP Top 10 – 2013- Los diez riesgos más críticos en Aplicaciones Web, Disponible en: https://www.owasp.org/images/5/5f/OWASP_Top_10_-_2013_Final_-_Espa%C3%B1ol.pdf 49 4.4.1.1. A1: inyección: Es un ataque producido mediante inserción de código malicioso dentro de una consulta en SQL, OS y LDAP, aprovechando la vulnerabilidad en el nivel de validación de entradas de operaciones generalmente en una base de datos. Igualmente en la Página http://pressroom.hostalia.com/white-papers/ataquesinyeccion-sql, explica claramente cómo se produce un ataque por inyección y algunos consejos de cómo evitarlos. Como identificar si una aplicación es vulnerable. Verificando que se separe la información no confiable del comando o consulta, usando variables parametrizadas en todas las sentencias preparadas y procedimientos almacenados, evitando las consultas dinámicas. Utilizar herramientas de análisis de códigos. Análisis dinámico automatizado en donde se detecta el ataque mediante manejo de errores. Cómo prevenirlos. Utilizar una API (Application Programming Interface o reglas que las aplicaciones siguen para comunicarse entre ellas) segura que evite el uso de intérpretes o provea una interface parametrizada. Si la API no está disponible se deben codificar los caracteres especiales usando sintaxis de escape; En la página http://webdiis.unizar.es/~ftricas/Asignaturas/sei/Transparencias/sipractica6.pdf, se encuentra una práctica que ofrece información acerca de la validación de datos de entrada de las aplicaciones y la forma de sanearlos adecuadamente; en esta misma dirección, en la página 4, se encuentra las vulnerabilidades de desbordamiento de memoria (buffer 50 overlow) y la página 5 ofrece pruebas con la biblioteca criptográfica de Java y su correcto uso. Validación de entradas positivas o lista blanca, estas ESAPI OWASP, ofrece librerías de rutinas de validación positiva. Ejemplos de ataques: muestra algunos ejemplos de códigos en los que se presentan los ataques por inyección. Ofrece páginas de referencias en donde se entregan las diferentes formas de ataques y la manera de prevenirlos como los que se muestran en las siguientes páginas: En esta página, explican de que se trata esta vulnerabilidad, cómo se realiza, actividades y ejemplos, factores de riesgos, formas de combatirlos etc. https://www.owasp.org/index.php/SQL_Injection Trucos para la prevención del ataque de Inyección, disponible en la página: https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet Trucos de parametrización de consultas SQL, en esta dirección se muestran algunos ejemplos de cómo construir consultas con parámetros con el fin de evitar la inyección de SQL en la construcción de consultas de base: https://www.owasp.org/index.php/Query_Parameterization_Cheat_Sheet Otros factores de riesgo como ataques a entidades externas XML contra una aplicación con entrada XML, algunos ejemplos https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Processing Ofrece igualmente algunas páginas externas confiables en donde se muestran algunos ejemplos de inyección de comandos como: https://cwe.mitre.org/data/definitions/77.html 51 4.4.1.2. A2: Pérdida de autenticación y gestión de sesiones: Cuando las claves o información sensible no es protegida adecuadamente, el atacante aprovecha estas vulnerabilidades que generalmente son ofrecidas en el cierre de sesión, en la gestión de las contraseñas, en el tiempo de desconexión, en la función de recordar contraseña, para robar la información sensible, incluyendo un script en una página web que se ejecuta cuando el usuario la utiliza. Generalmente se presentan cuando se gestionan las contraseñas, cuando expiran las sesiones, cuando se recuperan valores automáticamente, cuando el usuario solicita recordar contraseña etc.37 En la página de OWASP también se encuentra información como: Identifica la vulnerabilidad si: Falta de protección en el almacenamiento de las credenciales de los usuarios cuando se utiliza hash o cifrado. Adivinación cuando las ID son débiles. Falta de expiración de credenciales, de sesiones o de tokens de autenticación. Información sensible enviada por canales no cifrados. Forma de prevenirlos; 37 Cumplir con los requisitos de autenticación y gestión de sesiones, para ello nos dirige hacia las páginas de OWASP que ofrecen este servicio. Tener una interfaz para desarrolladores y ofrece páginas con ejemplos de muestra. Ibid, pag. 8 52 Recomienda la necesidad de evitar vulnerabilidades de XSS. Se recomienda cerrar sesión (No cerrar ventanas). Eliminar las opciones de recordar contraseñas, pregunta secreta. Ingreso de identificadores no válidos. Ejemplos de escenarios de ataques y formas de prevenirlos. Las referencias ofrecidas en OWASP como la guía de autenticación ofrecida en la página https://www.owasp.org/index.php/Guide_to_Authentication entre otras. Trucos para la prevención de este ataque disponible en: https://www.owasp.org/index.php/Authentication_Cheat_Sheet_Espa%C3% B1ol Algunos pasos a seguir en la obtención de la clave segura en caso de olvido. https://www.owasp.org/index.php/Forgot_Password_Cheat_Sheet Trucos en el manejo de sesión. Disponible https://www.owasp.org/index.php/Session_Management_Cheat_Sheet Diferentes pruebas para la autenticación verificando la identidad digital con sus ejemplos correspondientes. Disponible en: https://www.owasp.org/index.php/Testing_for_authentication Y algunas páginas externas que también ofrecen ejemplos y manera de corregirlos además de la prevención de este ataque, disponible en: https://cwe.mitre.org/data/definitions/287.html 53 en: 4.4.1.3. A3: secuencia de comandos en sitios cruzados (xss) o cross site scripting (XSS): Generalmente utilizada mediante correos engañosos en los que los atacantes utilizan un buscador insertando un mensaje de alerta en JavaScript o mensaje en HTML, que hace que la víctima ejecute un comando dentro de su dirección web para luego robar las cookies y por consiguiente la identidad. 38 Identifica la vulnerabilidad si: No se verifica de forma adecuada en el momento de ingreso, la entrada de datos por los usuarios. Las aplicaciones ofrecen páginas de salida utilizando intérpretes como JavaScript, ActiveX, Flash o Silverlight, dificultando la detección automática de las vulnerabilidades de XSS, sin embargo se podrían obviar aplicando técnicas de revisión de código y pruebas de penetración en forma manual. Forma de prevenirlos 38 Separar los datos no confiables basados en HTML del contenido activo del navegador, para ello OWASP ofrece algunos de trucos o “cheat Sheets” para aplicar las técnicas en las rutinas de programación de una aplicación WEB. En la siguiente página encontraremos las técnicas de prevención: https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_ Cheat_Sheet. Igualmente, se deben validar las entradas positivas o de lista blanca, o sea validar el largo, los caracteres, el formato y las reglas antes de aceptarlo como entrada. Recomienda utilizar bibliotecas de sanitización como AntiSamy para contenido en formato enriquecido https://www.owasp.org/index.php/Category:OWASP_AntiSamy_Project_.Ja va y el proyecto de sanitización de HTML en Java: https://www.owasp.org/index.php/OWASP_Java_HTML_Sanitizer_Project Ibid, pag. 9 54 Ejemplos de ataques y maneras de prevenirlos se puede encontrar en la página http://docplayer.es/1851183-Seguridad-en-aplicaciones-web.html Referencias o páginas web en donde se puede encontrar información al respecto. Autenticación cheat Sheets https://www.owasp.org/index.php/Authentication_Cheat_Sheet Prevención de trucos Cross-Site Request Forgery (CSRF) https://www.owasp.org/index.php/CrossSite_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet Trucos de almacenamiento criptográfico https://www.owasp.org/index.php/Cryptographic_Storage_Cheat_Sheet Trucos de protección de la Capa de transporte https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet Trucos de prevención de XSS (Cross Site Scripting) https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_ Cheat_Sheet Utilizar políticas de seguridad de contenido (CSP) para defender contra XSS, en: http://docplayer.es/7639096-Guia-de-seguridad-para-sistemas-deinformacion-basada-en-owasp.html 4.4.1.4. A4 – referencia directa insegura a objetos: Esta vulnerabilidad se da cuando los accesos a recursos no cuentan con el debido control y cualquier usuario puede manipular la información. Un desarrollador expone una referencia un objeto de implementación interno (fichero, base de datos o directorio) sin la debida protección.39 39 Ibid, pag 10 55 Identifica la vulnerabilidad si: se verifica que todas las referencias a objetos tienen las protecciones apropiadas, entre ellas verificar que el usuario tiene el permiso para acceder a un recurso específico, esto para referencias directas a recursos restringidos. En el caso de una referencia indirecta, se debe limitar los valores autorizados a un usuario. Cómo prevenirlos: Utilizando referencias indirectas por usuario o sesión, ESAPI de OWASP incluye relaciones secuenciales y aleatorias de referencias de acceso con el fin de que se eliminen las referencias directas a objetos. Otra manera de prevenirlo es comprobando el acceso mediante comprobación de control de acceso. Ejemplos de ataques y maneras de prevenirlos se puede encontrar en la página: http://docplayer.es/1851183-Seguridad-en-aplicaciones-web.html Referencias o páginas web en donde se puede encontrar información al respecto. Una página que entrega información acerca de esta vulnerabilidad, las debilidades, la seguridad aplicada, escenarios de ataques con ejemplos, https://www.owasp.org/index.php/Top_10_2013-A4Insecure_Direct_Object_References ESAPI DE OWASP, colección gratuita y abierta de los métodos de seguridad que un desarrollador debe saber para construir una aplicación web segura. Es una página en construcción, por ello, ofrece respuestas en el foro: https://www.owasp.org/index.php/ESAPI_Specification Algunas referencias de páginas externas (CWE Common Wwakness Enumeration), que ofrecen un ejemplo de ataque de referencia a un objeto directo. Disponible en: https://cwe.mitre.org/data/definitions/22.html 4.4.1.5. A5 – Configuración de seguridad incorrecta: Este ataque se presenta cuando se ha realizado mal la configuración en las aplicaciones, en los servidores, en las bases de datos o en el sistema operativo. Generalmente se producen 56 cuando existen páginas sin uso, fallas sin el parche correspondiente, archivos y directorios sin protección.40 Identificar la vulnerabilidad: verificar que las aplicaciones cuenten con actualizaciones, vigilar que no estén habilitados características innecesarias como puertos, servicios, páginas, cuentas etc., vigilara el cambio de contraseña periódico, configurar las librerías a valores seguros. Como prevenirlos: Proceso de fortalecimiento para un entorno asegurado. Los entornos de desarrollo, QA y Producción deben ser igualmente configurados con diferentes claves en cada entorno. Mantener actualizaciones y parches, incluyendo las librerías de código. Fuerte arquitectura de aplicación para una separación segura entre los componentes. Ayudarse con aplicaciones que realicen escaneos y auditorias periódicas que detecten los fallos. Ejemplos de escenarios de este ataque. Referencias que nos preparan ante esta vulnerabilidad y la forma de protegerse. 40 Guía de configuración de seguridad OWASP en donde se evidencian los errores y las soluciones para evitar errores de configuración. Disponible en: https://www.owasp.org/index.php?title=OWASP_Secure_Configuration_Gui de&setlang=es Ibid, pag 11 57 Guía para la revisión de código para ciertas vulnerabilidades y entrega información sobre el riesgo asociado con el código inseguro. Disponible en: https://www.owasp.org/images/2/2e/OWASP_Code_Review_GuideV1_1.pdf Información acerca de las pentesting aplicado a los códigos y los errores producidos y su correspondiente explicación. Disponible en: https://www.owasp.org/index.php/Testing_for_Error_Code_(OTG-ERR-001) Definición de cuatro niveles de verificación de seguridad a nivel de aplicación con sus requisitos de verificación. Disponible en: ttps://www.owasp.org/images/4/4e/OWASP_ASVS_2009_Web_App_Std_R elease.pdf Algunas páginas externas como una Guía de configuración de seguridad CIS, disponible en: https://benchmarks.cisecurity.org/downloads/audit-tools/ 4.4.1.6. A6 – Exposición de datos sensibles: Ocurre cuando el atacante puede acceder fácilmente a los datos sensibles almacenados en la aplicación o cuando se envían datos a través del correo. Esto generalmente ocurre con fraude en tarjetas de crédito o robos de identidad. 41 Identificar la vulnerabilidad: Una vez se tienen identificados los datos sensibles como contraseñas, números de tarjetas de crédito información personal, se identifica la vulnerabilidad si estos datos se almacenan en texto claro, o son trasmitidos por internet textualmente, o se generan claves débiles. Como prevenirlos: 41 Estar atento ante las posibles amenazas tanto al interior de la compañía como en la parte externa de ella. No almacenar datos sensibles innecesariamente. Ibid, pag 12 58 En caso de almacenar información sensible, asegurarse de cifrarlos. Asegurarse de aplicar claves fuertes con todas las especificaciones. Deshabilitar el autocompletado y el almacenamiento en cache de las páginas que contengan datos sensibles. Ejemplos de escenarios de este ataque. Referencias que nos preparan ante esta vulnerabilidad y la forma de protegerse. Este documento ofrece verificación estándar de seguridad en las aplicaciones y las diferentes maneras de comprobar si se cumplen con los requisitos de resguardo de información sensible. Disponible en: https://help.totaralearning.com/pages/viewpage.action?pageId=6359857 Trucos para almacenamiento criptográfico. Disponible en: https://www.owasp.org/index.php/Cryptographic_Storage_Cheat_Sheet Trucos para almacenamiento de contraseñas: Disponible https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet Truco para la protección en la capa de transporte. Disponible en: https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet Pruebas para SSL débil, TLS sistemas de cifrado y protección en a capa de transporte. Disponible en: https://www.owasp.org/index.php/Testing_for_Weak_SSL/TLS_Ciphers,_Ins ufficient_Transport_Layer_Protection_(OTG-CRYPST-001) 59 en: Algunas referencias externas como: CWE Common Weakness Enumeration: cuestiones de cifrado, problemas criptográficos. Disponible en https://cwe.mitre.org/data/definitions/310.html 4.4.1.7. A7 – Ausencia de control de acceso a funciones: Esta vulnerabilidad se da por la falta de validación en el procesamiento de URLs con las que se puede invocar recursos sin los derechos apropiados o páginas ocultas.42 Identificar la vulnerabilidad: Verificar cada funcionalidad de la aplicación. Verifica que el usuario muestre la navegación en lugares autorizados? Vigila la autenticación del servidor? Realiza pruebas de proxies con un rol privilegiado y luego con un rol menos privilegiado? Revisa el control de acceso en el código? Como prevenirlos: 42 Tener un módulo de autorización invocado desde las funciones del negocio que tengan varios componentes externos al código de la aplicación. Permisos con auditorias y actualizaciones frecuentes e implementarlos directamente en el código sin utilizar parametrizaciones. El acceso debe ser restringido y negar el acceso por defecto con permisos específico a cada funcionalidad. Ibid, pag 13 60 Ejemplos de escenarios de este ataque. Referencias que nos preparan ante esta vulnerabilidad y la forma de protegerse. Esta página entregada por OWASP, da cuenta de esta vulnerabilidad, explicando los motivos por el cual se da, la forma de protegerse y algunos ejemplos pueden encontrarse en esta página que está disponible en: https://www.owasp.org/index.php/Top_10_2007Failure_to_Restrict_URL_Access. La interfaz AccessController ofrecida por ESAPI, define un conjunto de métodos que se pueden utilizar en aplicaciones para hacer cumplir el control de acceso, además de algunos ejemplos. Esta página está disponible en https://owasp-esapijava.googlecode.com/svn/trunk_doc/latest/org/owasp/esapi/AccessControlle r.html. En esta página se ofrece una guía con la que se asegura que el usuario autenticado tiene los privilegios adecuados para acceder a los recursos de acuerdo con el rol correspondiente. Disponible en: https://www.owasp.org/index.php/Guide_to_Authorization Algunas referencias externas como: CWE Common Weakness Enumeration: respecto de autorizaciones incorrectas o inadecuadas, ejemplos, formas de corrección, esta página está disponible en: https://cwe.mitre.org/data/definitions/285.html 4.4.1.8. A8 - Falsificación de peticiones en sitios cruzados (CSRF) Un ataque CSRF obliga al navegador de una víctima autenticada a enviar una petición HTTP falsificado, incluyendo la sesión del usuario y cualquier otra información de autenticación incluida automáticamente, a una aplicación web vulnerable. Esto permite al atacante forzar al navegador de la víctima para generar pedidos que la aplicación vulnerable piensa son peticiones legítimas provenientes de la víctima.” 43 43 Ibid, pag. 14 61 Identificar la vulnerabilidad: Verificar cada funcionalidad de la aplicación. Verificar la ausencia de token impredecible en cada enlace y formulario solicitando al usuario que demuestre su intención de enviar la solicitud mediante pruebas como un capcha. Verificar los enlaces y formularios que invoquen funciones que permitan cambios de estados. Verificar operaciones de múltiples pasos, estos se pueden falsificar mediante uso de etiquetas o código Javascript. Se ofrece la herramienta CSRF Tester de OWASP que ayudan a demostrar los daños y peligros de fallos de este tipo. Como prevenirlos: Incluir un token no predecible en cada solicitud HTTP únicos por cada sesión del usuario. Incluir el token en un campo oculto para que el valor se envíe en el cuerpo de la solicitud HTTP. El token puede ser incluido en la propia URL o un parámetro de la misma (esta opción ofrece riesgo). Requerir la autenticación doble mediante CAPCHA. Ejemplos de escenarios de este ataque. Algunas referencias que nos preparan ante esta vulnerabilidad y la forma de protegerse. 62 Trucos para la prevención de falsificación de peticiones en sitios cruzados (csrf) y su explicación de porqué es importante prevenirlo o atacarlo, las técnicas de uso, recomendaciones y algunos ejemplos etc, disponible en: https://www.owasp.org/index.php/CrossSite_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet Biblioteca que implementa una variante de patrón de contadores que mitigan el riesgo de Cross-Site, disponible en la página de OWASP https://www.owasp.org/index.php/Category:OWASP_CSRFGuard_Project Interfaz HTTPUtilities es una colección de métodos que dan seguridad a las solicitudes HTTP, las respuestas, las sesiones, las cookies, los encabezados etc. La página está disponible en: https://owasp-esapijava.googlecode.com/svn/trunk_doc/latest/org/owasp/esapi/HTTPUtilities.ht ml StackExchange es una comunidad de programadores que se ayudan unos a otros con el fin de encontrar soluciones a ataques a aplicaciones web, y se encuentra información acerca de CSRF (Cross-Site solicitud de falsificación) preguntas y respuestas. Esta página está disponible en: http://stackoverflow.com/questions/22555110/csrf-cross-site-requestforgery-protection-in-spring-mvc Algunas referencias externas como CWE Common Weakness Enumeration en donde se explica cómo se realiza el ataque, las consecuencias, los métodos de detección y algunos ejemplos demostrativos. Disponible en: https://cwe.mitre.org/data/definitions/352.html 4.4.1.9. A9 - Utilización de componentes con vulnerabilidades conocida: Es una vulnerabilidad a través de la cual el atacante identifica o conoce mediante escaneos o análisis manuales, los componentes débiles de una aplicación web como los frameworks y ejecuta el ataque.44 Identificar la vulnerabilidad: Esta vulnerabilidad es difícil de identificar dadas las versiones de los componentes, solo se puede verificar buscando en las bases 44 Ibid Pag. 15 63 de datos de sitios con CVE (Common Vulnerabilities and Exposures ) y NVD (National Vulnerability Database), si existe ya que cada referencia de vulnerabilidad tiene un número de identificación único que detalla en que consiste la vulnerabilidad, qué versiones de software están afectadas y la posible solución, además de la configuración de los equipos para prevenirlo 45. Como prevenirlos: Identificar las versiones que están usando los componentes, incluyendo dependencias, en este caso podría no usar componentes sin codificar. Revisar la seguridad del componente en bases de datos públicas CVE y NVD, lista de corros del proyecto y lista de correo de seguridad. Mantener actualizados los componentes. Establecer políticas de seguridad, pasar test de seguridad, licencias aceptables etc. Agregar capas de seguridad alrededor del componente para deshabilitar funcionalidades sin utilizar. Ejemplos de escenarios de este ataque. Algunas referencias que nos preparan ante esta vulnerabilidad y la forma de protegerse. La página Redes@Zone, ofrece algunos manuales para proteger los sistemas y realizar auditorías, además de ejemplos y en algunos casos videos. Disponible en la página http://www.redeszone.net/seguridadinformatica/ 45 Página consultadas el 5 de diciembre de 2015, disponible en: http://www.redeszone.net/2015/06/20/labase-de-datos-nacional-de-vulnerabilidades-de-estados-unidos-es-vulnerable-a-un-cross-site-scripting/ 64 Dependency-Check es una utilidad que identifica las dependencias y los controles del proyecto, soportan los proyectos de Java , .NET , Ruby , Node.js , y Python; Además, el soporte limitado para proyectos de C / C ++ está disponible para proyectos usando CMake o autoconf. Disponible en https://www.google.com.co/search?q=traductor&oq=trad&aqs=chrome.0.69i 59j69i57j0l4.3548j0j7&sourceid=chrome&ie=UTF-8 OWASP Good Component Practices Project, es un proyecto con las mejores prácticas para la gestión de la vulnerabilidad Componente, dentro de las aplicaciones empresariales como las puertas de enlace, procedencia, integración dentro del entorno del desarrollo etc. Disponible en: https://www.owasp.org/index.php/OWASP_Good_Component_Practices_Pr oject Reportajes e investigaciones acerca del uso de código abierto: http://www.pcworld.com.mx/Articulos/32188.htm http://cioperu.pe/articulo/16747/es-seguro-el-software-de-codigo-abierto/ https://es.opensuse.org/Software_libre_y_de_c%C3%B3digo_abierto Referencias externas como CVE (Common Vulnerabilities and Exposures) diccionario de vulnerabilidades conocidas de la seguridad de la información y la comunicación. Disponible en https://cve.mitre.org/ Lista de vulnerabilidades corregidas de Ruby on Rails con la recomendaciones de las versiones a actualizar, disponible en: http://muyseguridad.net/2016/02/02/vulnerabilidades-ruby-on-rails-saltarseseguridad/ 4.4.1.10. A10 – Redirecciones y reenvíos no validados: Vulnerabilidad producida por la necesidad propia de la aplicación de redireccionar al usuario a una página no segura, el atacante crea enlaces para que la víctima haga clic que 65 luego son llevados a una aplicación de confianza y allí los atacantes instalan el código malicioso.46 Identificar la vulnerabilidad: Revisar el código para detectar redirecciones o reenvíos (llamados transferencias en .NET), identificar si la URL se incluye en el valor de un parámetro y si está validada con una lista blanca. Modificar la URL de destino en caso de redirección de códigos de respuesta DTTP 300-307, típicamente 302, observando los parámetros antes de la redirección si son una URL de destino o un recurso de la misma. Revisar si cada parámetro forma parte de una redirección o un reenvío de una URL de destino y probar que hace. Como prevenirlos: Evitar el uso de redirecciones y reenvíos No involucrar parámetros manipulables por el usuario para definir el destino. Si se hace necesario utilizar parámetros de destino, asegúrese de que el valor suministrado sea válido y autorizado para el usuario. Se recomienda utilizar parámetros de destino con valor de mapeo, se puede utilizar ESAPI para asegurarse que los destinos redirigidos sean seguros Ejemplos de escenarios de este ataque. 46 Ibid Pag. 16 66 Referencias que nos preparan ante esta vulnerabilidad y la forma de protegerse. La página de Mundo Informático, está dedicada a la información acerca de las vulnerabilidades y la seguridad informática, explica en forma clara con ejemplos de cómo se produciría este ataque. Disponible en: https://infow.wordpress.com/2011/09/15/owasp-top-ten-10-redirecciones-yreenvios-no-validados/ OWASP ofrece algunos trucos sobre redirecciones sin validar, explicando en que consiste, con ejemplos de cómo se puede redirigir un usuario a otra página sin la opción de clic en varios lenguajes de programación. Paquete de información de OWASP ESAPI, con la forma de cómo construir un código con la respuesta de métodos inseguros en la API de HttpServletResponse con versiones seguras entre otras. Disponible en: https://owasp-esapijava.googlecode.com/svn/trunk_doc/latest/org/owasp/esapi/filters/SecurityW rapperResponse.html Algunas referencias externas como CWE Common Weakness Enumeration en donde se explica cómo enterarse de si una URL de redirección a un sitio no es de confianza con algunos ejemplos. Disponible en: https://cwe.mitre.org/data/definitions/601.html. 4.5. OTRAS PÁGINAS ÚTILES PARA LA PROGRAMACIÓN SEGURA DE APLICACIONES WEB Algunos de ellos son: Una guía para construir aplicaciones y servicios Web seguros. Documento en español en donde se detalla la seguridad en aplicaciones Web, utilizando diferentes programas como J2EE, ASP, .NE, PHP., disponible en: https://www.owasp.org/images/b/b2/OWASP_Development_Guide_2.0.1_Spa nish.pdf 67 Application Security Guide For CISOs. Documento en inglés que trata sobre ayudar a los jefes de los servicios informáticos, a gestionar los programas de seguridad de las aplicaciones. Disponible en: https://www.owasp.org/images/d/d6/Owasp-ciso-guide.pdf OWASP Cheat Sheet: Trucos para identificar las vulnerabilidades y su defensa Disponible en: https://translate.google.com.co/translate?hl=es419&sl=en&u=https://www.owasp.org/index.php/OWASP_Top_Ten_Cheat_Sh eet&prev=search OWASP Categoría de las Vulnerabilidades: Lista de las vulnerabilidades, que son, como se utilizan y como combatirlas. Disponible en: https://translate.googleusercontent.com/translate_c?depth=1&hl=es&prev=sea rch&rurl=translate.google.com.co&sl=en&u=https://www.owasp.org/index.php/ Category:Vulnerability&usg=ALkJrhiPJIJCJW34BetOpiykG70P5dMKVw Guía de pruebas OWASP: Muestra los procedimientos y herramientas para probar la seguridad de las aplicaciones y está dedicada para desarrolladores de software, Testers de software y especialista de seguridad especialmente. Disponible en: https://www.owasp.org/images/8/80/Gu%C3%ADa_de_pruebas_de_OWASP_ ver_3.0.pdf Guía de revisión de código OWASPO: ofrece verificación de código de las aplicaciones, aún no está publicado en español, solo en inglés. Disponible en: https://www.owasp.org/images/2/2e/OWASP_Code_Review_Guide-V1_1.pdf Lista de preguntas frecuentes con sus respuestas (en Inglés), disponible en: https://www.owasp.org/index.php/OWASP_AppSec_FAQ OWASP Top 10-213 – Los diez riesgos o vulnerabilidades más críticas en Aplicaciones Web, Es un documento en donde se relacionan los riesgos y vulnerabilidades más críticas de las aplicaciones Web, explicando que son, como prevenirlas, ejemplos y referencias bibliográficas para documentarse. Disponible en: https://www.owasp.org/images/5/5f/OWASP_Top_10__2013_Final_-_Espa%C3%B1ol.pdf 68 5. HERRAMIENTAS QUE PERMITEN ENCONTRAR VULNERABILIDADES Y COMPROBAR CÓDIGO Dada la importancia que tiene la seguridad cuando se está programando para la realización de una aplicación Web, se hace necesaria la implementación de herramientas que nos permiten visualizar de manera más acertada las vulnerabilidades a que se está expuesto. 5.1. HERRAMIENTAS DE ESCANEO DE VULNERABILIDADES: Acunetix: Herramienta que permite detectar más de 3000 tipos de vulnerabilidades con alertas según su gravedad. Esto hace de esta herramienta una de las mejores de este estilo. AppScan de IBM: Ofrece prueba de seguridad de aplicaciones estáticas y dinámicas dentro del ciclo de vida de las aplicaciones, genera informes y realiza recomendaciones. Burp Suite de Free Edition: Herramienta utilizada para descubrir mediante escaneo, vulnerabilidades de manera ágil y eficaz. Grabber: Escáner de aplicaciones web portátil, se utiliza solo para aplicaciones pequeña, no es muy rápido, es para uso simple. N-Stalker, por N-Stalker: Escáner de aplicaciones web, ofrece edición free, su tecnología está orientada a componentes de patente pendiente está dirigida a un conjunto restringido de web libre de evaluación de seguridad, destinada a vigilar la seguridad de servidores web. Nessus por Tenable Network Security: Solución usada para las evaluaciones de vulnerabilidad, configuración y compatibilidad, previene ataques a la red mediante la identificación de vulnerabilidades y problemas de configuración que los delincuentes informáticos utilizan para ingresar a la red 69 5.2. HERRAMIENTAS DE ANALISIS DE CÓDIGO: Checkstyle: Ayuda a analizar y a escribir código y encuentra problemas de diseño de clases, código duplicado y patrones de errores comunes, posee plugins que hace que sea usado desde cualquier IDE como ECLIPSE (entre otros), resaltando sobre el código los errores encontrados por el analizador 47. Findbugs: Herramienta sencilla de código abierto que permite encontrar errores en Java- Es una aplicación desarrollada por la Universidad de Maryland, basada en el concepto de patrones de error, es de código abierto, utiliza análisis estático para identificar tipos de errores potenciales 48. PMD: Analizador de código fuente, encuentra errores de programación como las variables utilizadas, bloques catch vacíos, creación de objetos innecesarios. Es compatible con Java, Java Script, PL SQL, Apache Velocity, XML, XSL etc. 49 JDepend: Analizador de códigos que genera métricas de calidad ara el diseño de paquetes Java, en términos de su extensibilidad, reutilización y facilidad de mantenimiento para gestionar dependencias de paquetes 50. 47 Disponible en: http://checkstyle.sourceforge.net/ Disponible en http://findbugs.sourceforge.net/ 49 Disponible en https://pmd.github.io/ 50 Disponible en http://clarkware.com/software/JDepend.html 48 70 6. TECNOLOGÍA A IMPLEMENTAR - ACUNETIX WEB VULNERABILITY SCANNER Con la importancia que tiene la tecnología y la implementación de las diferentes herramientas que nos proporciona la WEB, los delincuentes informáticos están al acecho buscando en los sistemas quien tiene más descuidada la información, en términos de seguridad, para ingresar y robar datos sensibles como claves, información de tarjetas de crédito o bases de datos de clientes, todo con fines lucrativos.51 La web, igualmente ofrece diferentes herramientas que permiten si no tener a salvo la información, por lo menos minimizar los riesgos a que se está expuesto, para escanear las vulnerabilidades de las aplicaciones en la WEB, se tendrá en cuenta la herramienta ACUNETIX WEB VULNERABILITY SCANNER 6.1. QUE ES Y PARA QUÉ SIRVE ACUNETIX WEB VULNERABILITY SCANNER Creada en 1997 con el fin de realizar análisis de sitios WEB y detección de vulnerabilidades, es una herramienta que opera como un vigilante de seguridad virtual que realiza escaneo de las aplicaciones web incluyendo las integradas, servidores web y servidores perimetrales, su eficacia permite detectar vulnerabilidades que aparentemente no son detectadas por otras herramientas mediante el motor de análisis inteligente, demás entrega informes de auditoría muy confiables. 6.2. QUÉ DETECCIONES REALIZA Son muchas las vulnerabilidades que detecta, entre otras tenemos: Associada con OpenVAS (Open Vulnerability Assessment System) El escáner de seguridad, es una suite de software que integra servicios y herramientas utilizadas para el escaneo y gestión de vulnerabilidades de seguridad de sistemas informáticos. 51 Consulta realizada el 25 de octubre de 2015, ADM TOOLS. Acunetix Web Vulnerability Scaner. Disponible en: http://www.adm-tools.com/portfolio/acunetixwebvulnerabilityscanner/ 71 Escanea vulnerabilidades a nivel de red. Detecta vulnerabilidades de SQL injection en la que los hacker modifican comandos SQL para ingresar las bases de datos. Cross Site Scripting en la que los atacantes realizan scripts maliciosos en el navegador del visitante. Ataques de CRLF Injection que se realiza cuando un delincuente informático es capaz de inyectar datos en una petición a un servidor. Code execution: es una vulnerabilidad muy peligrosa ya que los delincuentes ejecutan comandos del servidor remotamente. Directory traversal, se realizan cuando no hay seguridad respecto de la validación de un usuario y acceden al directorio padre. Remote File inclusión, Se da solamente en páginas dinámicas en PHP que contienen la función include(), dejando enlazar archivos remotos de otros servidores. Autenticación, consiste en interceptar una sesión de la víctima y esperar a que se identifique para robar su datos 6.3. APLICACIÓN DE LA HERRAMIENT ACUNETIX EN UNA PÁGINA WEB Con el fin de obtener una muestra real de la aplicación de la herramienta ACUNETIX a una página web real, se escogió al azar una página pequeña que pudiera mostrar las vulnerabilidades. 72 Figura 5. Aplicación de la herramienta ACUNETX a una página Fuente: Construcción propia Inicialmente muestra el nivel de vulnerabilidad Figura 6. Nivel de vulnerabilidades encontradas Fuente: Construcción propia 73 ALTO: 0 MEDIO: 56 BAJO: 2 INFORMACIÓN: 37 Igualmente se encuentra la siguiente información. Lista de directorios html desde afuera protección CSRF Código fuente divulgación Credenciales de usuario se envían en texto claro Cookie de sesión sin httponly pabellón conjunto Enlaces rotos Figura 7: Explicación de las vulnerabilidades encontradas Fuente: Construcción propia Ofrece información de la vulnerabilidad. Entre otras muestra la siguiente información: Cuando se introduce un nuevo nombre y contraseña en un formulario y se envía el formulario, el navegador le preguntará si la contraseña debe ser guardado. A partir de entonces cuando se muestra el formulario, el nombre y la contraseña se 74 rellenan de forma automática o se completan como se introduce el nombre. Un atacante con acceso local podría obtener la contraseña sin cifrar de la caché del navegador. Esta vulnerabilidad afecta a /chat/operator/login.php. Descubierto por: Crawler. Detalles de ataque Tipo de contraseña de entrada llamado contraseña del formulario denominado smallLogin con la acción /chat/operator/login.php ha permitido autocompletado. Cabeceras HTTP Ver Petición GET /chat/operator/login.php HTTP / 1.1 Pragma: no-cache Referer: http://www.expresopalmira.com.co/chat/operator/index.php Acunetix-Aspecto: habilitado Acunetix-Aspecto-Contraseña: 082119f75623eb7abd7bf357698ff66c Acunetix-Aspecto-Consultas: filelist; aspectalerts Cookie: PHPSESSID = bf16m8s0qvqk0oe8epd5keh4v2; WEBIM_UserID = 1447379402.425132558182; webim_locale = sp Anfitrión: www.expresopalmira.com.co Conexión: Keep-alive Accept-Encoding: gzip, desinfla User-Agent: Mozilla / 5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident / 5.0) Aceptar: */* Respuesta HTTP / 1.1 200 OK X-Powered-By: PHP / 4.5.42 Expira: Lun, 26 de julio 1997 05:00:00 GMT Cache-Control: no-store, no-cache, que hay que revalidar Pragma: no-cache Content-Type: text / html; charset = UTF-8 Content-Length: 3137 Vary: Accept-Encoding Fecha: viernes, 13 de noviembre 2015 01:50:14 GMT Accept-Ranges: bytes Servidor: LiteSpeed Estricto-Transporte-Security: max-age = 31536000 Connection: close Ver respuesta HTML Lanzar el ataque con alerta de HTTP Editor Retest (s) Tomar nota de esta alerta como un falso positivo El impacto de esta vulnerabilidad 75 Posible divulgación de información sensible Cómo corregir esta vulnerabilidad El autocompletado contraseña debe ser desactivada en aplicaciones sensibles. Para desactivar la función de autocompletar, usted puede usar un código similar al siguiente: <INPUT TYPE = Autocompletar "contraseña" = "off"> Tipo de contraseña de entrada con autocompletado habilitado Descripción de la vulnerabilidad Cuando se introduce un nuevo nombre y contraseña en un formulario y se envía el formulario, el navegador le preguntará si la contraseña debe ser guardado. A partir de entonces cuando se muestra el formulario, el nombre y la contraseña se rellenan de forma automática o se completan como se introduce el nombre. Un atacante con acceso local podría obtener la contraseña sin cifrar de la caché del navegador. Esta vulnerabilidad afecta a /chat/operator/login.php. Descubierto por: Crawler. Detalles de ataque Tipo de contraseña de entrada llamado contraseña del formulario denominado LoginForm con la acción /chat/operator/login.php ha permitido autocompletado. Cabeceras HTTP Ver Petición GET /chat/operator/login.php HTTP / 1.1 Pragma: no-cache Referer: http://www.expresopalmira.com.co/chat/operator/index.php Acunetix-Aspecto: habilitado Acunetix-Aspecto-Contraseña: 082119f75623eb7abd7bf357698ff66c Acunetix-Aspecto-Consultas: filelist; aspectalerts Cookie: PHPSESSID = bf16m8s0qvqk0oe8epd5keh4v2; WEBIM_UserID = 1447379402.425132558182; webim_locale = sp Anfitrión: www.expresopalmira.com.co Conexión: Keep-alive Accept-Encoding: gzip, desinfla User-Agent: Mozilla / 5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident / 5.0) Aceptar: */* Respuesta HTTP / 1.1 200 OK X-Powered-By: PHP / 4.5.42 Expira: Lun, 26 de julio 1997 05:00:00 GMT Cache-Control: no-store, no-cache, que hay que revalidar Pragma: no-cache 76 Content-Type: text / html; charset = UTF-8 Content-Length: 3137 Vary: Accept-Encoding Fecha: viernes, 13 de noviembre 2015 01:50:14 GMT Accept-Ranges: bytes Servidor: LiteSpeed Estricto-Transporte-Security: max-age = 31536000 Connection: close Ver respuesta HTML Lanzar el ataque con alerta de HTTP Editor Retest (s) Tomar nota de esta alerta como un falso positivo El impacto de esta vulnerabilidad Posible divulgación de información sensible Cómo corregir esta vulnerabilidad El autocompletado contraseña debe ser desactivada en aplicaciones sensibles. Para desactivar la función de autocompletar, usted puede usar un código similar al siguiente: <INPUT TYPE = Autocompletar "contraseña" = "off"> 77 7. PÁGINA WEB DEL DESARROLLO DEL PROYECTO. Dado que para los estudiantes es más cómodo ver una página Web, se ha creado una página en la que puedan consultar la guía. http://liliseguridadinformatica.webnode.es/ 78 8. CONCLUSIONES Y RECOMENDACIONES El desarrollo del proyecto permitió Identificar las principales vulnerabilidades en cada fase del ciclo de desarrollo de software y los posibles ataques sistematizados en el sitio web del proyecto y que condensa las mejores prácticas de seguridad para el desarrollo de aplicaciones WEB. La guía logró el objetivo de identificar las mejores prácticas con las herramientas de prueba asociadas, para la construcción de aplicaciones Web seguras mediante la consulta de estándares de la industria. Mediante la utilización de la guía en los procesos de formación de programadores de la Media Técnica se pueden crear en los estudiantes hábitos de desarrollo de aplicaciones web seguras en cada una de las etapas del ciclo de vida del desarrollo del software El impacto que tiene la Tecnología de la información y la comunicación TIC en el funcionamiento y éxito de las compañías, la influencia de los mismas en la vida de las personas de común, y la proliferación de aparatos tecnológicos con funcionalidades cada vez más sofisticadas, ha hecho que día a día se incremente también la demanda de profesionales en los sistemas y más específicamente los profesionales en desarrollo de software, por ello las Instituciones educativas en general y más específicamente las instituciones educativas oficiales del Municipio de Medellín apuntan al crecimiento de la Media técnica del desarrollo del software. El desarrollo de éste proyecto está propuesto a ofrecer a los estudiantes de la media técnica de las instituciones educativas, una guía que les permita aplicar desde el primer momento de su aprendizaje, las reglas para hacer aplicaciones seguras con el mínimo de riesgo y con el máximo de seguridad. El tema es de permanente desarrollo por lo cual en el documento se presentan conceptos con invitaciones a mantenerse actualizado mediante la lectura de documentos de sitios web reconocidos, (con el respaldo de universidades o compañías reconocidas) con propósitos específicos para la creación y desarrollo de una aplicación web segura. 79 9. BIBLIOGRAFÍA Chile, G. d. (2008). Guía Digital. Obtenido de Guía Web: http://www.guiadigital.gob.cl/guia-web Digital, G. (febrero de 2009). Gobierno de Costa Rica. Obtenido de Guia para el desarrollo de sitios Web 2.0: http://www.academia.edu/5852253/Gobierno_de_Gu%C3%ADa_para_el_D esarrollo_de_Sitios_Web_2.0_SI_IT_TI_IO_OS_S_W_WE_EB_B_2_2._.0_ 0_Tabla_de_Contenidos FEAPS, C. (octubre de 2007). Calidad FEAPS. Obtenido de Buenas Prácticas FEAPS: http://www.feapsmurcia.org/feaps/FeapsDocumentos.NSF/08db27d07184b e50c125746400284778/84163cd187586d72c1256ffd003e699f/$FILE/quees BBPP.pdf Lujan, Erika. Programación de aplicaciones WEB: Historia, principios básicos y clientes WEB. [En línea]. https://books.google.es/books?hlties&lrti&idtir9CqDYh2loC&oitifnd&pgtiPR3&dqtiCARACTERISTICAS+DE+LAS+APLICACIONES+ WEB&otstiMizOSh4QCX&sigtig4-zTPoCphwq3Wtdp_gGgxfZ5o#vtionepage&qtiCARACTERISTICAS%20DE%20LAS%20APLIC ACIONES%20WEB&ftifalse [Citado en 27 de abril de 2015] Cáceres, P., Marcos, E. Procesos ágiles para el desarrollo de aplicaciones web. [En línea]. https://scholar.google.es/scholar?hlties&qtiCARACTERISTICAS+DE+LAS+ APLICACIONES+WEB&btnGti&lrti [Citado en 27 de abril de 2015] De Benito, B. Herramientas para la creación, distribución y gestión de cursos a través de Internet [Citado en 27 de abril de 2015]. [En línea]. http://edutec.rediris.es/Revelec2/Revelec12/deBenito.html 80 López, Y., Ampuero, M., Infante, A. Formación de roles y buenas prácticas en el trabajo por la calidad de un ingeniero informático. [En línea]. http://www.scielo.cl/scielo.php?pidtiS071833052011000300008&scripttisci_arttext&tlngtien [Citado en 27 de abril de 2015] Guía para el desarrollo de sitios Web – Gobierno de Chile. (2007) Recuperado de: http://www.guiadigital.gob.cl/guiaweb_old/guia-v2/ Guía para el desarrollo de sitios Web – Gobierno de Costa Rica. Recuperado de internet: http://www.gobiernofacil.go.cr/egob/gobiernodigital/documentos/Guia%20para%20el%20Desarrollo%20de %20Sitios%20Web%202.0%20-%20Gobierno%20de%20Costa%20Rica.pdf Hispasec. (2013) OWASP: Los diez riesgos más críticos en aplicaciones WEB Recuperado de: http://unaaldia.hispasec.com/2013/11/owasp-los-diezriesgos-mas-criticos-en.html Cisco (2014) Autenticación Web en el controlador Wlan. Recuperado de: http://www.cisco.com/cisco/web/support/LA/111/1118/1118157_web-authwlc-guide-00.html S. López (2006) Seguridad en desarrollo de aplicaciones Web. Disponible en: http://www.monografias.com/trabajos75/seguridad-desarrollo-aplicacionesweb/seguridad-desarrollo-aplicaciones-web2.shtml Junta de Andalucía. (2013) Conceptos de seguridad en aplicaciones WEB. Disponible en: http://www.juntadeandalucia.es/servicios/madeja/contenido/recurso/212 Castro, C., Hernández T. (2010) Políticas y buenas prácticas de seguridad en servidores WEB del CDMIT. Facultad de Ingeniería UNAM - Polìticas y buenas prácticas de seguridad en servidores web. Recuperado de Internet de: 81 http://www.ptolomeo.unam.mx:8080/xmlui/bitstream/handle/132.248.52.100/ 915/A5.pdf?sequence=1 2-3-4-5-6-7- etc NTC 1486 Instructivo de presentaación de trabajos de grado. Documento disponible en: http://www.uao.edu.co/sites/default/files/Biblioteca/ArchivosPDF/Documento sPDF/INSTRUCTIVO_PRESENTACION_TRABAJOS_DE_GRADO.pdf 82