seguridadhtml5

34
Aspectos de seguridad en las nuevas tecnologías web Diego M. Schwindt & Fernando Villarroel Seguridad en Sistemas Universidad Nacional del Sur, 2012

Upload: diego-schwindt

Post on 25-Nov-2015

23 views

Category:

Documents


0 download

DESCRIPTION

Aspectos de seguridad en las nuevas tecnologías web

TRANSCRIPT

Presentacin de PowerPoint

Aspectos de seguridad en las nuevas tecnologas webDiego M. Schwindt & Fernando VillarroelSeguridad en SistemasUniversidad Nacional del Sur, 2012OutlineIntroduccin: HTML5 Javascript - AJAXNuevas caractersticas y APIs Modelo de seguridad en HTML5Principales amenazasEjemplos de ataquesXSS (Cross-Site Scripting)Clickjacking

Introduccin: HTML5HTML5 no es slo una nueva versin del lenguaje de marcado base para la web.Conjunto de estndares y APIsHTML5 + JavaScript + CSS3Tecnologas de presentacin y ejecucin del lado del clienteBrinda mejor soporte multimedia y de comunicacin, facilidades a los desarrolladores y estandarizacin.Mejor estructuracin y semntica de los sitios

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

Introduccin: JavascriptJavascript 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.Algunas limitaciones (previas a HTML5):No puede leer ni escribir en el sistema de archivos del usuario, ni del servidor. nico medio de almacenamiento estable: cookiesSlo puede comunicarse entre distintas pginas, si fueron generados desde el mismo sitio.No puede ver las interacciones del usuario con el navegador (historial, otras pginas abiertas), ni hacer llamadas al sistema operativo.No puede acceder a cookies ni variables generados por otros sitios

Introduccin: AJAXEs una tecnologa que permite comunicacin asincrnica con el servidor.Desde un script se pueden pedir datos (va requerimientos HTTP), sin tener que recargar toda la pgina.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 APIsAlmacenamiento local / sitios offline [Javascript]Web storage: localStorage, sessionStorageWeb SQL DatabaseApplication Cache

Comunicacin / Tiempo real [Javascript]Web workers: permite ejecutar scripts en paralelo (background) evitando que se bloquee la interfaz de usuario. Comunicacin entre scriptsNotificacionesWebSocket:canal de comunicacin bidireccional yfull-duplex sobre un socket TCP (alternativa a AJAX; evita overhead de headers HTTP).Nuevas caractersticas y APIsWebSocket handshake

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

Nuevas caractersticas y APIsIntegracin con el sistema operativo (sistema de archivos, etc) [Javascript]FileSystem APIsDesktop Drag-in y Drag-out (file API)GeolocationOrientacin del dispositivoEntrada de audio [HTML]

Multimedia / grficos / interfaz de usuario [HTML, Javascript]Tags audio y video (reproduccin nativa, no ms flash!)CanvasSVG (Scalable Vector Graphics)Drag & Drop nativoNuevas caractersticas y APIsNuevas etiquetas [HTML]Etiquetas de semntica en la estructura del sitioEtiquetas de formato: datalists, progress bar, ms tipos de inputs de formulario, etc. (Antes deban implementarse mediante javascript)

Presentacin y estilo [CSS3]Nuevos selectoresNuevas propiedades y atributosMuchas de las estilizaciones implementadas mediante javascript e imgenes, ahora pueden hacerse de modo ms eficiente con CSS.Nuevas caractersticas y APIsMejoras en la plataforma de desarrollo web del lado cliente [HTML, Javascript]Nuevos selectores (DOM API)Atributos de datos personalizadosAPI para acceder al historial: popState, pushState

Ejemplos y cdigo:http://slides.html5rocks.comhttp://playground.html5rocks.comModelo de seguridad en HTML5

Modelo de seguridad en HTML5

Principales amenazas en HTML5Vulnerabilidades en HTML5:Las tecnologas no son de por s inseguras.De hecho, colaboran en el desarrollo de sitios segurosValidacin de datosSe evita uso de plugins.Web messaging (comunicacin segura entre distintos orgenes)Iframes sandboxing (limita los privlegios de javascript)

Sin embargo, la seguridad de las aplicaciones dependen de la capacidad y el cuidado de los desarrolladores.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.Las nuevas APIs hacen ms potentes las aplicaciones client-side, pero si no se toman ms recaudos, los ataques tambin sern ms potentes. Nuevas caractersticas Nuevos tipos de ataquePrincipales amenazas en HTML5Cross Document Messaging (Web Messaging)HTML4 no permite a las pginas de un dominio pasar o acceder datos a pginas de otro dominio.HTML5 integra una API llamadapostMessageque crea un framework para un script en un dominio que permite pasar datos a un script que corra en otro dominiopostMessage incluye propiedades objeto que el desarrollador puede usar para verificar el origen de la peticinSi el desarrollador no realiza los suficientes chequeos y validaciones, se podra compartir informacin que no debera, o quedar expuesto a peticiones maliciosas.User trackingSpammingPrincipales amenazas en HTML5Cross-Origin Resource Sharing (CORS)Se permite a clientes de distintos dominios realizar requerimientos va XMLHttpRequest (AJAX).Headers HTTP:Access-Control-Allow-Origin: http://domainAccess-Control-Max-Age: 86400Access-Control-Allow-Methods: PUT, DELETEProblema: Se permite el envo de informacin entre dominios sin permiso del usuario.Bypassing access controlAtaques remotos a servidores webBotnet basada en la webAtaques DoS con CORS y Web WorkersEtcSe deben validar los headers, y los URLs pasados a XMLHttpRequest.openPrincipales amenazas en HTML5Web StorageMediante Cross Site Scripting se podra acceder o modificar los datos almacenados por otro dominio.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!Usar SessionStorage en lugar de LocalStorage, si la informacin no debe ser persistenteEjemplos de ataques: session hijacking, user tracking, etcWebDatabaseProblemas similares a lo anteriorVulnerable a SQL InjectionPrincipales amenazas en HTML5Web WorkersPueden realizar XMLHttpREquest, por lo que existe el problema de Cross-Origing Resource Sharing.Si bien no tienen acceso al DOM del sitio que lo invoca, web workers maliciosos pueden realizar un excesivo uso del CPU.Se deben validar los datos intercambiados por el web worker.GeolocationCualquier sitio puede determinar la ubicacin fsica del usuario. No se cumple el requerimiento de seguridad de Proteccin de identidadEl browser debe preguntar al usuario si desea permitir calcular la ubicacin.Principales amenazas en HTML5WebSockets Problema similares a Cross-Origing Resource Sharing.El acceso a servicios de web socket puede ser ganado 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 hijackingEl protocolo no maneja autenticacin. El protocolo de nivel de aplicacin debe hacerlo de forma separada en caso de datos sensiblesEl protocolo ws:// est expuesto a ataques Man-in-the-Middle (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 confiableEjemplos de ataquesXSS (Cross-site scripting)

ClickjackingXSS (Cross-site scripting)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.Puede ser utilizado para robar informacin sensible, secuestrar sesiones de usuario, realizar acciones maliciosas en el navegador.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)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.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)

Es una tcnica utilizada para asegurarse que los caracteres son tratados como datos, y no son "interpretados".No confundir con la codificacin de caracteres (Unicode).XSS (Cross-site scripting)Inyeccin

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

LocalStorage

PushStateXSS (Cross-site scripting)LocalStorage

Un atacante podra robar datos sensibles almacenados en el LocalStorage. Adems, no hay un flag HTTPOnly.

document.write("