MARCO TEÓRICO CONCEPTUAL Liliana Cújar Bahamón
Noviembre de 2015
ANTEPROYEC ANTEPROYECTO TO ESPECIA ESPECIALIZACI LIZACI N EN EN SEGURI SEGURIDAD DAD INFORMATICA INFORMATICA
GUÍA DE BUENAS PRÁCTICAS PARA EL DESARROLLO DE APLICACIONES WEB SEGURAS, ORIENTADAS A LA FORMACIÓN DE PROGRAMADORES
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 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. Un aporte fundamental que se pretende con este trabajo es ofrecer a los estudiantes de media técnica de las instituciones educativas del municipio de Medellín una guía que permita minimizar los riesgos a que están expuestos desde el momento de la realización del programa, que los estudiantes desde su aprendizaje tengan en cuenta esta guía y la incorporen al momento del desarrollo de su actividad. Lo primero que se debe tener en cuenta son algunos tips que existen para proporcionar buenas prácticas en cualquier proyecto informático.
BUENAS PRÁCTICAS PARA EL DESARROLLO DE UN PROYECTO INFORMÁTICO ¿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. (FEAPS, 2007) ¿Porque se les llaman buenas prácticas?
Porque cumplen con normas, políticas, 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.
¿Que hace que una práctica sea mal desarrollada?
1
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
Feaps.( 2007) Buenas prácticas prácticas FEAPS , pag. 6,7, 9 y 10
¿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 Tips de buenas prácticas para el desarrollo de un proyecto informático informático 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 algunos de ellos: Lo primero que que se debe hacer es un acercamiento con el cliente cliente para saber sus necesidades, expectativas, requerimientos y viabilidad de su petición. Una vez se tenga tenga reconocido el proyecto y lo que 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: cliente en el desarrollo del proyecto. Hacer Hacer partícipe al cliente de Involucrar al cliente 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 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. empleados de que el proyecto en Concientizar al cliente y sobre todo a los empleados mención es un apoyo a la gestión de los empleados y que en ningún momento sustituirá al empleado quien es el responsa ble y decide qué, cuándo y cómo realizar el trabajo. siempre presente los objetivos del del negocio. Tener siempre Tener siempre una comunicación directa con el cliente, evitar los intermediarios. Elaborar un mapa de riesgos.
2
M. Astudillo. (2009) El Proyecto informático. informático. Documento Documento disponible en: http://www.monografias.co http://www.monografias.com/trabajos-pdf2 m/trabajos-pdf2/proyecto-inform /proyecto-informatico/proyecto-i atico/proyecto-informatico.pdf nformatico.pdf
Flexibilidad en los requerimientos. El cliente cliente hace la solicitud 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 efectiva la complejidad de de los requerimientos. Explicar 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. importancia de la realización del proyecto y Reconocer delante del cliente la importancia 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. tener en cuenta de de documentar constantemente, levantar actas de Se debe tener las reuniones y documentar los procesos realizados. Tener clara la trazabilidad del producto, conocer los requerimientos 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 aplicado y los casos de prueba. ágiles que le permitan hacer modificaciones a medida que el Utilizar diseños ágiles 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 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. la etapa de requerimientos se debe hacer además de la la Tener claro que en 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
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
3
J.C. Herazo (2010) ¿Preparado ¿Preparado para presentar tu proyecto de seguridad informática ante gerencia? Disponible en : http://liacolombia.com/2 http://liacolombia.com/2011/02/%C2%B 011/02/%C2%BFpreparado-par Fpreparado-para-presentar-tu-proye a-presentar-tu-proyecto-decto-deseguridad-informatica-ante-gerencia/
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 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, esto garantiza el n o r e p u d i o (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. 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ón. 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 4
Infosegur (2013). Objetivos Objetivos de la Seguridad informática. Disponible en: https://infosegur.wordpress.com/tag/no-repudio/
las presiones ejercidas por el cliente para la entrega y porque no se tiene la conciencia de la importancia que la seguridad representa. 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. QUE ES UNA APLICACIÓN WEB
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 5 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. 5
1 Consulta realizada el 24 de octubre de 2015, disponible en: http://definicion.de/web/
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 permiten suplir en gran parte las necesidades 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. 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í:
Etapa de levantamiento de necesidades 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. 6
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. ETAPA DE ANALISIS: 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. 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. 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. 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. 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 ya se entrega el programa funcionando a satisfacción del cliente 6
Consulta realizada el 28 de octubre de 2015, disponible en: http://elvex.ugr.es/idbis/db/docs/l http://elvex.ugr.es/idbis/db/docs/lifecycle.pdf ifecycle.pdf
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.
Arquitecturas para el desarrollo de aplicaciones web. Una aplicación 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 1: Arquitectura de una aplicación WEB
Fuente: http://www.n4designlab.com.mx/blog/index.php/119-aspectos-basicosde-las-aplicaciones-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. 7
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:
7
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 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. Verifique que la dirección comience por https, es una una conexión segura y no utilice computadores públicos para realizar transacciones. Controle las entradas y salidas, contactos, información, información, contraseñas etc. 8 de las redes sociales.
Consulta realizada en 28.10-2015 disponible en: https://programacionwebisc.wor https://programacionwebisc.wordpress.com/2-1dpress.com/2-1arquitectura-de-las-aplicaciones-web/ 8 J. López.(2010) López.(2010) Monográfico: Seguridad en Internet – Consejos para minimizar los riesgos en la navegación por internet, disponible en: http://recursostic.educaci http://recursostic.educacion.es/observatori on.es/observatorio/web/en/listadoo/web/en/listadomonograficos?start=4
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.
¿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) 9 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 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.
Figura 2: proceso de cifrado y descifrado de la información
9
Consultado el 26 de octubre de 2015, disponible en: http://www3.uah.es/libretic http://www3.uah.es/libretics/concurso2014 s/concurso2014/files2014/Tr /files2014/Trabajos/Criptogra abajos/Criptografia%20y%20Metodo fia%20y%20Metodos%20de%20Ci s%20de%20Ci frado.pdf
Fuente: 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. página https://genomorro.files.wordpress.com/2007/09/trabajo.pdf.
¿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 modificada por las personas que que tengan los permisos 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, digitales, se asegura que el acceso a la información sea más controlado. Facilitan el comercio electrónico reduciendo los riesgos de robo.
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, música, videos etc)
¿Qué clases de tecnologías existen?
Existen muchas maneras de encriptar la información, algunas de ellas pueden ser:
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 e misor y el recetor del mensaje. 10 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. 11 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. 12 Certificados digitales: Técnica que consiste en utilizar un certificado o
paquete de información que identifica al usuario que contiene información 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 anteriores13
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 10
ANGEL, José de Jesús. Criptografía Criptografía para principiantes. P. 13 Disponible en: http://spi1.nisu.org/recop/www.se http://spi1.nisu.org/recop/www.seguridata.com guridata.com/pdf/cbasica.p /pdf/cbasica.pdf df 11 Ibid., p. 21 12 Ibid., p. 24 13 Ibid., p. 37
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.
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.
BUENAS PRÁCTICAS DE CODIFICACIÓN – ARQUITECTURA PARA EL DESARROLLO DE APLICACIONES WEB.
Antes de iniciar con co n 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, gratuitos, apoyo a empresas para utilizar documentos, herramientas herramientas 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 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. Qué se puede encontrar en esta página:
14
Herramientas y estándares de seguridad en aplicaciones. Libros completos de revisiones de seguridad en aplicaciones, desarrollo 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. Listas de correo 14
Consulta realizada el 13-11-2015 disponible en https://www.owasp.org/ https://www.owasp.org/images/5/5 images/5/5f/OWASP_Top_10 f/OWASP_Top_10__ _2013_Final_-_Espa%C3%B1 _2013_Final_-_Espa%C3%B1ol.pdf ol.pdf
Seguridad en la Construcciones de aplicaciones
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 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 la aplicación sino las excepciones. Es buena práctica La revisión permanente del código, proceso de comprobar manualmente manualmente el código código fuente de 15 una aplicación web en busca de vulnerabilidades 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 de la creación de código ya que generalmente no se tiene en cuenta la cantidad de riesgos a que se está expuesto dada la complejidad de la infraestructura digital que maneja todo o que respecta las información y la comunicaciones que viaja a través de internet. La Fundación OWASP es una entidad sin ánimo de lucro está tomada como referente dado que es un proyecto abierto, creado por personas que tienen 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; podría tomarse como una guía de consulta casi que obligatoria para los desarrolladores de software 16 Los documentos originales están creados en el idioma Inglés, pero ya han sido traducido algunos documentos a varios idiomas incluyendo el español, Podemos utilizar los documentos y herramientas que ofrecen, OWASP tiene catalogado sus proyectos en categorías, los proyectos de desarrollo y los de documentación.
15
(https://www.owasp.org/index.p (https://www.owasp.org/index.php/Category:OWA hp/Category:OWASP_Code_Review_ SP_Code_Review_Project) Project) https://www.owasp.org/images/8/ https://www.owasp.or g/images/8/80/Gu%C3%AD 80/Gu%C3%ADa_de_prueba a_de_pruebas_de_OWASP_ver_3 s_de_OWASP_ver_3.0.pdf .0.pdf 16 Página disponible disponible en https://www.owasp.or https://www.owasp.org g
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 Application Security Guide For CISOs. Documento en 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=sear ch&rurl=translate.google.com.co&sl=en&u=https://www.owasp.org/index.php/C ategory: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_https://www.owasp.org/images/5/5f/O WASP_Top_10_ _2013_Final_-_Espa%C3%B1ol.pdf
La última actualización de los diez riesgos más críticos en aplicaciones Web es del 2013 tomando como base la actualización de 2010; de acuerdo con un estudio realizado por la página de OWASP 17, catalogaron las 10 principales vulnerabilidades o riesgos en la seguridad informáticas más críticos de las aplicaciones Web, en ella está contenido las explicaciones de qué es, el impacto, y cómo prevenirlos, algunos ejemplos de ataques realizados y referencias o bibliografías en donde encuentra mayor información. Estos están catalogados de la siguiente manera:
1.
2.
“
A1 Inyección : Las
“
A2 Pé rd ida d e Au tent icaci ón y Ges tión d e Sesion es : Las funciones de
fallas de inyección, tales como SQL, OS, y LDAP, ocurren cuando datos no confiables son enviados a un intérprete como parte de un comando o consulta. Los datos hostiles del atacante pueden engañar al intérprete en ejecutar comandos no intencionados o acceder datos no autorizados ”.18 la aplicación relacionadas a autenticación y gestión de sesiones son frecuentemente implementadas incorrectamente, permitiendo a los atacantes comprometer contraseñas, claves, token de sesiones, o explotar otras fallas de implementación para asumir la identidad de otros usuarios.”19
3.
A3 Secuencia : Las fallas XSS Secuencia de Com andos en Sitios Cruzados (XSS)
“
ocurren cada vez que una aplicación toma datos no confiables y los envía al navegador web sin una validación y codificación apropiada. XSS permite a los atacantes ejecutar secuencia de comandos en el navegador de la víctima los cuales pueden secuestrar las sesiones de usuario, destruir sitios web, o dirigir al usuario hacia un sitio malicioso ”.20 17
OWASP Top 10 – 2013- Los diez riesgos más críticos en Aplicaciones Web, Disponible en: https://www.owasp.org/images/5 https://www.owasp.org/images/5/5f/OWAS /5f/OWASP_Top_10_-_2013_Fina P_Top_10_-_2013_Final_-_Espa%C3%B1 l_-_Espa%C3%B1ol.pdf ol.pdf 18 Ibid, pag. 7 19 Ibid, pag. 8 20 Ibid, pag. 9
4. A4 Referencia Directa Ins Ins egura a Objetos : Una referencia directa a objetos ocurre cuando un desarrollador expone una referencia a un objeto de implementación interno, tal como un fichero, directorio, o base de datos. Sin un chequeo de control de acceso u otra protección, los atacantes pueden manipular estas referencias para acceder datos no autorizados.”21 “
5. A5 Configuración de Seguridad Incorrecta : Una buena seguridad requiere tener definida e implementada una configuración segura para la aplicación, marcos de trabajo, servidor de aplicación, servidor web, base de datos, y plataforma. Todas estas configuraciones deben ser definidas, implementadas, y mantenidas ya que por lo general no son seguras por defecto. Esto incluye mantener todo el software actualizado, incluidas las librerías de código utilizadas por la aplicación. ”22 “
6. A6 Exposición de Datos Sensibles : Muchas aplicaciones web no protegen adecuadamente datos sensibles tales como números de tarjetas de crédito o credenciales de autenticación. Los atacantes pueden robar o modificar tales datos para llevar a cabo fraudes, robos de identidad u otros delitos. Los datos sensibles requieren de métodos de protección adicionales tales como el cifrado de datos, así como también de precauciones especiales en un intercambio de datos con el navegador. ”23 “
7. A7 Ausencia de Contro l de Acceso a las Funciones : La mayoría de aplicaciones web verifican los derechos de acceso a nivel de función antes de hacer visible en la misma interfaz de usuario. A pesar de esto, las aplicaciones necesitan verificar el control de acceso en el servidor cuando se accede a cada función. Si las solicitudes de acceso no se verifican, los atacantes podrán realizar peticiones sin la autorización apropiada. ”24 “
zado s (CSRF 8. A8 Falsificación de Peticiones en Sitios Cru zado ): 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 “
21
Ibid, pag. 10 Ibid, pag. 11 23 Ibid, pag. 12 24 Ibid, pag. 13 22
para generar pedidos que la aplicación vulnerable piensa son peticiones legítimas provenientes de la víctima. ”25 Vulnerabilidade s Conoc idas 9. A9 Uso de Comp onentes con Vulnerabilidades : Algunos componentes tales como las librerías, los frameworks y otros módulos de software casi siempre funcionan con todos los privilegios. Si se ataca un componente vulnerable esto podría facilitar la intrusión en el servidor o una perdida seria de datos. Las aplicaciones que utilicen componentes con vulnerabilidades conocidas debilitan las defensas de la aplicación y permiten ampliar el rango de posibles ataques e impactos ”26. “
10. A10 Redireccio nes y r eenvíos no validado s : Las aplicaciones web frecuentemente redirigen y reenvían a los usuarios hacia otras páginas o sitios web, y utilizan datos no confiables para determinar la página de destino. Sin una validación apropiada, los atacantes pueden redirigir a las víctimas hacia sitios de phishing o malware, o utilizar reenvíos para acceder páginas no autorizadas”.27 “
Herramientas, aplicaciones o programas que permiten aplicar diferentes ataques, con explicación de cómo funciona un ataque en tiempo real, como: ✔ WebScarab
--> ZAP (The Zed Attack Proxy)
✔ Dirbuster ✔ DotNet ✔ ESAPI ✔ WebGoat ✔ Mantra
Framework ✔ OWASP Live CD ✔ OWASP AntiSamy Java Project ✔ OWASP WAF ✔ Entre muchos más
25
Ibid, pag. 14 Ibid, pag. 15 27 Ibid, pag. 16 26
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.28
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
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.
¿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
28
Consulta realizada el 25 de octubre de 2015, ADM TOOLS. Acunetix Web Vulnerability Scaner. Disponible en: http://www.adm-tools.com/por http://www.adm-tools.com/portfolio/acunetixwebvuln tfolio/acunetixwebvulnerabilityscan erabilityscanner/ ner/
herramientas utilizadas para el escaneo y gestión de vulnerabilidades de seguridad de sistemas informáticos. 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 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 CREACION DE UNA PÁGINA WEB PARA EL 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/