Open Web Application Security Project
OWASP
OWASP significa Open web Application Security Project (Proyecto Abierto de Seguridad de Aplicaciones Web), es una comunidad abierta dedicada a encontrar y combatir las causas de la inseguridad en el software. Todas las herramientas, foros, documentos y Chapters (significa capítulos pero hace referencias a las organizaciones nacionales de cada país) son gratis y de código abierto para todo el mundo.
Al ser una organización sin fines de lucro esto le permite ser imparcial y práctico sobre la información acerca de la seguridad. OWASP no esta asociado con ninguna compañía tecnológica, a pesar que utiliza la información que ellos el suministran.
La fundación provee servidores de banda ancha, facilidad para realizar proyectos y los antes mencionados Chapters. Además realiza una conferencia mundial OWASP Application Security Conference (Conferencia de seguridad en aplicaciones OWASP).
OWASP tiene varios principios; se entiendo por principios de seguridad de aplicaciones a las reglas fundamentales de seguridad que describen el correcto comportamiento y/o diseño de una aplicación, las cuales se pueden mejorar cambiando las posturas sobre seguridad. Estos principios son generales, deben tomarse solo como una guía y no como una manual de procedimientos a seguir. Con esta herramienta que OWASP presenta se tiene una ayuda más en los momentos de tomar decisiones en nuevas situaciones tomando estas ideas básicas. Al considerar estos principios se puede decir en cuanto a requerimientos, arquitecturas e implementación de decisiones y sobre todo identificar posibles debilidades en el sistema.
Algunos principios de seguridad en aplicaciones que han sido probados:
- Aplicar defensa en profundidad
- Usar un modelo de seguridad positiva
- Falla con Seguridad
- Correr la aplicación con menos privilegios
- Evitar la oscuridad en la seguridad
- Mantener la seguridad simple
- Detectar intrusos
- No confíe en las infraestructuras
- No confíe en los servicios
- Establezca seguros por defecto
Otra distinción que hace OWASP son los Amenazas. El uso de la palabra amenaza lo utiliza para describir un potencial (o probable) peligro o de que algo salga mal. Para poder entender bien el concepto de seguridad y todo lo que lo rodea debemos poder distinguir entre riesgo, ataque, vulnerabilidad, impacto y otros términos de manejo de riesgos.
Los agentes de amenaza caen en tres categorías:
- Naturales (Incendio, tornado, rayo)
- Humano No intencional (accidentes, descuidos)
- Humano Intencional (de adentro, de afuera)
El análisis de amenazas es una actividad que identifica amenazas y estima la probabilidad de que ocurran. La amenaza existe aun si el sistema esta protegido o no.
Ejemplos de Amenazas:
- Un empleado puede robar información
- Una persona ajena puede un ataque denegando del servicio
- Un desarrollador de software puede robar el código fuente
- Un desarrollador de software puede insertar un [back door] (puerta trasera)
Otro concepto a destacar son los ataques. Los ataques son técnicas que los atacantes usan para explotar las vulnerabilidades de una aplicación. Esto ataques son comúnmente confundirlos con vulnerabilidades; esto puede llevar a tratar de contrarrestar una ataque cuando solo hay que mejorar una debilidad de la aplicación.
Ahora bien las vulnerabilidades son un hueco o una debilidad de una aplicación, la cual puede se una falla de diseño o un [bug] de implementación, todo esto como se describió arriba le permite al atacante poder causar daña a la información que incluye la aplicación; tales como el dueño de la aplicación, usuarios y otras entidades que dependan de la aplicación.
Ejemplos de Vulnerabilidades:
- Falta de validación en el ingreso de usuarios
- Falta de suficiente mecanismo de logging
- No cerrar la conexión de la base de datos correctamente
OWASP también propone entre sus proyectos planes y medidas de contingencia. Los planes o medidas de contingencia son tecnologías o módulos defensivos que pueden ser usados para detectar, detener o denegar un ataque. Hay planes necesarios en una aplicación de deben ser identificar amenazas usando análisis de amenazas para así proteger a la aplicación en contra de cualquier tipo de ataque basado en el tipo de ataque que puede enfrentar. Una debilidad o una falla en el plan de contingencia o incluyo la falta de un plan adecuado puede resultar en una vulnerabilidad que deja susceptible a la aplicación.
Ejemplos de planes de contingencia
- Autentificación
- Control de Acceso
- Administrador de Sesión
- Validación del ingreso
- Manejo de errores
- Logging
- Criptografía
Por ultimo OWASP propone también dentro de sus proyectos algunos ya terminados el uso de actividades para la seguridad en las aplicaciones. Las actividades de seguridad son las prácticas primordiales que deben ser realizadas durante el ciclo de desarrollo del software, para así reducir riesgoso incrementar certeza y exactitud de la aplicación. Todas estas prácticas deben soportar diferentes ciclos de vida de desarrollo; además de no estar muy acopladas.
OWASP tiene varios proyectos tanto como de documentación como de desarrollo entre ellos están:
- OWASP AJAX Security Project (Proyecto de seguridad con AJAX de OWASP) – Este investiga la seguridad en las aplicaciones que puede proveer AJAX.
- OWASP Application Security Assessment Standards Project (Proyecto para estandarizar la valoración de la seguridad en las aplicaciones) – El objetivo es lograr un conjunto de estándares definiendo los lineamientos bases para aproximarse a diferentes tipos y/o niveles en la seguridad de la aplicación.
- OWASP Application Security Metrics Project (Proyecto para realizar Métricas en la seguridad de las aplicaciones) – El objetivo es identificar y proveer un conjunto de métricas para medir la seguridad de las aplicaciones.
- OWASP AppSec FAQ Project (Proyecto de Preguntas frecuentes echas sobre la seguridad de las aplicaciones) – Cuestionario con sus respectivas respuestas abarcando varios tópicos de seguridad.
- OWASP CAL9000 Project (Proyecto CAL9000) – Es un programa echo en JavaScript para testear la seguridad de una aplicación.
CAL9000 es una herramienta para testear host de seguridad para aplicaciones Web. Fue diseñado para ser usado en Firefox browser. Las funcionalidades de CAL9000 son un poco limitadas en cuanto a ser usada por otros browser, pero como todo proyecto sigue en crecimiento continuo. Como CAL9000 esta escrito en Javascript, cualquier persona tiene acceso al código fuente. CAL9000 tiene varias características importantes por ejemplo la ejecución de cross-domain XMLHttp Requests y escribirlas al disco.
- OWASP CLASP Project (Proyecto CLASP) – El proyecto se focaliza en definir elementos de proceso que puedan reforzar la seguridad en una aplicación.
CLASP (Comprehensive, Lightweight Application Security Process; Proceso de seguridad de aplicaciones liviano y comprensivo) – Este provee de un organizado y estructurado acercamiento a los cambiantes aspectos de seguridad en las primeras etapas del ciclo de vida del desarrollo de software. CLASP es un conjunto de piezas de procesos que pueden ser integradas al proceso de desarrollo de software. Fue diseñado para ser fácil de adoptar y efectivo. Este proyecto toma un acercamiento en perspectiva, actividades de documentación que las organizaciones deberían hacerlo. Además, provee de un extensos recursos que hacen a esa implementación sea razonable. CLASP provee de información detallada de: Introducción a los conceptos básicos de CLASP Las 7 mejores prácticas que define CLASP Resumen de los servicios de seguridad de alto nivel Algunos principios troncales de seguridad para el desarrollo de software, entre otros.
- OWASP Code Review Project – Un proyecto nuevo que captura las mejores prácticas para revisar código.
- OWASP Guide Project – Un enorme documento en el cual se cubren todos los aspectos sobre aplicaciones Web y seguridad en Web service.
The OWASP Guide to Building Secure Web Applications v2 fue dada a conocer al publico en Black Hat en Las Vegas en Julio del 2005. Este proyecto ha servido de basamento para varios profesionales en seguridad desde 2002. Esta guía esta dirigida a arquitectos, diseñadores, desarrolladores, consultores y auditores en aplicaciones Web.
- OWASP Honeycomb Project – Este proyecto se dedica a realizar una guía para construir bloques de seguridad para aplicaciones.
- OWASP LAPSE Project – El proyecto esta acotado al desarrollo de una herramienta de condigo abierto para auditar Java.
- OWASP Legal Project – Este proyecto provee de material relativo a los aspectos legales del software seguro, incluyendo contratación, la obligación y la conformidad.
- OWASP Logging Project – Este define las mejores practicas para realizar logging y administración de log
- OWASP Metrics Project – El proyecto define métricas manejables para la seguridad en las aplicaciones. Desafortunadamente este proyecto como otros esta estancando y con problemas para lograr un resultado aceptable. Como todo software es difícil medir la calidad del mismo o la del código, esto conlleva a un atraso y mucho debate en cuanto a una métrica que pueda medir a todas las aplicaciones, o en su defecto a poder tipificar las aplicaciones para así poder tener una métrica correcta que otorgue valores relevante.
Por todo esto la autora sugiere la siguiente métrica, tomando como parámetros el proyecto OWASP top ten vulnerabilities; del cual se habla mas adelante. En esta métrica se mide que tan vulnerable es una aplicación dando como máximo o sea un 100% que la aplicación es totalmente vulnerable y con un 0% que no lo es. De las 10 vulnerabilidades si posee 1 entonces tiene un 10% y de ahí se va incrementando hasta el máximo. Por ejemplo se puede dar el caso que una aplicación tenga ingreso no validado y accesos de control rotos esto da por resultado un 20% de vulnerabilidad. Esta métrica no esta respaldada ni validada solo es un esbozo.
- OWASP .NET Project – Este proyecto esta centrado en ayudar los desarrolladores de .NET en construir aplicaciones seguras, lamentablemente esta en una etapa alfa.
- OWASP Pantera Web Assessment Studio Project – Focalizado en combinar capacidades automatizadas con un completo manual de testeo para obtener resultados óptimos.
- OWASP PHP Project - Este proyecto esta centrado en ayudar los desarrolladores de PHP en construir aplicaciones seguras.
- OWASP Java Project - Este proyecto esta centrado en ayudar los desarrolladores de Java y J2EE en construir aplicaciones seguras.
El objetivo de este proyecto es proveer información sobre construcción, configuración, operación y mantenimiento de aplicaciones seguras en Java. Seguridad para arquitectos en J2EE
Provee información sobre el diseño y consideraciones arquitectonicas par alas aplicaciones Web en Java. Haciendo hincapié en arquitecturas como EJB, Web Service y Spring Middle Tiers.
Seguridad para desarrolladores en J2EE
Aquí se cubren todas las llamadas peligrosas en Java y vulnerabilidades comunes asociadas con ellas. También trata sobre herramientas como PMD, jlint, FindBugs, Eclipse, jad, entre otras. Además los mecanismos estándares de seguridad en JDK, como criptografía, logging, encriptación, error de manejo, entre otros.
- OWASP Risk Management Project – Un reciente proyecto centrado en el proceso para manejar riesgos en la seguridad de las aplicaciones.
- OWASP Testing Project – Este proyecto se focaliza en procesos para testear la seguridad en las aplicaciones.
- OWASP Top Ten Project – Un documento que describe el top 10 de las vulnerabilidades en las aplicaciones Web.
1. Ingreso no Validado: La información desde los pedidos de la Web no son validados antes de empezar a ser usados por una aplicación Web. Atacantes pueden usar esta falla para atacar los componentes backend de las aplicaciones Web.
2. Acceso de control roto: Las restricciones en cuanto a autentificar de los usuarios no esta debidamente reforzado. Los atacantes pueden utilizar esta falla para acceder a las cuentas de otros usuarios, ver archivos ocultos o usar funciones no autorizadas.
3. Autentificación rota y manejo de sesión rota: Las credenciales de la cuenta y los tokens de la sesión no están correctamente protegidas. Los atacantes que puedan comprometer contraseñas, keys, cookies de sesión u otro token pueden derrotar la restricción de la autentificación y asumir la identidad de otro usuario.
4. Fallas Cross site scripting (XSS): La aplicación Web puede usar mecanismos para transportar un ataque hasta el browser de un usuario. Un ataque victorioso pude mostrar el token de sesión del usuario, ataque a la maquina local, o mostrar información engañosa para engañar al usuario.
5. Desbordamiento del Buffer: En algunos lenguajes los componentes de una aplicación Web no validan apropiadamente el ingreso, que en algunos casos puede ser desastroso, en otras esto puede permitir el control de un proceso. Entre estos componentes están CGI, librerías, drivers, y los componentes del server de la aplicación Web.
6. Inyección de Fallas: Las aplicaciones Web pasan parámetros cuanto hacen un acceso a un sistema externo o a un sistema operativo local. Si un atacante pudiera embeber de código malicioso en estos parámetros, el sistema externo puede ejecutar esos comandos en nombre de la aplicación Web.
7. Inapropiado manejo de errores: Las condiciones de un error pueden ocurrir durante una operación normal y esta puede no estar apropiadamente manejado. Si un atacante puede causar que ocurra un error que la aplicación Web no maneja, el atacante puede ganar información detallada del sistema, denegar servicios causar que los mecanismos de seguridad fallen o tirar el servidor.
8. Almacenamiento inseguro: Las aplicaciones Web normalmente usan funciones de criptografía para proteger la información y las credenciales. Estas funciones y el código integrado resultan muy difícil de realizar, y frecuentemente terminan siendo una debilidad en la protección.
9. Denegación de Servicios (DOS): Los atacantes pueden consumir recursos de la aplicación Web a un punto donde los usuarios legítimos no pueden tener acceso o usar la aplicación. Los atacantes pueden también encerrar a un usuario fuera de su cuenta o incluso causar que toda la aplicación falle.
10. Configuración insegura de administración: Tener una fuerte configuración estándar del servidor es algo crítico para asegurar la aplicación Web. Estos servidores pueden tener opciones en la configuración, las cuales afectan la seguridad.
- OWASP Validation Project – Este proyecto provee de una guía y herramientas relativas a la validación de las aplicaciones.
- OWASP WASS Project – Un proyecto estándar para el desarrollo de criterios mas concretos para la seguridad de las aplicaciones
- OWASP WebGoat Project – Un proyecto online para entrenarse y conocer sobre la seguridad de las aplicaciones.
WebGoat es sobre deliberadamente inseguro hecho en J2EE mantenido por OWASP y diseñado para enseñar lecciones sobre seguridad. En cada lección, el usuario debe demostrar su entendimiento en los problemas de seguridad, explotando las vulnerabilidades que WebGoat tiene. Esta es una forma práctica de difundir y enseñar sobre seguridad en aplicaciones Web.
- OWASP WebScarab Project – Esta es una herramienta para realizar todo tipo de testeo de seguridad en una aplicación Web y en Web service.
WebScarab es un [framework] para analizar aplicaciones que se comunican usando protocolos HTTP y HTTPS. Este escrito en Java y por lo tanto es portable en muchas plataformas. Este software tiene muchos modos de operación implementando un cierto número de plugins. En su uso mas común, WebScarab opera como un interceptador de Proxy, permitiendo al operador rever y modificar los pedidos creados por el browser y después de ser mandados por el servidor, y también rever y modificar retorno de respuestas desde el servidor antes de que sean recibidos por el browser. Chapter de OWASP
Unos de los Chapter es ASIRA el cual es el perteneciente a la Argentina. ASIRA comparte los mismos objetivos e ideales que OWASP. Las reuniones de ASIRA son con los profesionales y especialistas en seguridad de la información enfocadas a los cuestionamientos, las formulas de solución y especialmente a la divulgación de los resultados. La sede esta ubicada en, Av. Córdoba 1439 1º piso, Capital Federal. El estudio de OWASP ARGENTINA esta dirigido a: Análisis de las nuevas tecnologías de la información y las comunicaciones. Investigación de fallas y vulnerabilidades sobre las TIC. Análisis de productos (Software & Appliances). Errores y vicios en programación que conducen a errores de seguridad. Análisis de bugs de seguridad. Desarrollo de programas y técnicas de exploit relacionadas. Documentación de soluciones de seguridad. Desarrollo de herramientas de seguridad. Conferencias. Demostraciones. Debates y desarrollo investigativo.
Las actividades OWASP giraran en torno al desarrollo de grupos de estudio en dos modalidades: In-site. A través de reuniones y desayunos de trabajo dentro de las instalaciones de ASIRA. Out-site – online. Dentro de la asociación existen canales IRC dedicados a distintas temáticas y se instaurará un canal dedicado a las actividades OWASP.
Links externos