Documente Academic
Documente Profesional
Documente Cultură
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).
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):
» Aisladas (parwise): de poca escalabilidad. Cada servicio deber tener su propia base
de datos de identidades y gestionarla.
Modelos de autorizació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.
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.
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
Bertino, E., Martino, L., Paci, F. y Squicciarini, A. (2010). Security for Web Services and
Service-Oriented Architectures. Berlin: Springer-Verlag Berlin and Heidelberg GmbH &
Co. KG.
OASIS Web Services Security (WSS) TC. Recuperado el 24 de agosto de 2017 de:
https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wss
Owasp Web Service Security. Recuperado el 24 de agosto de 2017 de:
https://www.owasp.org/index.php/Web_Services
Owasp Web Service Security cheat seat. 2015. Recuperado el 24 de agosto de 2017 de:
https://www.owasp.org/index.php/Web_Service_Security_Cheat_Sheet
Ws Security Challenges, Threats and Countermeasures Version 1.0 Final Material. Web
Services Interoperability Organization. Disponible en: http://www.ws-
i.org/Profiles/BasicSecurity/SecurityChallenges-1.0.pdf
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.
Para su instalación en plataforma con S.O. Windows, hay que seguir los pasos siguientes:
» Asegurarse de que los puertos 80, 443, 8080 están libres.
» Descargar SOA Demonstrator
» 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á.
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
» Seguir la documentación para entender las funciones de seguridad a implementar. El
tutorial de SOA Demonstrator es el primer documento que deberíais consultar
aunque en las funciones implementadas en su ejemplo no son exactamente las
mismas que las de la práctica.
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.