Professional Documents
Culture Documents
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
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)
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).
etc) [Javascript]
O FileSystem APIs O Desktop Drag-in y Drag-out (file API) O Geolocation O Orientacin del dispositivo
O Multimedia
Javascript]
O Tags audio y video (reproduccin nativa, no ms flash!) O Canvas O SVG (Scalable Vector Graphics) O Drag & Drop nativo
de las estilizaciones implementadas mediante javascript e imgenes, ahora pueden hacerse de modo ms eficiente con CSS.
O Ejemplos y cdigo:
O http://slides.html5rocks.com O http://playground.html5rocks.com
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
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
Bypassing access control Ataques remotos a servidores web Botnet basada en la web Ataques DoS con CORS y Web Workers Etc
XMLHttpRequest.open
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
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.
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
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).
(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.
que los caracteres son tratados como datos, y no son "interpretados". O No confundir con la codificacin de caracteres (Unicode).
cambio de contexto (de datos a cdigo), gracias al empleo de caracteres especiales que son significativos para el interprete que est siendo usado.
O LocalStorage O PushState
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.
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?