Академический Документы
Профессиональный Документы
Культура Документы
SEGURIDAD EN SISTEMAS
Trabajo Final: Aspectos de seguridad en las nuevas tecnologas web
ndice
Abstract ............................................................................................................. 2 Introduccin ...................................................................................................... 2 HTML5 ................................................................................................................ 2 Javascript ............................................................................................................ 2 AJAX ................................................................................................................... 2 Nuevas funciones y APIs de HTML5 ................................................................... 4 Almacenamiento local / sitios offline ................................................................. 4 Comunicacin / Tiempo real .............................................................................. 5 Integracin con el sistema operativo ................................................................. 7 Multimedia / grficos / interfaz de usuario ........................................................ 9 Nuevas etiquetas ................................................................................................ 5 Presentacin y estilo........................................................................................... 5 Mejoras en la plataforma de desarrollo web del lado cliente............................ 7 Modelo de seguridad en HTML5 ......................................................................... 13 Principales amenazas en HTML5 ........................................................................ 17 Vulnerabilidades en HTML5 ............................................................................... 17 Cross Document Messaging (Web Messaging) .................................................. 17 Cross-Origin Resource Sharing (CORS) ............................................................... 20 Web Storage ....................................................................................................... 17 Web Database .................................................................................................... 17 Web Workers ...................................................................................................... 20 Geolocation ........................................................................................................ 17 WebSockets ........................................................................................................ 17 Ejemplos de ataques .......................................................................................... 17 XSS (Cross-site scripting) .................................................................................... 17 Clickjacking ......................................................................................................... 17 Conclusin ......................................................................................................... 25 Recomendaciones finales ................................................................................... Referencias ........................................................................................................ 26
Abstract
En el presente trabajo se hace una introduccin a las nuevas tecnologas web, que dan lugar a HTML5 y todo su conjunto de mejoras y funcionalidades, y se hace un breve anlisis ToDo
Introduccin
Intro sobre los alcances de lo analizado. SEGURIDAD DEL LADO CLIENTE. Blabla Paraprotteger contraseas e informacin sensible en la web se debe utilizar los protocolos SSL / TLS (HTTPS) y hacer todos los controles en el servidor. Como se ver a continuacin, si lo que se desea es proteger pginas con contrasea o enviar datos cifrados, lo ideal es usar script del lado servidor y conexiones encriptadas, ya que lo que se enva desde el lado del cliente (generado a partir de javascript por ejemplo), puede ser ledo y modificado por cualquier usuario con acceso a esa conexin. Blabla
HTML5
HTML5 es la ltima evolucin del estndar que define HTML (definido por la W3C, an en desarrollo. La ltima versin de la especificacin puede encontrarse en http://dev.w3.org/html5/spec/Overview.html). Sin embargo, el trmino HTML5 no hace referencia slo a la nueva versin del lenguaje de marcado base para la web, sino que representa dos conceptos diferentes: La nueva versin del lenguaje HTML, con nuevos elementos, atributos y comportamientos. Un gran conjunto de tecnologas que permiten sitios y aplicaciones web ms diversas y poderosas. Este conjunto es llamado HTML5 & friends pero es frecuentemente mencionado simplemente como HTML5. Este conjunto de tecnologas (estndares y APIs) forman una nueva plataforma web, compuesta en conjunto por los lenguajes HTML5 + Javascript + CSS. En este sentido, la denominacin HTML5 es un trmino amplio que abarca a un grupo de tecnologas y especificaciones afines. Adems, es importante ser consciente de que HTML5 y amigos estn sometidos a un proceso constante de cambio y escrutinio, la especificacin sigue en desarrollo. X|x|Son tecnologas de presentacin y ejecucin del lado del cliente. Es decir, el usuario realiza requerimientos de informacin al servidor web, pero el procesamiento relacionado con estas funciones se realiza en la mquina del usuario, ms especficamente en el browser, de forma nativa, sin intervencin del servidor, ni plugins. As se obtienen ms ventajas para aplicaciones dinmicas, ms eficiencia, mejor soporte multimedia y de comunicacin, facilidades a los desarrolladores y estandarizacin. Se tiene una mayor potencia a la hora del desarrollo web, evitando usar tecnologas de terceros, y simplificando la longitud y complejidad del cdigo. A su vez, se facilita lograr una mejor estructuracin y semntica de los sitios web. La implementacin de estas tecnologas depende de cada browser, que tambin estar a cargo de la seguridad. La especificacin de HTML5 an se encuentra en desarrollo, pero todos los navegadores modernos ya soportan la mayora de las funcionalidades. Una de las grandes ventajas es que es el browser el que implementa efectos visuales, soporte multimedia y muchas funciones tiles, que antes deban realizarse mediante libreras Javascript o plugins como Flash. En http://html5test.com/ se puede verificar cules son las funciones que soporta el navegador que se est usando.
En la prxima seccin se mencionar y dar una breve descripcin de las nuevas funcionalidades, haciendo foco en posibles cuestiones relacionadas con la seguridad.
Javascript
Javascript es un lenguaje interpretado por el navegador, que permite extender las capacidades de HTML, brindando la posibilidad de tener pginas dinmicas, mejoras en la interfaz de usuario, etc. Los programas (o scripts) escritos en javascript pueden acceder y modificar la estructura del cdigo HTML que es interpretado por el navegador, mediante la interfaz DOM. El cdigo JavaScript puede estar embebido en los documentos HTML (inline: dentro de tags HTML; o en bloques de script), o en archivos externos .js que son linkeados desde el HTML. Este cdigo es enviado desde el servidor y ejecutado en tiempo real en el lado del cliente, sin ser compilado a un archivo binario. Es decir, el usuario puede ver el cdigo JavaScript, y modificarlo. El cdigo no puede ser ocultado ni protegido. Aqu aparecen las primeras cuestiones bsicas de seguridad en relacin a este lenguaje: cualquier navegador permite la opcin de mostrar al usuario el cdigo HTML y los scripts relacionados, por lo que no debera incluirse informacin sensible sin encriptar. Por otro lado, fcilmente el usuario (o una aplicacin con acceso al navegador), puede modificar este cdigo, o insertar nuevo (lo que se denomina inyectar), alterando el comportamiento original del script. Si el usuario o la aplicacin actan de forma maliciosa, pueden causar un efecto indeseado en el sitio web. Por ejemplo, debido a que los scripts pueden ser modificados o deshabilitados, las validaciones que se hacen a un formulario, se pueden realizar mediante JavaScript por conveniencia para los usuarios, pero para asegurar que lo ingresado es lo esperado, debe validarse tambin en el servidor. JavaScript tiene su propio modelo de seguridad, y cuestiones a tener en cuenta que escapan al alcance de este informe. Hay dos restricciones bsicas de seguridad: El entorno de ejecucin de los scripts es la pestaa del browser: se ejecutan en un sandbox y slo pueden realizar acciones relacionadas con el sitio web abierto actualmente en esa pestaa.
Poltica del mismo origen (same origin policy): los scripts provenientes de un determinado sitio web origen, no tienen acceso a informacin (como usuarios, passwords, cookies, etc) de documentos provenientes de otro origen (es decir, de un sitio web con diferente dominio, puerto o protocolo). Una alternativa a esto es usar scripts firmados digitalmente, signed script policy. Limitaciones de JavaScript (previas a HTML5) Como consecuencia de las restricciones mencionadas anteriormente, hay varias limitaciones sobre lo que se puede hacer con JavaScript. Sin embargo, varias de estas limitaciones son superadas con las tecnologas que ofrece HTML5, lo cual ser analizado en la prxima seccin. No puede leer ni escribir en el sistema de archivos del usuario, ni del servidor. nico medio de almacenamiento estable: cookies. Slo puede comunicarse entre distintas pginas, si fueron generados desde el mismo sitio (mismo origen). No puede ver las interacciones del usuario con el navegador (historial, otras pginas abiertas). No puede acceder a cookies ni variables generadas por otros sitios. No puede hacer llamadas al sistema operativo, ni a otras partes del browser externas a la pestaa donde se ejecuta. Amenazas Cross-site Las principales amenazas relacionadas con JavaScript son: Cross-site scripting (XSS): es una violacin a la poltica del mismo origen. Un atacante inyecta cdigo malicioso en un sitio vulnerable, luego se explota la confianza que un usuario tiene en ese sitio. Se tratar ms adelante como ejemplo de ataque. Cross-site request forgery (CSRF): comandos no autorizados son transmitidos por un usuario en el cual el sitio web confa. Se explota la confianza que un sitio tiene un usuario en particular, ya que se fuerza al navegador web validado de una vctima a enviar una peticin a una aplicacin web vulnerable, la cual entonces realiza la accin elegida a travs de la vctima.
AJAX
AJAX (Asynchronous JavaScript And XML) es un conjunto de tecnologas que permite comunicacin asncrona entre el cliente y el servidor. Desde un script que se ejecuta en una pgina web se pueden pedir datos al servidor (va requerimientos HTTP: XMLHttpRequest), y con esos datos modificar (de forma asincrnica) lo que se muestra al usuario, permitiendo as tener sitios dinmicos, sin necesidad de recargar toda la pgina (comunicacin sincrnica). De esta forma, los requerimientos al servidor son transparentes al usuario, y se gana en velocidad de navegacin. Permite la interaccin actual de la web dinmica 2.0, en la que nos comunicamos constantemente con el servidor sin apretar F5: redes sociales, chats, autocompletado y validacin de formularios, respuestas instantneas a formularios de consulta (ej: bsqueda de Google), aplicaciones de trabajo colaborativo (ej: Google Docs), etc. Al utilizar AJAX debemos tener en cuenta tanto la seguridad del lado del cliente, como del lado del servidor, ya que mediante esta tcnica se produce la interaccin entre ambos. Esto incluye autenticacin,
autorizacin, control de acceso y validacin de la entrada. Debido a que los requerimientos XMLHttpRequest que usa AJAX usan el protocolo HTTP, tiene las mismas vulnerabilidades que la comunicacin sincrnica de los sitios web que no usan AJAX. Al estar basado en javascript, una posible amenaza son los ataques Cross-site scripting (XSS).
Con localStorage, el almacenamiento es persistente, con la poltica del mismo origen. Con sessionStorage los datos estn disponibles mientras el navegador est abierto (sobreviven a recargas de la pgina). Abrir una pgina en una nueva pestaa o ventana crea una nueva sesin. Puede ser mejor por cuestiones de seguridad, ya que los datos se borran al cerrar el navegador. O Web SQL Database Se proporciona toda la potencia de una base de datos relacional SQL estructurada, implementada y almacenada en el propio navegador. O Indexed Database Se encuentra a medio camino entre Web Storage y Web SQL Database. Al igual que Web Storage, se trata de una sencilla asignacin de valores y claves, pero admite ndices similares a los de las bases de datos relacionales, por lo que la bsqueda de objetos que corresponden a un campo especfico es rpida. Adems, no es necesario repetir la accin de forma manual en todos los objetos almacenados. O Application Cache Basado en un manifest se determina qu archivos deben estar disponibles offline. As se puede navegar de modo offline, se gana en velocidad, y se reduce la carga del servidor. O Eventos online y offline
O Desktop Drag-in y Drag-out (File API) Mediante la API FileReader se puede arrastrar archivos del sistema de archivos de usuario y subirlos al navegador (Drag-in). En Google Chrome se permite adems el proceso inverso: arrastrar archivos del navegador (provenientes del servidor) al escritorio del usuario. O Geolocation Permite obtener la locacin geogrfica del dispositivo que accede al sitio. La especificacin tiene en cuenta que como se exponen los datos de la ubicacin geogrfica del usuario, esto puede comprometer su privacidad. Por ello es necesario consensuar el permiso para utilizar dicha informacin. Esta consulta es realizada automticamente por el navegador enviando un mensaje a travs de un popup o en su parte superior (la implementacin vara segn el navegador). O Interaccin con el hardware del dispositivo: Deteccin de la orientacin del dispositivo (evento registrado va javascript) Eventos touch: se puede manejar eventos relacionados con pantallas tctiles. Camera API: interaccin con la cmara del dispositivo, sin uso de plugins. Entrada de audio.
las tramas WebSocket de datos pueden empezar a enviarse en ambos sentidos entre el cliente y el servidor en modo full-duplex, sin realizar nuevos requerimientos de HTTP.
Algunos ejemplos de sitios web con WebSockets pueden encontrarse ac: http://www.websocket.org/demos.html O Eventos enviados por el servidor (SSE) Cuando la aplicacin requiere principalmente recibir actualizaciones o mensajes peridicos del servidor, esta es una mejor alternativa. Ahora es mucho ms simple que la tcnica Push o Comet via AJAX. Se requiere un cdigo simple en el servidor para hacer un stream de eventos a la aplicacin web. Y desde el lado del cliente, la aplicacin web trabaja de forma similar a como maneja cualquier otro tipo de eventos, a travs de la interfaz EventSource. A diferencia de WebSocket, Los SSE son enviados a travs de HTTP tradicional, por lo que no requieren un protocolo especial ni modificaciones en el servidor. Es recomendable chequear el atributo origen del evento, para asegurarse se slo se aceptan mensajes desde dominios esperados, evitando posibles agujeros de seguridad. Tambin es buena idea chequear la integridad del mensaje recibido en el evento.
10
Se implementan estndares abiertos de Comunicacin en Tiempo Real, sin uso de plugins, permitiendo streaming de audio/video y compartir datos entre browsers (peers).
Perfomance & Integracin: Mejoras en la plataforma de desarrollo web del lado cliente
Se logra una optimizacin en la velocidad y en el uso del hardware. Adems, las nuevas herramientas facilitan el desarrollo de aplicaciones web que se ejecutan en el cliente. Algunas de estas mejoras son: O Web workers Resuelve los problemas de concurrencia que aparecen en Javascript, ya que la ejecucin de los scripts se realiza en un nico thread, por lo que si se requiere procesar grandes cantidades de datos y manipular el DOM, para gestionar eventos de la interfaz de usuario debe esperarse a que lo anterior termine de ejecutarse. En cambio, mediante un web worker, se puede ejecutar un script en paralelo (en background) que realice acciones con tiempos de ejecucin largos, evitando que se bloquee la interfaz de usuario. La comunicacin entre un Worker y su pgina principal se realiza mediante un modelo de evento y el mtodo postMessage(). Este modelo de ejecucin tambin requiere de varias consideraciones sobre su seguridad, en cuanto al acceso que puedan tener. Los workers generan nuevos threads a nivel del Sistema Operativo, por lo que debe tenerse cuidado con los efectos de la concurrencia. Sin embargo, los puntos de comunicacin con otros subprocesos estn cuidadosamente controlados, por lo que es difcil que aparezcan problemas. Los workers no pueden manipular directamente con el DOM, sino que deben hacerlo enviando mensajes al script principal. Por otro lado, los scripts del worker deben ser archivos externos con el mismo esquema URL que la pgina que lo llama. Por ejemplo, una pgina https: no puede iniciar worker scripts que comiencen con una URL http: O XMLHttpRequest Level 2 (XHR2) El objeto que hace posible la comunicacin mediante AJAX fue renovado, introduciendo una gran cantidad de nuevas funciones que ponen fin a los disparatados problemas de nuestras aplicaciones web, como solicitudes de origen cruzado, eventos de progreso de subidas y compatibilidad con subida/bajada de datos binarios. Esto permite a AJAX trabajar en coordinacin con muchas de las API HTML5, como FileSystem, Web Audio y WebGL. O Sandbox en Iframes Para combatir uno de los principales problemas de seguridad de los iframes, que pueden abrir cualquier elemento externo a nuestro sitio, sin que podamos controlarlo, se incorpora el atributo sandbox que restringe algunas acciones: desactiva complementos, deshabilita formularios, desactiva scripts, desactiva enlaces a otros contextos de navegacin, el contenido se trata como de origen diferente. Mediante algunos atributos se puede relajar algunas restricciones, por ej: allow-same-origin, allow-top-navigation, allow-forms, allow-scripts.
<iframe sandbox="allow-same-origin allow-forms allow-scripts" src="http://www.example.com/incrustado.html"></iframe>
11
En pginas dinmicas que se actualizan mediante AJAX, el historial del navegador no cambia (slo puede modificarse el hash del URL, es decir, lo que est despus del #). Mediante el mtodo pushState() puede modificarse el historial (actualizando el URL sin acceder directamente al mismo, guardando adems un objeto de dato si se desea), para que los botones back y forward del navegador tengan el efecto deseado. Al modificarse el estado actual del historial, se lanza un evento popState, que puede ser capturado mediante Javascript para recuperar los estados guardados. Por razones de seguridad, mediante estos mtodos se respeta la poltica del mismo origen. Es decir, no puede modificarse el protocolo+dominio+puerto del URL, para evitar posibles ataques de phishing o falsificacin de contenido. Por otro lado, debe limitarse el nmero de entradas al historial que puede crear o modificar una pgina, para evitar que sitios maliciosos inunden el historial, o lo manipulen de forma perjudicial para el usuario. O Drag & Drop nativo Arrastrar elementos de un lugar a otro en la pgina sin el uso de plugins. O Nuevos selectors (DOM API) Simplifican y facilitan el cdigo javascript O Atributos de datos personalizados Para definir, almacenar y recuperar datos personalizados en el DOM
12
13
El diagrama anterior muestra una visin general de las caractersticas de HTML5 y cmo se relacionan entre s en el contexto de un navegador web. DomainA.csnc.ch es el origen del sitio web cargado que incrusta tres Iframes de fuentes diferentes. El Iframe con fuente untrusted.csnc.ch se ejecuta en un sandbox (entorno limitado) y no tiene permiso para ejecutar cdigo JavaScript. Los Iframes cargados desde anydomainA.csnc.ch y anydomainB.csnc.ch se comunican entre s haciendo uso de Web Messaging Los custom schemes (esquemas personalizados de URL) y content handlers (manejadores de contenido) estn registrados por domainB.csnc.ch, que se solicita si el usuario pide un recurso adecuado. Recursos adicionales son cargados de domainC.csnc.ch usando Cross-Origin Resource Sharing. Geolocation API, Offline Web Application, Web Storage y Web Workers representan caractersticas de HTML5 que pueden ser utilizados por los sitios web. En este ejemplo anydomainB.csnc.ch hace uso de todas ellas.
14
Web Storage
Bla bla
Web Database
Bla bla
Web Workers
Bla bla
Geolocation
Bla bla
WebSockets
Bla bla
15
A Security Analysis of Next Generation Web Standards ENISA (European Network and Information Security Agency) http://people.cs.kuleuven.be/~lieven.desmet/research/publications/docs/NG_Web_Security.pdf La ENISA identific 51 problemas y amenazas de seguridad en las tecnologas de HTML5, incluyendo los estndares de comunicacin cross-origin como CORS, y en el acceso a datos locales como geolocation. En este informe se detalla este anlisis de seguridad y se brindan recomendaciones.
16
Ejemplos de ataques
XSS (Cross-site scripting)
Bla bla
Clickjacking
Bla bla
17
Conclusin
Bla Bla
18
Referencias
HTML5: Introduccin. Nuevas funciones y APIs o W3C: Definicin del estndar HTML5 http://www.w3.org/html/wg/drafts/html/master/ o Mozilla Developer Center: HTML5. https://developer.mozilla.org/en-US/docs/HTML/HTML5 o HTML5 Rocks (proyecto de Google). http://www.html5rocks.com ; http://slides.html5rocks.com http://playground.html5rocks.com/ o HTML5 Demos and Examples. http://html5demos.com/ o HTML5 test How well does your browser support HTML5? http://html5test.com/ o HTML5 Bookmarks http://html5bookmarks.com/ o Top 10 reasons to use HTML5 right now. http://tympanus.net/codrops/2011/11/24/top-10reasons-to-use-html5-right-now/ o HTML5 Features and Overview http://application-aegis.blogspot.com.ar/2012/06/html5features-and-overview.html Javascript o Javascript tutorial - Security http://www.howtocreate.co.uk/tutorials/javascript/security o JavaScript Security in Mozilla http://www.mozilla.org/projects/security/components/jssec.html o Wikipedia: Javascript Security http://en.wikipedia.org/wiki/JavaScript#Security AJAX o Ajax security: Are AJAX Applications Vulnerable to Hack Attacks? http://www.acunetix.com/websitesecurity/ajax/ o Symantec: Ajax Security Basics. http://www.symantec.com/connect/articles/ajax-securitybasics o Wikipedia: AJAX http://es.wikipedia.org/wiki/AJAX Almacenamiento estable / offline. o HTML5 Rocks Offline: What does it mean and why should I care? http://www.html5rocks.com/en/tutorials/offline/whats-offline/ o HTML5 Rocks Client-side storage. http://www.html5rocks.com/en/tutorials/offline/storage/ FileSystem API Geolocation. o Using the HTML5 Filesystem API.http://my.safaribooksonline.com/book/webdevelopment/html/9781449311384/introduction/i_sect11_d1e378 o Basic Concepts About the Filesystem API. https://developer.mozilla.org/enUS/docs/DOM/File_APIs/Filesystem/Basic_Concepts_About_the_Filesystem_API
19
o Ubicacin Geogrfica con Geolocation y Google Map http://surpatterns.com/sitio/html5-enespanol-surpatterns/tutorial-html5-en-espanol-ubicacion-geografica-con-geolocation-y-googlemap/ Conectividad: o Web Messaging http://dev.opera.com/articles/view/window-postmessage-messagechannel/ ; http://www.cristalab.com/tutoriales/introduccion-a-html5-web-messaging-c105028l/ o CORS https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS ; http://enable-cors.org o Server-sent events. http://www.html5rocks.com/en/tutorials/eventsource/basics/ ; https://developer.mozilla.org/en-US/docs/Server-sent_events/Using_server-sent_events o WebSockets. http://www.websocket.org ; http://www.html5rocks.com/es/tutorials/websockets/basics/ ; https://developer.mozilla.org/en-US/docs/WebSockets o WebRTC. http://www.html5rocks.com/en/tutorials/webrtc/basics/ ; https://developer.mozilla.org/en-US/docs/WebRTC Perfomance & integracin: o Web workers https://developer.mozilla.org/en-US/docs/DOM/Using_web_workers ; http://www.html5rocks.com/es/tutorials/workers/basics/ ; o XMLHttpRequest2. http://www.html5rocks.com/es/tutorials/file/xhr2/ o Sandbox en Iframe. http://www.desarrolloweb.com/articulos/sandbox-html5.html ; http://javiercasares.com/blog/html-5-los-malditos-iframes/ o History API https://developer.mozilla.org/en-US/docs/DOM/Manipulating_the_browser_history https://wiki.mozilla.org/Firefox_3.6/PushState_Security_Review HTML5 Seguridad, amenazas: o HTML5 Security Resources Repository http://html5security.org/ o HTML5 Web Security (Michael Schmidt - Master thesis) http://media.hackinglab.com/hlnews/HTML5_Web_Security_v1.0.pdf o HTML5 Top 10 Threats Stealth Attacks and Silent Exploits o La seguridad de HTML5 no es tal http://h30565.www3.hp.com/t5/Destacado/La-seguridad-deHTML5-no-es-tal/ba-p/8780?profile.language=es o OWASP HTML5 Security Cheat Sheet https://www.owasp.org/index.php/HTML5_Security_Cheat_Sheet o eSecurity Planet Top 5 Security Threats in HTML5 http://www.esecurityplanet.com/trends/article.php/3916381/Top-5-Security-Threats-inHTML5.htm
20
o Help Net Security Top 10 HTML5 threats and attack vectors http://www.netsecurity.org/article.php?id=1656 o Mashable How Web Security Will Change With HTML5 http://mashable.com/2011/04/29/html5-web-security/ o HTML5 Overview: A Look at HTML5 Attack Scenarios http://www.trendmicro.com/cloudcontent/us/pdfs/security-intelligence/reports/rpt_html5-attack-scenarios.pdf o ENISA (European Network and Information Security Agency) A Security Analysis of Next Generation Web Standards http://www.enisa.europa.eu/activities/Resilience-and-CIIP/criticalapplications/web-security/a-security-analysis-of-next-generation-web-standards o HTML5 Security Cheatsheet http://html5sec.org/
21