Protegiendo la confidencialidad e integridad de datos en la web: construcción segura de páginas y servidores web
Prof. Alejandro Russo. Chalmers University of Technology, Suecia.
Página del Curso:
http://www.cse.chalmers.se/~russo/eci2015/index.html
IMPORTANTE: En dicha página se encuentra publicado el examen y la modalidad de entrega.
Las aplicaciones web son una herramienta fundamental para varias actividades que realizamos a diario. Desafortunadamente, dichas aplicaciones regularmente sufren vulnerabilidades que comprometen la confidencialidad e integridad de datos de sus usuarios. Por ejemplo, recientemente se demostró que un mal diseño en una red social famosa permitía a cualquier persona borrar fotos de cualquier usuario. En la mayoría de los casos, los errores de programación llevan a comprometer información confidencial (no es una novedad que errores de programación ocurran dada la complejidad de aplicaciones web). Desafortunadamente, las prácticas de seguridad actuales consisten principalmente en soluciones ad-hoc. En este curso, se presenta una manera sistemática de evitar comprometer la confidencialidad e integridad de datos aún en presencia de errores de programación. El control de flujo de información, o IFC (de su nombre en ingles Information-Flow Control ), es una tecnología capaz de proteger la confidencialidad e integridad de datos. IFC hace un seguimiento de cómo la información sensible, y cualquier dato derivada de esta, es manipulada por la aplicación web. De esta manera, se puede detectar (y prevenir) la distribución de dicha información a lugares o entidades no autorizadas. De la misma manera, pero para garantizar integridad de datos, IFC hace un seguimiento de datos probablemente contaminados y es capaz de garantizar que los mismos no afecten operaciones críticas de seguridad sin que hayan sido previamente sanitizados. Este curso introduce los problemas de seguridad en aplicaciones web, los fundamentos de IFC, y cómo aplicarlos para construir aplicaciones web que garanticen confidencialidad e integridad de datos. El material presentado en este curso está basado en resultados de investigación recientes.
Contenido del curso
El único prerequisito para este curso es tener conocimientos básicos de programación. El material del curso está en Inglés.
Día 1: Programación web y seguridad
Esta clase provee a los estudiantes con conocimientos básicos de los conceptos de programación web y las actuales medidas de seguridad.
- -HTML
- -JavaScript [Flanagan, 1998]
- -The Document Object Model
- -Modelo de seguridad en los navegadores [Barth et al., 2008b, a]
- -Discretionary Access Control (DAC)
- -The Same Origin Policy (SOP)
- -Cross-origin resource sharing (CORS)
- -Content Security Policy (CSP)
- -Ataques mediante cross-site scripting (XSS) [Garcia-Alfaro and Navarro-Arribas, 2008]
Día 2: Control del flujo de información
- -Retículas para seguridad [Denning and Denning, 1977]
- -Flujos de información explícitos e implícitos [Denning and Denning, 1977]
- -No interferencia [Goguen and Meseguer, 1982]
- -Integridad de datos como el dual de confidencialidad [Biba, 1977]
- -Un reticulado de seguridad para la web [Magazinius et al., 2010]
- -Usando flujo de información para hacer aplicaciones web más seguras [Gi_n et al., 2012]
- -Disjunction Category Labels en JavaScript [Stefan et al., 2012]
- -Comunicación entre diferentes dominios web
Día 3: COWL - Control del flujo de información en el navegador
Esta clase introduce COWL, una extensión para Firefox y Chrome capaz de preservar la confidencialidad de datos en páginas web [Stefan et al., 2014].
- -Mandatory Access Control
- -Contexts en el navegador
- -Post messages
- -Seguridad en iFrames, tabs, pages, y JavaScript workers
- -Declasificación de información como un privilegio
- -Programando páginas web seguras
Día 4: ESpectro - Control del flujo de información para un servidor web
Esta clase esta dedicada a controlar el flujo de la información en servidores web escritos en Node.js. Los contenidos de esta clase están basados en un trabajo en progreso.
- -Introducción a Node.js (programando servidores web en JavaScript)
- -Ejecución segura de código no confiable
- -Interposición API para Node.js
- -Discretionary Access Control
- -Mandatory Access Control
- -Programando servidores web seguros
Día 5: Formal garantías
Esta clase muestra una formalización para las partes principales del control de flujo de información en COWL and Node.js. De esta manera, se puede probar que los principios detrás de dichas herramientas garantizan la confidencialidad e integridad de datos [Heule et al., 2015].
- -Un cálculo basado en tareas aisladas
- -Contextos de evaluación y una combinación de semántica operacional
- -Reglas para el control de flujo de la información
- -Eliminando secretos de los términos
- -Simulación de programas y sus versiones con datos privados eliminados
- -Prueba de no interferencia
- -Control del flujo de la información en JavaScript
- -Garantías para COWL y Espectro
Modalidad de Examen: Trabajo.
Referencias
Adam Barth, Collin Jackson, and John C. Mitchell. Securing frame communication in browsers. In In Proc. of the 17th USENIX Security Symposium, 2008a.
Adam Barth, Collin Jackson, Charles Reis, and The Google Chrome Team. The Securitxy Architecture of the Chromium Browser. Technical report, 2008b.
K. J. Biba. Integrity considerations for secure computer systems. Technical Report ESD-TR-76-372, USAF Electronic Systems Division, Bedford, MA, April 1977.
D. E. Denning and P. J. Denning. Certification of programs for secure information flow. Comm. of the ACM, 20(7): 504–513, July 1977.
David Flanagan. JavaScript: The Definitive Guide. O’Reilly & Associates, Inc., 3rd edition, 1998.
Joaquin Garcia-Alfaro and Guillermo Navarro-Arribas. A survey on detection techniques to prevent cross-site scripting attacks on current web applications. In Proc. of the Second International Conference on Critical Information Infrastructures Security, CRITIS’07. Springer-Verlag, 2008.
Daniel B. Giffin, Amit Levy, Deian Stefan, David Terei, David Mazi`eres, John C. Mitchell, and Alejandro Russo. Hails: Protecting data privacy in untrusted web applications. In Proc. of the 10th USENIX Conference on Operating Systems Design and Implementation, OSDI’12. USENIX Association, 2012.
J. A. Goguen and J. Meseguer. Security policies and security models. In Proc. IEEE Symp. on Security and Privacy, pages 11–20, April 1982.
Stefan Heule, Deian Stefan, Edward Z. Yang, John C. Mitchell, and Alejandro Russo. IFC inside: Retrofitting languages with dynamic information flow control. In Conference on Principles of Security and Trust (POST). Springer, April 2015.
Jonas Magazinius, Aslan Askarov, and Andrei Sabelfeld. A lattice-based approach to mashup security. In Proc. Of the 5th ACM Symposium on Information, Computer and Communications Security, ASIACCS ’10. ACM, 2010.
Deian Stefan, Alejandro Russo, David Mazi`eres, and John C. Mitchell. Disjunction category labels. In Proc. of the 16th Nordic Conference on Information Security Technology for Applications, NordSec’11. Springer-Verlag, 2012.
Deian Stefan, Edward Z. Yang, Petr Marchenko, Alejandro Russo, Dave Herman, Brad Karp, and David Mazi`eres.
Deian Stefan, Edward Z. Yang, Petr Marchenko, Alejandro Russo, Dave Herman, Brad Karp, and David Mazi`eres.