Académique Documents
Professionnel Documents
Culture Documents
Actividades
Descripción de la actividad
Pautas de elaboración
Esta actividad sobre seguridad en aplicaciones Ajax abarca los problemas de seguridad
que tienen este tipo de aplicaciones, que caen en la categoría denominada rich internet
applications y en las posibles soluciones a los mismos. Hay que consultar cuantas
fuentes relativas al tema se considere y sintetizar la información relevante sin limitarse
a copiar el contenido de alguna de ellas.
Criterios de valoración
INTRODUCCCIÓN
La Web 2.0 se puede definir como la tendencia en evolución de las tecnologías www y el
diseño web que apuntan a mejorar la creatividad, las comunicaciones, el intercambio
seguro de información, la colaboración y la funcionalidad de la web 1.0. A diferencia de
la naturaleza estática de Web 1.0, los sistemas Web 2.0 dependen en gran medida del
contenido generado por el usuario, de hecho, la Web 2.0 se ha descrito como la "Web
participativa". Por ejemplo, los blogs y los servicios para compartir fotos permiten a los
consumidores agregar y actualizar su propio contenido. Ejemplos de tales tecnologías
incluyen AJAX, widgets y plataformas de aplicaciones como blogs, wikis y redes
sociales.
A pesar de la gran ventaja que la web 2.0 presenta a las organizaciones o empresas, fue
necesario que los directores de TI y oficiales de seguridad consideren realizar con
mayor frecuencia: auditorías, pruebas de funcionalidad y se adapten a modelos de
desarrollo seguro para mitigar en gran medida la perdida de información o ataques no
autorizados.
WSDL Scanning
El Lenguaje de descripción de servicios web (WSDL) permite que un servicio web
publicite sus capacidades describiendo las operaciones y los parámetros necesarios
para acceder al servicio. WSDL a menudo se genera automáticamente, utilizando
utilidades como Java2WSDL, que toma una clase o interfaz y crea un archivo WSDL en
el que los métodos de interfaz se exponen como servicios web.
Debido a que la generación de WSDL a menudo está automatizada, los atacantes
pueden usar WSDL para obtener información sobre los servicios tanto públicos como
privados. El atacante puede escanear la interfaz WSDL para revelar información
sensible acerca de patrones de invocación, implementaciones tecnológicas subyacentes
y las vulnerabilidades asociadas. Este tipo de sondeo se lleva a cabo para realizar
ataques más graves (por ejemplo, la manipulación de parámetros, inyección maliciosa
de contenido, inyección de comandos, etc.) archivos WSDL proporcionan información
detallada sobre los puertos de servicios y enlaces disponibles para los consumidores.
Xpath Injection
De forma similar a la inyección SQL, los ataques de inyección de XPath ocurren cuando
un sitio web usa información proporcionada por el usuario para construir una consulta
XPath para datos XML. Al enviar intencionalmente información mal formada al sitio
web, un atacante puede descubrir cómo se estructuran los datos XML o acceder a datos
a los que normalmente no puede acceder. Incluso puede elevar sus privilegios en el sitio
web si los datos XML se utilizan para la autenticación (como un archivo de usuario
basado en XML). Query XML se hace con XPath, un tipo de declaración descriptiva
simple que permite que la consulta XML encuentre una información. Al igual que SQL,
puede especificar ciertos atributos para buscar patrones que coincidan. Cuando se usa
XML para un sitio web, es común aceptar alguna forma de entrada en la cadena de
consulta para identificar el contenido que se va a ubicar y mostrar en la página. Esta
entrada se debe desinfectar para verificar que no estropee la consulta XPath y devuelva
los datos incorrectos.
XPath es un lenguaje estándar; su notación / sintaxis siempre es independiente de la
implementación, lo que significa que el ataque puede ser automático. No hay dialectos
diferentes ya que tiene lugar en las solicitudes a las bases de datos SQL. Como no hay
control de acceso de nivel, es posible obtener el documento completo
Atom Injection
Una nueva característica de la" Web 2.0 ", es la facilidad para construir una mayor
capacidad de respuesta en la Web, con la utilización de los flujos XML que utilizan los
RSS y estándares Atom. Estos permiten a los usuarios y los sitios web obtener el
contenido, titulares y texto del cuerpo sin la necesidad de visitar el sitio en cuestión,
básicamente, proporcionando a los usuarios un resumen de ese contenido.
Atom injection se trata de un nuevo ataque WEB 2.0. RSS, son un medio común de
intercambio de información sobre portales y aplicaciones web, estos datos son
almacenados por las aplicaciones web y enviados al navegador del lado del cliente, se
puede inyectar JavaScript en el RSS para generar ataques en el navegador y
aplicaciones web.
DOM-Based XSS.
DOM Based XSS (o también conocido como "type-0 XSS") es un ataque XSS en el que
la carga de ataque se ejecuta como resultado de modificar el "entorno" DOM en el
navegador de la víctima utilizado por el lado del cliente original script, para que el
código del lado del cliente se ejecute de manera "inesperada". Es decir, la página en sí
(la respuesta HTTP) no cambia, pero el código del lado del cliente contenido en la
<script>
document.write("<b>Current URL</b> : " + document.baseURI);
</script>
Después de que el código malicioso se ejecuta por página, puede aprovechar esta
vulnerabilidad de scripts entre sitios basada en DOM para robar las cookies del usuario
o cambiar el comportamiento de la página como desee.
A continuación, se muestra una lista de fuentes y sumideros que generalmente se
dirigen a los ataques DOM XSS, tomando en consideración que no es una lista
completa:
Codigos populares
- document.URL
- document.documentURI
- location.href
- location.search
- location.*
- window.name
- document.referrer
Sinks populares:
- HTML Modification sinks
document.write
(element).innerHTML
- HTML modification to behaviour change
(element).src (in certain elements)
- Execution Related sinks
eval
setTimout / setInterval
execScript
XML poisoning
El tráfico XML va y viene entre el servidor y el navegador en muchas de las aplicaciones
WEB 2.0. Las aplicaciones web consumen bloques XML provenientes de clientes AJAX,
lo cual posibilita envenenar este bloque XML. No es raro que la técnica aplique cargas
útiles recursivas a nodos XML de producción similar varias veces. Si el manejo del
motor es pobre, esto puede provocar la denegación de servicios en el servidor. Muchos
atacantes también producen documentos XML con formato incorrecto que pueden
interrumpir la lógica dependiendo de los mecanismos de análisis utilizados en el
servidor. Hay dos tipos de mecanismos de análisis disponibles en el lado del servidor:
SAX y DOM. Este mismo vector de ataque también se usa con los servicios web, ya que
consumen mensajes SOAP y los mensajes SOAP no son más que mensajes XML.
POSIBLES SOLUCIONES:
Inyección XPATH
Al igual que las técnicas para evitar la inyección SQL, se debe utilizar una interfaz
XPath parametrizada, si hay una disponible, o escapar de la entrada del usuario para
que sea seguro incluirla en una consulta construida dinámicamente. Si está utilizando
comillas para finalizar la entrada que no es de confianza en una consulta XPath
construida dinámicamente, entonces necesita escapar esa cita en la entrada no
confiable para asegurarse de que los datos no confiables no intenten salir del contexto
citado. En el siguiente ejemplo, las comillas simples (') se utilizan para finalizar los
parámetros de nombre de usuario y contraseña. Por lo tanto, debemos reemplazar
cualquier 'caracteres en esta entrada con la versión codificada en XML de ese carácter,
que es "& apos;"
Otra opción de mitigación más segura es usar una consulta XPath precompilada. Las
consultas XPath precompiladas ya están preestablecidas antes de que se ejecute el
programa, en lugar de crearse sobre la marcha después de que la entrada del usuario se
haya agregado a la cadena.
DOM Cross-site
La mejor forma de arreglar scripts entre sitios basados en DOM es usar el método de
salida correcto (sink). Por ejemplo, si desea utilizar la entrada del usuario para escribir
en un elemento <div>, no use innerHtml, en su lugar use innerText/textContent.
Esto resolverá el problema, y es la forma correcta de remediar las vulnerabilidades XSS
basadas en DOM.
Siempre es una mala idea usar una entrada controlada por el usuario en fuentes
peligrosas como eval. El 99% de las veces es una indicación de mala o floja práctica de
programación, así que simplemente no lo hagas en lugar de tratar de desinfectar la
entrada.
<script>
document.getElementById("contentholder").textContent =
document.baseURI;
</script>
Los ficheros Javascript que se han obtenido desde un sitio en concreto no deben
poder acceder a propiedades de otro sitio.
Validación de todos los campos de entrada y comprobación siempre en el lado
del servidor, de otra manera cualquier acción que se valide en el cliente puede
ser manipulada, por ejemplo, mediante el uso de un proxy.
Implantar controles de seguridad como pueden ser autenticación, autorización,
e incluso registro de operaciones o logging, siempre en el lado del servidor.
Utilizar métodos POST en vez de métodos GET.
Se debe tener en cuenta los ataques clásicos como SQLi, XSS y XSRF, los cuales
podrán ser solventados mediante un filtrado correcto o utilización de tokens
correctamente en el caso del XSRF.
No almacenar jamás datos sensibles o confidenciales en el lado del cliente, este
hecho haría que obtenerlos por un atacante fuera algo potencialmente sencillo.
Utilización de métodos criptográficos para transmitir datos sensibles o
confidenciales entre el cliente y el servidor.
La lógica de negocio debe tener el principio de mínima exposición y encontrarse
siempre en el lado del servidor.
Toda petición realizada con AJAX y que acceda a recursos protegidos deberán
encontrarse autenticadas.
CONCLUSIONES:
- Las auditorias y el uso de S-SDLC es algo completamente necesario en las
empresas para minimizar la ocurrencia de las posibles amenazas que se han
expuesto inicialmente.
- El uso de AJAX en aplicaciones web ha generado un importante cambio en la
forma de percibir servicios y recursos especialmente en el lado de cliente, pero
también ha creado brechas de seguridad que deben ser corregidos para
garantizar la continuidad del servicio. Todo esto requiere de mayor seguridad
por parte de los desarrolladores y de generar documentación detallada que
permita llevar de manera ordenada y planificada las aplicaciones web para
evitar fallas de seguridad.
- La concientización a los usuarios sobre la seguridad en la web a través de
protocolos seguros (SSL) se está haciendo cada vez mayor e importante para las
empresas, pues a medida que protege sus servicios, ofrece mayor seguridad,
confiabilidad e integridad a sus clientes.
Webgrafía:
https://capec.mitre.org/data/definitions/95.html
https://capec.mitre.org/data/definitions/280.html
https://www.owasp.org/index.php/XPATH_Injection
http://www.cgisecurity.com/rss.html
https://www.owasp.org/index.php/DOM_Based_XSS
https://www.helpnetsecurity.com/2006/10/09/top-10-web-20-attack-vectors/
https://go-gaga-over-testing.blogspot.com/2010/10/web-20-security-testing-
approach-make.html
https://www.netsparker.com/blog/web-security/dom-based-cross-site-
scripting-vulnerability/
http://www.jquery-tutorial.net/ajax/same-origin-policy/
http://librosweb.es/libro/ajax/capitulo_7/seguridad.html
http://sedici.unlp.edu.ar/bitstream/handle/10915/21581/1927+-
+Seguridad+de+aplicaciones+web+vulnerabilidades+en+los+controles+de+ac
ceso.pdf?sequence=1
https://www.pcworld.es/articulos/boletin-de-noticias/las-nuevas-amenazas-a-
la-seguridad-en-la-web-20-510347/