• No se han encontrado resultados

Esquema de seguridad para el desarrollo de aplicaciones web para

N/A
N/A
Protected

Academic year: 2023

Share "Esquema de seguridad para el desarrollo de aplicaciones web para"

Copied!
48
0
0

Texto completo

(1)

INSTITUTO POLITECNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA

UNIDAD CULHUACÁN

Sección de Estudios de Posgrado e Investigación

“Esquema de Seguridad para el desarrollo de Aplicaciones Web para

CFE”

T E S I N A

QUE PARA OBTENER EL GRADO DE ESPECIALISTA EN SEGURIDAD INFORMÁTICA Y TECNOLOGÍAS DE LA INFORMACIÓN.

P R E S E N T A:

ING. MANUEL ALEJANDRO CARREÓN MENDOZA

ASESOR:

DR. RUBÉN VÁZQUEZ MEDINA

(2)

Instituto Politécnico Nacional ESIME Culhuacán

2 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

Instituto Politécnico Nacional ESIME Culhuacán

Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

Instituto Politécnico Nacional ESIME Culhuacán

Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

(3)

Instituto Politécnico Nacional ESIME Culhuacán

3 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

(4)

Instituto Politécnico Nacional ESIME Culhuacán

4 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

ESQUEMA DE SEGURIDAD PARA EL DESARROLLO DE APLICACIONES WEB PARA CFE

Instituto Politécnico Nacional ESIME

Culhuacán

Sección de Estudios de Posgrado e Investigación

Tesina para obtener el grado de especialista en Seguridad Informática y Tecnologías de la Información

Presenta Ing. Manuel Alejandro Carreón Mendoza

Asesor Dr. Rubén Vázquez Medina

(5)

Instituto Politécnico Nacional ESIME Culhuacán

5 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

Tabla de Contenido

RESUMEN 7

ABSTRACT 8

CAPÍTULO 1: MARCO DE REFERENCIA 9

1.1 DEFINICIÓN DEL PROBLEMA 9

1.2 JUSTIFICACIÓN 9

1.3 OBJETIVO 10

1.4 HIPÓTESIS 10

CAPÍTULO 2: ESTADO DEL ARTE 11

2.1 HISTORIA DE LA WORLD WIDE WEB 11

2.2 EVOLUCIÓN DE LA WEB 11

2.3 APLICACIONES WEB 12

2.4 TECNOLOGÍAS DE SERVIDOR PARA EL DESARROLLO DE APLICACIONES WEB 13

2.4.1 Php 14

2.4.2 Asp.Net 16

CAPÍTULO 3: DESARROLLO DE APLICACIONES SEGURAS 18

3.1 RESUMEN 18

3.2 CONSIDERACIONES INICIALES PARA EL DESARROLLO 18

3.2.1 Minimizando el área de la superficie de ataque 19

3.2.2 Seguridad por defecto 20

3.2.3 Mínimo privilegio 20

3.3 PRINCIPIOS DE SEGURIDAD EN EL DESARROLLO 20

3.3.1 Defensa profunda 20

3.3.2 Fallar de manera segura 20

3.3.3 Segregación de funciones 21

3.4 CONSIDERACIONES ADICIONALES 21

3.4.1 Inseguridad de los sistemas externos 21

3.4.2 No confiar en la seguridad a través de la oscuridad 21

3.4.3 Simplicidad en el desarrollo 22

3.4.4 Corregir errores de seguridad correctamente 22

(6)

Instituto Politécnico Nacional ESIME Culhuacán

6 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

CAPÍTULO 4: MODELADO DE AMENAZAS EN EL DESARROLLO 23

4.1 RESUMEN 23

4.2 ANTECEDENTES 23

4.3 PASO 1: IDENTIFICAR OBJETIVOS DE SEGURIDAD 25

4.4 PASO 2: CREAR UNA DESCRIPCIÓN GENERAL DE LA APLICACIÓN 25

4.5 PASO 3: DESCOMPONER LA APLICACIÓN 26

4.6 PASO 4: IDENTIFICACIÓN DE AMENAZAS 26

4.6.1 Identificar amenazas y ataques comunes 27

4.6.2 Metodología STRIDE 29

4.6.3 Identificar amenazas a través de casos de uso 29

4.6.4 Identificar amenazas a través del flujo de datos 29

4.7 PASO 5. IDENTIFICACIÓN DE VULNERABILIDADES 30

4.7.1 Autenticación 30

4.7.2 Autorización 32

4.7.3 Validación de datos 33

4.7.4 Administración de la Configuración 33

4.7.5 Datos sensibles 34

4.7.6 Administración de sesiones 34

4.7.7 Cifrado 35

4.7.8 Manipulación de parámetros 36

4.7.9 Manejo de excepciones 36

4.7.10 Auditoria y bitácoras 37

4.8 DESCRIPCIÓN DE UN EJEMPLO TÍPICO 37

Paso1: Definición de objetivos 38

Paso2: Descripción general de la aplicación. 38

Paso 3: Descomponiendo la Aplicación 40

Paso 4: Identificando Amenazas 41

Paso 5: Identificación de Vulnerabilidades. 43

Siguientes Pasos 44

CONCLUSIONES 45

RECOMENDACIONES 46

TRABAJO A FUTURO 47

BIBLIOGRAFÍA 48

(7)

Instituto Politécnico Nacional ESIME Culhuacán

7 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

Resumen

Con la cada vez más común integración de las tecnologías de redes a las empresas, se han generado cambios en la manera de trabajar de estas y se han venido implementando nuevas tecnologías que les permiten aprovechar mejor los recursos tecnológicos. Muchas de las aplicaciones que anteriormente se trabajan en ambientes de escritorio se han migrado a tecnologías Web, esto en gran parte motivado por la facilidad de acceder a las aplicaciones desde cualquier computadora conectada a la intranet o desde Internet y por las necesidades de disponibilidad de información de las organizaciones.

La complejidad de los sistemas web ha venido en aumento, cada vez ofrecen mayor funcionalidad, llegando en algunos casos a lucir como las aplicaciones de escritorio y ofreciendo la misma o mayor facilidad de uso.

La implementación de estos sistemas en los procesos más importantes viene de la mano con estrictos requisitos de accesibilidad, respuesta y seguridad en las aplicaciones. Para cumplir con los requerimientos es necesario reflexionar sobre la mejor arquitectura y las técnicas de diseño más adecuadas para satisfacerlos.

Anteriormente la presencia de aplicaciones web se limitaba al uso de portales que mostraban información estática o general de las empresas; hoy en día esos portales se han convertido en el centro de trabajo de gran parte de los procesos productivos y administrativos de las empresas.

La Comisión Federal de Electricidad (CFE) es una empresa que cuenta con una gran infraestructura de red y consciente de las oportunidades y beneficios que los sistemas web le pueden ofrecer, se han desarrollado muchas aplicaciones para satisfacer distintas necesidades de sus procesos productivos, pero a su vez, no se cuenta con un esquema unificado para el desarrollo de sistemas basados en Web. En cada centro de trabajo, los distintos equipos de desarrollo han decidido que tecnologías utilizar para el desarrollo de los sistemas; en muchas ocasiones el tema de la seguridad de los sistemas no se ha considerado al momento de desarrollarlos.

Con este trabajo de Tesina, se busca proponer un esquema de seguridad para el desarrollo de Aplicaciones Web que garantice la protección de los datos sensibles de los procesos productivos y administrativos de la CFE.

(8)

Instituto Politécnico Nacional ESIME Culhuacán

8 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

Abstract

Each time, integration of network technologies is more common between enterprises. Changes have been generated in the way these firms work actually and implementation of new technologies has been made too. Many desktop applications (Windows applications) have been migrated to Web Application, this motivated by the advantages that Web Technology offers like access from any computer connected to the company’s network or from internet.

Complexity of Web Systems has growth, each time they offer more functionability performing sometimes as Desktop Applications, and offering the same or more usability.

The implementation of these systems in the more important process comes with strict requirements of accessibility, response and security in applications. To satisfy the requirements is necessary to reflex about the best architecture and the more adequate and best practices of Software Design.

The presence of Web Applications before was limited for using of simple Portals that showed only static information or general information about enterprises; by now theses portals have become the main works center of most part of the productive and administrative process of the companies.

The Comisión Federal de Electricidad (CFE) is an enterprise that counts with a great network infrastructure. Being conscious of big opportunities and benefits that Systems can offer, Applications have been development in the company to satisfy different needs of his productive processes, but at the same time it does not count with an unified scheme of Software Development based on Web platform. In each work center, the development teams have decided which kind of Technologies to use for Software Development; often Systems Security has not been considerate in the development.

This work proposes a scheme of security for the development of Web Applications that grant the protection of sensible data of the productive and administrative processes of CFE.

(9)

Instituto Politécnico Nacional ESIME Culhuacán

9 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

Capítulo 1: Marco de Referencia

1.1 DEFINICIÓN DEL PROBLEMA

Actualmente muchas organizaciones no cuentan con un esquema de seguridad definido que garantice la protección de la información procesada y almacenada en los distintos Sistemas Web que se encuentran operando en su Intranet corporativa; esta misma situación se vive en la Comisión Federal de Electricidad. Muchas aplicaciones se han desarrollado sin contemplar algún mecanismo de seguridad o análisis de posibles riesgos de la información que contienen y los efectos que produciría en la organización un ataque sobre ellos.

1.2 JUSTIFICACIÓN

En la actualidad, la información, es uno de los activos más importantes de cualquier organización y los sistemas informáticos ayudan en gran medida a la administración, almacenamiento y procesamiento de ésta. Tomando en cuenta la facilidad que los Sistemas Web ofrecen para acceder a la información desde cualquier equipo conectado a la intranet y tomando como premisa que la información contenida se utiliza para la toma decisiones en varios procesos, resulta imprescindible establecer mecanismos de seguridad que garanticen la integridad de la información, su disponibilidad y que sólo sea accesible para el personal autorizado.

(10)

Instituto Politécnico Nacional ESIME Culhuacán

10 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE 1.3 OBJETIVO

Proponer una estrategia para el desarrollo seguro de Aplicaciones Web que sirva de herramienta para la planeación de la seguridad en el desarrollo de sistemas basados en Web dentro de la Comisión Federal de Electricidad. La estrategia propuesta definirá los mecanismos y principios que se deben considerar para lograr los niveles de seguridad esperados, según el nivel de importancia de los sistemas en la organización y el valor de la información que contienen.

1.4 HIPÓTESIS

La estrategia de seguridad que se propone, podrá ser implementada en los nuevos proyectos que se realicen, así mismo, los sistemas que no cuenten con seguridad implementada podrán utilizar esta estrategia para aumentar el nivel de seguridad de la información.

(11)

Instituto Politécnico Nacional ESIME Culhuacán

11 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

Capítulo 2: Estado del Arte

2.1 HISTORIA DE LA WORLD WIDE WEB

La World Wide Web, conocida también como la Web, es una red mundial de documentos entrelazados se les denomina así porque tienen enlaces a otros documentos. A estos enlaces entre documentos se les define con el término de hipertexto. La Web fue creada alrededor de 1989 por el inglés Tim Berners-Lee y el belga Robert Cailliau mientras trabajaban en el CERN (European Organization for Nuclear Research) en Ginebra, Suiza, y fue publicada en 1992.

Se diseñó para trabajar sobre la Internet1, en un inicio era muy complicado crear los documentos, fue así que se diseñó el Lenguaje de Formato de Documentos para Hipertexto ó HTML y a su vez se diseñó el Protocolo de transferencia de Hipertexto ó HTTP para transportar los documentos a través de la red. Mediante el uso de HTML, que relativamente es sencillo, muchos usuarios sin conocimientos computacionales avanzados pudieron desarrollar lo que se conoce como Páginas Web, que se transferían de una computadora a otra mediante el protocolo HTTP.

2.2 EVOLUCIÓN DE LA WEB

La Web es una tecnología que ha evolucionado considerablemente, primero lo hizo pensando en la comodidad del usuario para visualizar de manera sencilla la información, que inicialmente sólo se presentaba mediante texto, posteriormente se añadieron las imágenes y después el sonido, ofreciendo al usuario una experiencia multimedia que enriquecía los contenidos compartidos.

La mayor evolución se generó alrededor del año 1999, cuando muchas personas y empresas vieron el potencial económico de la Web, fue así que los sitios web empezaron a transformarse de sitios Web estáticos en Aplicaciones Web dinámicas. La necesidad de ofrecer mejores contenidos y mayor dinamismo a los sitios motivó la aparición de muchas tecnologías que prometían ofrecer las soluciones buscadas, muchas desaparecieron, otras tantas se mantienen y continúan en desarrollo.

1Internet es un conjunto descentralizado de redes de comunicación interconectadas, que utilizan la familia de protocolos TCP/IP, garantizando que las redes físicas heterogéneas que la componen funcionen como una red lógica única, de alcance mundial.

(12)

Instituto Politécnico Nacional ESIME Culhuacán

12 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE 2.3 APLICACIONES WEB

Con la necesidad de generar interacción de los usuarios con los sitios Web, los fabricantes de Servidores Web2 permitieron que se ejecutaran programas externos mediante la implementación de aplicaciones CGI (Common Gateway Interface). Esto le permitió a las aplicaciones recibir información de los usuarios y procesarla en programas externos que generaban un resultado que era devuelto al usuario.

Las aplicaciones CGI podían crearse con cualquier lenguaje que entendiera el Servidor Web y que generara archivos ejecutables, normalmente se utilizaba el lenguaje C por su popularidad entre los desarrolladores. Básicamente el funcionamiento era el siguiente:

 El cliente solicitaba al servidor un URL3 que contenía un CGI

 El servidor prepara el entorno de ejecución y manda los parámetros necesarios a la aplicación

 Se ejecuta la aplicación realizando todas sus operaciones y se captura su salida estándar.

 El resultado es generado con el tipo MIME4 necesario para ser interpretado por el cliente.

 Finalmente se envía el resultado de la solicitud al cliente.

Si bien esta tecnología era muy rápida, también presentaba sus inconvenientes:

 La memoria de los servidores se podía saturar si se solicitaban simultáneamente muchas aplicaciones CGI, ya que al ser archivos ejecutables necesitaban espacio reservado de memoria.

 La seguridad de los servidores se veía comprometida, ya que los ejecutables tenían acceso a los recursos del servidor al poder trabajar a niveles de memoria.

2 Un Servidor Web es un programa que implementa el protocolo HTTP y está diseñado para transferir lo que llamamos hipertextos, páginas web o páginas HTML.

3 URL significa Uniform Resource Locator, es decir, localizador uniforme de recurso. Es una secuencia de caracteres, de

acuerdo a un formato estándar, que se usa para nombrar recursos, como documentos e imágenes en Internet, por su localización.

4 MIME (Multipurpose Internet Mail Extensions), (Extensiones de Correo de Internet Multipropósito), son una serie de convenciones o especificaciones dirigidas a que se puedan intercambiar a través de Internet todo tipo de archivos (texto, audio, vídeo, etc.) de forma transparente para el usuario.

(13)

Instituto Politécnico Nacional ESIME Culhuacán

13 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

CGI es raramente utilizado ahora, pero la idea de un proceso ejecutando información suministrada por el usuario o una base

Aplicaciones Web de las cuales se hablará

2.4 TECNOLOGÍAS DE SERVIDOR PARA EL DESARROLLO DE APLICACIONES WEB

Existen varias tecnologías para el desarrollo de P

populares son PHP, JSP, ASP y más recientemente ASP.NET. Cada una tiene sus diferencias y es soportada por diferentes empresas o grupos de desarrolladores.

a los detalles, todas ofrecen herramientas s aplicación ya sea comercial, empresarial o personal lenguaje de programación, el tipo de licencia que manejan

PHP y JSP; Microsoft IIS es normalmente utilizado para soportar las tecnologías propias como lo son ASP y ASP.NET.

Gráfica 1 Distribución de Servidores (Wss, 2009)

Instituto Politécnico Nacional ESIME Culhuacán

Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

CGI es raramente utilizado ahora, pero la idea de un proceso ejecutando información suministrada por el usuario o una base de datos y generando un resultado, es ahora el

eb de las cuales se hablará más adelante.

TECNOLOGÍAS DE SERVIDOR PARA EL DESARROLLO DE APLICACIONES

nologías para el desarrollo de Páginas Web dinámicas o de s

populares son PHP, JSP, ASP y más recientemente ASP.NET. Cada una tiene sus diferencias y es soportada por diferentes empresas o grupos de desarrolladores. Hablando a grandes rasgos y sin llegar a los detalles, todas ofrecen herramientas suficientes para el desarrollo de casi cualquier tipo de ya sea comercial, empresarial o personal. Sus diferencias más significativas radican en el

el tipo de licencia que manejan y los costos de uso.

Según las estadísticas servidores Web más utilizados en la industria son Apache y Microsoft IIS. Ambos pueden ser configurados para ejecutar cualquiera de las tecnologías antes mencionadas

utilizados con mayor frecuencia para una tecnología en específico. Apache

es normalmente utilizado para tecnologías gratuitas como lo son PHP y JSP; Microsoft IIS es normalmente utilizado para soportar las tecnologías propias como lo son

Distribución de Servidores (Wss, 2009)

Instituto Politécnico Nacional ESIME Culhuacán

Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

CGI es raramente utilizado ahora, pero la idea de un proceso ejecutando información dinámica es ahora el pilar de las

TECNOLOGÍAS DE SERVIDOR PARA EL DESARROLLO DE APLICACIONES

o de servidor, las más populares son PHP, JSP, ASP y más recientemente ASP.NET. Cada una tiene sus diferencias y es Hablando a grandes rasgos y sin llegar uficientes para el desarrollo de casi cualquier tipo de . Sus diferencias más significativas radican en el

Según las estadísticas, los servidores Web más utilizados en la industria son Apache y Microsoft IIS. Ambos pueden ser configurados para ejecutar cualquiera de las tecnologías antes mencionadas, aunque son utilizados con mayor frecuencia para una tecnología en específico. Apache Web Server mente utilizado para gratuitas como lo son PHP y JSP; Microsoft IIS es normalmente utilizado para soportar las tecnologías propias como lo son

(14)

Instituto Politécnico Nacional ESIME Culhuacán

14 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

Gráfica 2 Top Servidores Web en el Mercado 1995

2.4.1 Php

Inicialmente conocido como “Personal Home Page Tools”

1995 como un simple conjunto de S

funcionalidad y estructura iniciales eran básicas. En 1997 apareció la segunda versión, reescrita en C, la cual fue aceptada por un gran número de usuarios, alred

utilizaban esta nueva tecnología.

En noviembre de 1997 Rasmus

Zeev Zuraski decidieron darle seguimiento al proyecto. Se dieron cuenta que el proyecto inicial presentaba muchas limitantes para el desarrollo de aplicaciones comerci

una nueva versión a la cual llamaron PHP3;

pasaron el acrónimo a “Hypertext Preprocessor”. Esta nueva versión y sus características de extensibilidad llamaron la atención de doc

añadiendo nuevos módulos que fueron agregando funcionalidad al lenguaje

5Un Script es un guión o conjunto de instrucciones. Permiten la automatización de ejecutados por un intérprete de línea de órdenes y usualmente son archivos de texto.

Instituto Politécnico Nacional ESIME Culhuacán

Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

1995-2009 (Wss, 2009)

Inicialmente conocido como “Personal Home Page Tools”, fue creado por Rasmus Lerdorf en como un simple conjunto de Scripts5 de Perl para controlar los accesos a su trabajo en línea

ciales eran básicas. En 1997 apareció la segunda versión, reescrita en C, la e aceptada por un gran número de usuarios, alrededor del 1% de los dominios de I

Rasmus decidió abrirlo al público, fue entonces que

Zeev Zuraski decidieron darle seguimiento al proyecto. Se dieron cuenta que el proyecto inicial presentaba muchas limitantes para el desarrollo de aplicaciones comerciales y decidieron

una nueva versión a la cual llamaron PHP3; eliminaron la implicación de herramienta personal y el acrónimo a “Hypertext Preprocessor”. Esta nueva versión y sus características de extensibilidad llamaron la atención de docenas de desarrolladores que se unieron al proyecto

que fueron agregando funcionalidad al lenguaje.

es un guión o conjunto de instrucciones. Permiten la automatización de tareas creando pequeñas utilidades. Son ejecutados por un intérprete de línea de órdenes y usualmente son archivos de texto.

Instituto Politécnico Nacional ESIME Culhuacán

Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

, fue creado por Rasmus Lerdorf en de Perl para controlar los accesos a su trabajo en línea, la ciales eran básicas. En 1997 apareció la segunda versión, reescrita en C, la edor del 1% de los dominios de Internet

decidió abrirlo al público, fue entonces que Andi Gutmans y Zeev Zuraski decidieron darle seguimiento al proyecto. Se dieron cuenta que el proyecto inicial decidieron desarrollar la implicación de herramienta personal y el acrónimo a “Hypertext Preprocessor”. Esta nueva versión y sus características de enas de desarrolladores que se unieron al proyecto

tareas creando pequeñas utilidades. Son

(15)

Instituto Politécnico Nacional ESIME Culhuacán

15 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

En el invierno de 1998, poco después de la liberación de PHP3, los nuevos líderes del proyecto decidieron reescribir el núcleo de PHP, los objetivos eran mejorar la ejecución de aplicaciones complejas y mejorar la adaptación de módulos. El nuevo núcleo fue llamado “Motor Zend” el cual logró los objetivos de su implementación y formó parte de la nueva versión liberada de PHP4.

Gran parte de la aceptación que ha tenido PHP radica en que la curva de aprendizaje es menor a la de otros lenguajes como Java y se pueden desarrollar cualquier tipo de aplicaciones; además cuenta con un gran número de desarrolladores que liberan al público su trabajo, permitiéndole a otros aprovechar de un sinnúmero de aplicaciones avanzadas que en la mayoría de los casos no tienen ningún costo y pueden ser modificadas y adaptadas según se requiera.

Ventajas

 Es un lenguaje multiplataforma, ya que puede ejecutarse en los principales sistemas operativos (Linux, Windows, MacOS)

 Conexión con los más populares manejadores de bases de datos libres y comerciales (MySQL, Oracle, MS SQL).

 Capacidad de integración de módulos para mayor funcionalidad.

 Extensa documentación

 Soporte extenso en foros.

 Es orientado a objetos

 Una gran biblioteca nativa de funciones.

 Fácil de aprender.

Desventajas

PHP no establece una metodología determinada de desarrollo; por lo tanto, el desarrollador puede seguir cualquier metodología que le permita escribir código ordenado, estructurado y manejable; en proyectos pequeños esto no resulta un problema, pero en los de mayor tamaño se dificulta un poco su mantenimiento y depuración. Existe un proyecto en PHP para implementar el patrón de diseño, Modelo Vista Controlador (o MVC), que permiten separar el tratamiento y acceso a los datos, la lógica de control y la interfaz de usuario en tres componentes independientes.

(16)

Instituto Politécnico Nacional ESIME Culhuacán

16 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE 2.4.2 Asp.Net

Microsoft introdujo la tecnología ASP (Active Server Pages) en diciembre de 1996 como una alternativa más en el mercado para el desarrollo de scripts que funcionaran en conjunto con el tradicional HTML para generar páginas dinámicas. La definición contextual de Microsoft es que "Las Active Server Pages son un ambiente de aplicación abierto y gratuito en el que se puede combinar código HTML, scripts y componentes ActiveX del servidor para crear soluciones dinámicas y poderosas para el Web".

En 1997 Microsoft comenzó a investigar un nuevo modelo de desarrollo para ASP, para resolver el problema de la separación de la presentación y el contenido y generar código limpio que fuera más fácil de mantener. Los encargados de esta tarea fueron Mark Anders y Scott Guthrie, quienes a finales de 1997 ya habían desarrollado el primer prototipo al cual llamaron XSP.

El desarrollo inicial de XSP fue hecho usando Java, pero pronto se decidió construir una nueva plataforma sobre el Common Language Runtime(CLR), pues ofrecía un ambiente orientado a objetos, recolección de basura y otras características que fueron vistas como características deseables. Esta integración con el CLR se consideró de alto riesgo ya que el éxito del nuevo lenguaje estaría de la mano del éxito del CLR.

Con el cambio al Common Language Runtime, XSP fue implementado en C# (conocido internamente como "Project Cool") y fue renombrado a ASP+, para este punto la nueva plataforma fue vista como el sucesor de Active Server Pages, y la intención fue proporcionar un medio fácil de migración para los desarrolladores ASP.

La primera demostración pública y la liberación de la primera beta de ASP+ y el resto del .NET Framework se realizó en el Microsoft's Professional Developers Conference el 11 de julio de 2000 en Orlando, Florida. Durante la presentación se demostró la compatibilidad de ASP+ usado en conjunción con COBOL y el soporte para una variedad de otros lenguajes fue anunciada, incluyendo los nuevos lenguajes de Microsoft, Visual Basic .NET y C#, así como también el soporte por medio de herramientas de interoperabilidad para Python y Perl creadas por la empresa canadiense ActiveState.

(17)

Instituto Politécnico Nacional ESIME Culhuacán

17 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

Después de cuatro años de desarrollo, y una serie de versiones de evaluación en los años 2000 y 2001, ASP.NET 1.0 fue liberado el 5 de enero de 2002 como parte de la versión 1.0 del .NET Framework. Incluso antes de su liberación, docenas de libros habían sido escritos sobre ASP.NET y Microsoft lo promocionó fuertemente como parte de su plataforma para servicios web.

Ventajas

Las páginas de ASP.NET son mejor conocidas como Web Forms y son archivos con extensión ASPX en los cuales se colocan típicamente etiquetas HTML y XHTML6 estáticas para definir controles Web y controles de usuario que se ejecutan del lado del servidor. En estos archivos también se puede colocar código dinámico dentro de un bloque <% %> que se ejecuta en el servidor, similar a lo que se hace en PHP, JSP y ASP, aunque no se recomienda en absoluto. En su lugar Microsoft recomienda utilizar una de las principales características de ASP.NET, el modelo “Code-Behind” que coloca el código en un archivo por separado.

El archivo de código es nombrado igual que el archivo ASPX pero se le agrega la extensión VB o CS, u otra dependiendo del lenguaje de programación utilizado. Cuando se usa este estilo de programación, el desarrollador escribe el código correspondiente a diferentes eventos, como la carga de la página, o el clic en un control, en vez de un recorrido lineal a través del documento.

Desventajas

Una de las principales desventajas del ASP.Net, es la necesidad de contar con toda la infraestructura de Microsoft (lo cual implica un alto costo financiero que no todas las empresas pueden costear) para su funcionamiento como es Windows, IIS y el Visual Studio; si bien este último no es obligatorio, ya que existe la posibilidad de escribir con un editor de texto los archivos, resulta indispensable si queremos que el desarrollo sea ágil.

Cabe mencionar que existe una iniciativa llamada Mono Project para ejecutar aplicaciones de ASP.Net en ambientes Linux.

6 XHTML, acrónimo en inglés de eXtensible Hypertext Markup Language (lenguaje extensible de marcado de hipertexto), es

el lenguaje de marcado pensado para sustituir a HTML como estándar para las páginas web. En su versión 1.0, XHTML es solamente la versión XML de HTML, por lo que tiene, básicamente, las mismas funcionalidades, pero cumple las especificaciones, más estrictas, de XML.

(18)

Instituto Politécnico Nacional ESIME Culhuacán

18 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

Capítulo 3: Desarrollo de Aplicaciones Seguras

3.1 RESUMEN

Los principios de seguridad permiten detectar los principales errores que se cometen durante el desarrollo de proyectos informáticos. Estas recomendaciones le permiten a los desarrolladores enfocarse en los puntos claves que son principalmente aprovechados por los atacantes.

Las aplicaciones sin una arquitectura de seguridad son como puentes sin estudios de diseño, a primera vista parecerán puentes, pero caerán con el primer ataque del medio. Las aplicaciones funcionan de la misma manera, así como se deben diseñar todas las funcionalidades para cumplir el propósito de su desarrollo, se deben planear los mecanismos con los que se defenderá la aplicación de ataques internos o externos.

3.2 CONSIDERACIONES INICIALES PARA EL DESARROLLO

La planeación de la seguridad debe ser una parte fundamental en el desarrollo de proyectos informáticos; esto se debe, en gran medida, a la importancia que han tomado los sistemas informáticos en las organizaciones y las tareas críticas que estos desempeñan. Sin bien no se puede hablar de una seguridad absoluta, lo que se busca es minimizar el riesgo y el impacto de los ataques en los procesos productivos.

En todas las organizaciones existen sistemas con mayor grado de importancia y otros tantos que más bien son de apoyo o informativos; se deben clasificar los sistemas para determinar el nivel de seguridad que se tiene que manejar según el valor de la información. No es lo mismo proteger un sistema con información sensible, como podría ser uno de apoyo al proceso operativo, que proteger un sistema que es informativo como un portal del área. Los posibles atacantes de cada sistema varían según su importancia o el valor de la información que contienen.

(19)

Instituto Politécnico Nacional ESIME Culhuacán

19 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

Algunos tipos de atacantes pueden ser:

 Personal descontento de la organización.

 Virus, troyanos.

 Atacantes motivados por algún objetivo.

 Atacantes sin motivo de ataque, simplemente por ganar reputación.

Todos los principios de seguridad buscan el cumplimiento de los tres pilares básicos de la seguridad de la información:

 Confidencialidad. Los datos deben ser accedidos únicamente por los usuarios que tienen permiso de hacerlo.

 Integridad. Los datos no deben ser alterados o modificados por usuarios que no tengan autorización. Esta alteración puede darse al momento de trasmitir la información y desde su origen.

 Disponibilidad. La información y por ende los sistemas, deben estar disponibles para los usuarios autorizados en el momento que la requieran.

Cuando estamos desarrollando controles de seguridad debemos considerar cada uno de estos pilares para obtener controles robustos de seguridad.

3.2.1 Minimizando el área de la superficie de ataque

Con cada característica que se agrega a una aplicación se añade cierto riesgo a la aplicación en total. El objetivo del desarrollo seguro es reducir el riesgo que se agrega con cada característica. Por ejemplo, cuando se agrega la funcionalidad para el usuario de generar filtros de datos, se expone a la aplicación a ataques de inyección SQL. Si se limita la característica de filtros a usuarios autorizados se disminuye el área de ataque; otra manera sería con validaciones de los datos que el usuario ingrese o diseñar la interfaz para que el usuario no introduzca los datos manualmente.

Lo que se busca es que las características no añadan más opciones para que los atacantes logren obtener beneficio de la información resguardada.

(20)

Instituto Politécnico Nacional ESIME Culhuacán

20 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE 3.2.2 Seguridad por defecto

Se debe establecer un nivel de seguridad por defecto, por ejemplo, que el usuario deba cambiar cada cierto tiempo su contraseña o que la contraseña deba contener cierta cantidad y tipos de caracteres. Estas opciones de seguridad deben estar presentes en la configuración inicial de la aplicación y permitirle al usuario deshabilitarlas para simplificar el uso de la aplicación y aumentar su riesgo. Un ejemplo de esto, es la opción de recordar usuario y contraseña, lo cual elimina el paso de introducir los datos para el usuario, pero aumenta su riesgo, ya que si alguien más tiene acceso al equipo podrá acceder a la información.

3.2.3 Mínimo privilegio

Lo que se busca es asignar sólo los privilegios necesarios a las cuentas de usuarios. Por ejemplo, si se necesita un usuario para sólo leer información desde una base de datos, se debe considerar un usuario que sólo tenga como único privilegio, la lectura de los datos necesarios sin poder acceder o escribir datos no autorizados. Este control de privilegios abarca los derechos de usuarios, permisos de CPU, memoria, red y archivos.

3.3 PRINCIPIOS DE SEGURIDAD EN EL DESARROLLO 3.3.1 Defensa profunda

En este principio lo que se busca es la creación de varias barreras de protección en lugar de tener sólo una barrera altamente protegida. La protección por niveles o capas, limitan el acceso al atacante sólo al siguiente nivel, provocando que invierta tiempo en detectar como penetrar la siguiente capa, lo que permite a los administradores del sistema su detección. Esto permite que no todo el sistema se vea comprometido por un ataque, lo que minimiza el impacto. Un ejemplo sería la colocación de varios firewalls en diferentes niveles, que impidieran el acceso a las secciones de red más críticas.

3.3.2 Fallar de manera segura

En todos los sistemas informáticos existen errores, muchas veces son estos errores los que permiten el acceso sin autorización a los atacantes. La manera en que se manejan los errores no debe generar huecos de seguridad. Si la aplicación tiene posibilidades de fallar, el manejo del error debe contemplar no generar puntos de acceso a atacantes. Esto pude suceder, por ejemplo, en un bloque Try-Catch en donde una sección del código falla y ya no se ejecuta el código restante que contiene mecanismos de seguridad, como se muestra en el ejemplo siguiente:

(21)

Instituto Politécnico Nacional ESIME Culhuacán

21 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

isAdmin = True Try

CodigoQuePuedeFallar()

isAdmin = isAdministrator(User) Catch ex As Exception

MessageBox.Show("Error") End Try

3.3.3 Segregación de funciones

Este principio indica que se deben separar las funciones de los usuarios para que no se traslapen y generen conflicto. Por ejemplo un usuario que es vendedor en un sitio de ventas por Internet puede también ser comprador, pero no debe poder comprarse así mismo. Otro caso sería el de Administrador y Usuario, el administrador debe poder acceder al sistema para configurarlo, pero no debe tener la capacidad de acceder como un súper usuario privilegiado y poder realizar actividades tomando la identidad de otro usuario.

3.4 CONSIDERACIONES ADICIONALES 3.4.1 Inseguridad de los sistemas externos

Consiste en asumir que todos los datos o invocaciones que se reciben de sistemas externos sobre los que no se tiene control, son posibles fuentes de ataque ya que seguramente el proveedor tiene sus propios controles de seguridad que no necesariamente se alinean con los de CFE. Ellos podrán darle mayor o menor importancia a ciertos controles que pueden pasar a afectar a la organización. Toda la información que se recibe de estas entidades debe de ser validada para asegurar que no ponga en riesgo los sistemas de CFE.

3.4.2 No confiar en la seguridad a través de la oscuridad

La seguridad por medio de la oscuridad es un control débil; no se debe confiar en que ocultando la funcionalidad o estructura de la aplicación a los posibles atacantes se estará seguro. Se ha demostrado que mantener en secreto la funcionalidad de las aplicaciones no es garantía de seguridad, un ejemplo de ello es el sistema operativo Microsoft Windows, que aunque su código no es libre, muchos programadores han sabido encontrar sus vulnerabilidades. Un ejemplo de un sistema de código libre y seguro sería Linux.

(22)

Instituto Politécnico Nacional ESIME Culhuacán

22 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE 3.4.3 Simplicidad en el desarrollo

Este principio va de la mano con el de minimizar la superficie de ataque. Se debe optar por programar las aplicaciones de manera sencilla y evitar codificaciones complejas que dificulten el entendimiento y mantenimiento de los sistemas. Una codificación compleja puede ser más propensa a errores o que estos sean más difícil de detectar.

Un ejemplo sería el uso de procedimientos recursivos, que si bien reducen la cantidad de código utilizado, también aumentan su complejidad.

3.4.4 Corregir errores de seguridad correctamente

Cuando se corrigen errores que se han detectado, se debe hacer un análisis profundo del error para detectar si se encuentra presente en diferentes partes del sistema o en otros sistemas desarrollados, utilizando los mismos principios de codificación o reutilización de código.

(23)

Instituto Politécnico Nacional ESIME Culhuacán

23 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

Capítulo 4: Modelado de Amenazas en el Desarrollo

4.1 RESUMEN

El Modelado de Amenazas es una técnica de ingeniería que se puede utilizar para ayudar a identificar amenazas, ataques y vulnerabilidades que podrían afectar a las aplicaciones. Se puede utilizar para dar forma al diseño de la aplicación, alcanzar los objetivos de seguridad de la empresa y reducir los riesgos. El Modelado de Amenazas también permitirá la justificación de la implementación de las características de seguridad dentro de los sistemas o las prácticas de seguridad para utilizarlo, para la protección de los activos de la empresa. En este capítulo se describe una metodología para el modelado de amenazas que se adapta a las necesidades de CFE, la metodología permite la detección oportuna de las amenazas más comunes a las que están expuestas las aplicaciones Web.

4.2 ANTECEDENTES

La identificación de las posibles amenazas le permitirá elegir los mecanismos o controles de seguridad que mejor se adaptan a la aplicación; por ejemplo, no tendría sentido invertir en un control que costara $100,000.00 pesos si los niveles de fraude son mínimos y no se justifica invertir todo ese capital. Existen en el mercado varias metodologías para el modelado de amenazas, se enlistan algunas a continuación:

 Trike. Es un framework7 y una metodología conceptual, acompañada por una herramienta que intenta facilitar el proceso de modelado. La metodología, está diseñada con el propósito de permitir al analista describir de forma completa y precisa las características de seguridad de un sistema, desde los detalles de alto nivel de la arquitectura, hasta la implementación.

 AS/NZS 4360:2004 Risk Management. Es el estándar de Australia y Nueva Zelanda, se liberó en 1999 y fue revisado en 2004. Fue el primer estándar formal para la documentación y administración del riesgo.

 CVSS. Sistema de Marcación de Vulnerabilidades Comunes. Es establecida por el grupo de trabajo de revelación de Vulnerabilidades NIAC, que incorpora las aportaciones de Cisco, Symantec, ISS, Qualys, Microsoft, CERT/CC y eBay.

7 Framework es una estructura de soporte definida, mediante la cual otro proyecto de software puede ser organizado y desarrollado. Típicamente, puede incluir soporte de programas, bibliotecas y un lenguaje interpretado entre otros software para ayudar a desarrollar y unir los diferentes componentes de un proyecto.

(24)

Instituto Politécnico Nacional ESIME Culhuacán

24 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

 Octave. Pertenece al Instituto de Ingeniería de Software del CMU en colaboración con el CERT, está dirigido a riesgo organizacional más que a riesgo técnico.

 Modelado de Amenazas de Microsoft. Es el modelo propuesto por Microsoft que puede ser aplicado a cualquier desarrollo informático ya que se enfoca en técnicas que permiten la identificación de amenazas y vulnerabilidades, por medio de una serie de pasos en los que va descomponiendo la aplicación.

¿Para qué sirve?

 Dar forma al diseño de la aplicación para cumplir los objetivos de seguridad.

 Ayudar a que los pros y los contras se vean con más facilidad al tomar decisiones de ingeniería claves.

 Reducir el riesgo de problemas de seguridad que surjan durante el desarrollo y las operaciones.

 Ayuda a comprender mejor el funcionamiento de la aplicación.

 Ayuda a encontrar errores complejos de diseño difíciles de encontrar.

La estrategia propuesta en este trabajo es congruente con el modelo de amenazas de Microsoft, ya que el modelo ha sido bien recibido en la comunidad de desarrolladores, cuenta con herramientas de apoyo, extensa documentación adicional y se alinea con las políticas de CFE de utilizar preferentemente el Software licenciado de Microsoft. El modelo, como se mencionó anteriormente, es aplicable a cualquier tecnología de desarrollo.

Pasos a seguir

1. Identificar objetivos de seguridad. Aclarar los objetivos le ayudará a centrarse en la actividad de modelado de amenazas y a determinar cuánto esfuerzo dedicará a los siguientes pasos.

2. Crear una descripción general de la aplicación. Personalizar los actores y las características importantes de la aplicación ayudará a identificar las amenazas más importantes durante el paso 4.

3. Descomponer la aplicación. Una comprensión detallada de la mecánica de la aplicación facilita el descubrimiento de amenazas más relevantes y detalladas.

4. Identificar amenazas. Utilizando la información que se detalla en los pasos 2 y 3 se identificarán las amenazas más importantes para el contexto y el escenario de la aplicación.

5. Identificar vulnerabilidades. Revisando las capas de la aplicación se identificarán los puntos débiles relacionados con las amenazas. Se utilizarán las categorías de vulnerabilidades para identificar con mayor facilidad las áreas en las que tienen lugar los errores más frecuentes.

(25)

Instituto Politécnico Nacional ESIME Culhuacán

25 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE 4.3 PASO 1: IDENTIFICAR OBJETIVOS DE SEGURIDAD

Los líderes de la organización junto con el equipo de desarrollo deben identificar cuáles serán los objetivos de seguridad:

 Identidad. Concentrarse en los controles que garanticen la identidad de los usuarios (ejem.

aplicación bancaria).

 Reputación. La pérdida de reputación de la empresa derivado de un ataque.

 Financiero. Las pérdidas financieras generadas por un ataque a las que está expuesta la empresa.

 Privacidad y Regulaciones. En qué medida la aplicación debe proteger la información del usuario.

 Disponibilidad. Cuáles son los niveles de disponibilidad con los que debe cumplir la aplicación. Existen aplicaciones que son críticas para los procesos de las empresas, por lo que el tiempo de disponibilidad debe ser del 99.99%.

4.4 PASO 2: CREAR UNA DESCRIPCIÓN GENERAL DE LA APLICACIÓN

Después de definir los objetivos de seguridad de la aplicación, se debe analizar para determinar los componentes, flujos de datos y límites de confianza. Para lograr esto se puede utilizar la documentación de arquitectura y diseño de la aplicación, diagramas UML, diagrama de componentes de alto nivel, especificaciones funcionales, diagramas de casos de uso, identificación de las tecnologías utilizadas, identificación de los mecanismos de seguridad utilizados, entre otros.

Navegador

Presentación

Negocio

Acceso a Datos

DB Server

(MS SQLServer)

HTTP TCP/IP

Identificación de la aplicación Web

Autentificación Windows

DMZ

Figura 1 Ejemplo de la arquitectura de la aplicación.

(26)

Instituto Politécnico Nacional ESIME Culhuacán

26 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE 4.5 PASO 3: DESCOMPONER LA APLICACIÓN

Se debe descomponer la aplicación para identificar:

 Límites de confianza. Identificar los límites de confianza permitirá enfocarse en los puntos críticos. Se pueden definir los límites identificando los puntos donde la integridad y la confidencialidad de los datos se ven comprometidos. Un cambio de límite de confianza podría ser cuando se envía información a través de Internet.

 Flujo de datos. Se deben trazar los flujos de datos de la aplicación, esto permitirá saber hacia donde fluye la información y de qué manera interactúa la aplicación con sistemas externos, con clientes y entre los componentes internos. Se debe poner especial atención en el flujo de los datos sensitivos como los de autentificación.

 Puntos de acceso. Todos los puntos de acceso a la aplicación son potenciales puntos de ataque. Un punto de acceso podría ser el servidor Web que está escuchando solicitudes Web.

 Puntos de salida. Identificar los puntos donde la aplicación envía datos a sistema externos, poniendo principal atención en los datos sensitivos como datos de usuarios.

4.6 PASO 4: IDENTIFICACIÓN DE AMENAZAS

En este punto es donde se utilizan todos los documentos e información obtenidos en los pasos anteriores. Se deben identificar las amenazas y ataques que podrían afectar a la aplicación y comprometer los objetivos de seguridad. Las amenazas encontradas en este punto, no necesariamente indican la presencia de una vulnerabilidad, si bien la amenaza puede estar presente, podemos contar con los mecanismos necesarios para mitigarla al momento que se presenta.

Para dicho propósito se deben realizar las siguientes actividades:

 Identificar amenazas y ataques comunes.

 Metodología STRIDE para identificación de amenazas.

 Identificar amenazas a través de casos de uso.

 Identificar amenazas a través del flujo de datos

(27)

Instituto Politécnico Nacional ESIME Culhuacán

27 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE 4.6.1 Identificar amenazas y ataques comunes

Existe una lista de vulnerabilidades comunes que se han encontrado en la mayoría de las aplicaciones Web existentes y que han sido clasificadas y analizadas por expertos en la seguridad Web.

Se utilizará esta lista para identificar las amenazas a las que podría estar expuesta la aplicación.

Autentificación

 ¿Cómo podría un atacante tomar la identidad de otro usuario?

 ¿Cómo podría un atacante acceder a las credenciales8 de los usuarios almacenadas?

 ¿Cómo podría un atacante montar un ataque de diccionario? ¿Cuáles son las políticas de endurecimiento de contraseñas?

 ¿Cómo podría un atacante modificar, interceptar o evadir los mecanismo de reinicio de credenciales?

Autorización

 ¿Cómo podría un atacante elevarse los privilegios?

 ¿Cómo podría un atacante evadir los controles de verificación de autorización para lograr acceder a operaciones privilegiadas?

Validación de datos

 ¿Cómo podría un atacante inyectar comandos de SQL?

 ¿Cómo podría un atacante evadir la validación de datos de entrada?

 ¿Puede un atacante efectuar un ataque XSS(Cross-Site Scripting Attack)9?

 ¿Puede un atacante enviar datos inválidos para evadir la lógica de seguridad del servidor?

 ¿Cómo podría un atacante mandar datos malformados para colapsar la aplicación?

Administración de la configuración

 ¿Cómo podría un atacante obtener acceso a las funcionalidades del administrador?

 ¿Cómo podría un atacante acceder a los datos de configuración de la aplicación?

8 Nombre de usuario y contraseña.

9 Cross-Site Scripting Attack es un tipo de vulnerabilidad de seguridad típicamente encontrada en aplicaciones web que permiten la inserción de código por usuarios maliciosos.

(28)

Instituto Politécnico Nacional ESIME Culhuacán

28 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

Datos sensibles

 ¿Dónde y cómo se almacenan los datos sensitivos de la aplicación?

 ¿En qué momento y cómo viajan los datos a través de la red?

 ¿Cómo podría un atacante ver los datos sensibles?

 ¿Cómo podría un atacante manipular los datos sensibles?

Administración de sesiones

 ¿Cómo podría un atacante capturar una sesión?

 ¿Cómo podría un atacante ver o manipular la sesión de otro usuario?

Cifrado

 ¿Se utiliza un algoritmo de cifrado personalizado? ¿Se confía en él?

 ¿Qué necesitaría un atacante para de romper el cifrado?

 ¿Cómo podría un atacante obtener acceso a las llaves de cifrado?

 ¿Qué estándares de cifrado se están utilizando? ¿Qué pasa si los atacantes los conocen?

 ¿Cómo afecta la tecnología de desarrollo al método de cifrado elegido?

Manipulación de parámetros

 ¿Cómo podría un atacante manipular los parámetros para afectar los mecanismos de seguridad del servidor?

 ¿Cómo podría un atacante modificar parámetros sensibles?

Manejo de excepciones

 ¿Cómo podría un atacante colapsar la aplicación?

 ¿Cómo podría un atacante obtener información valiosa de los detalles de las excepciones?

Auditoria y bitácoras

 ¿Cómo podría un atacante ocultar sus acciones?

 ¿Cómo podemos demostrar las acciones realizadas por un atacante o usuario?

(29)

Instituto Politécnico Nacional ESIME Culhuacán

29 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE 4.6.2 Metodología STRIDE

Una forma de garantizar que las aplicaciones desarrolladas cumplan con las propiedades de seguridad consiste en emplear el modelado de amenazas con STRIDE, el acrónimo de "Spoofing, Data Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege", es decir, suplantación de identidad, manipulación de datos, repudio (los usuarios pueden negar que realizaron una acción), revelación de información, denegación de servicio y elevación de privilegios.

Amenaza Propiedad de seguridad

Suplantación Autenticación

Manipulación Integridad

Repudio No repudio

Revelación de información Confidencialidad

Denegación de servicio Disponibilidad

Elevación de privilegios Autorización

Tabla 1 Amenazas y propiedades de la seguridad

4.6.3 Identificar amenazas a través de casos de uso

Se tiene que examinar cada uno de los casos de uso clave de la aplicación e identificar maneras en las que un usuario podría, intencionalmente o por error, forzar la aplicación a realizar una operación no válida. Para lograr lo anterior, se debe pensar como los atacantes y hacerse preguntas de cómo podría lograr que la aplicación fallara. Algunos ejemplos podrían ser los siguientes:

 ¿Cómo podría un cliente insertar datos maliciosos en este caso de uso?

 ¿Los datos que mandados por los usuarios están siendo validados o no?

 ¿Cómo puede un atacante manipular una sesión?

 ¿Cómo puede un atacante evadir los controles de autorización?

4.6.4 Identificar amenazas a través del flujo de datos

Utilizando los casos de uso y los escenarios se tiene que analizar el flujo de datos entre los componentes individuales de la arquitectura de la aplicación. Los flujos de datos a través de los límites de confianza son particularmente importantes ya que no se pueden controlar esos datos. Se debe asumir que todos los datos que provienen fuera de los límites de confianza son maliciosos.

(30)

Instituto Politécnico Nacional ESIME Culhuacán

30 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

Se pueden hacer algunas preguntas:

 ¿Cómo fluyen los datos de inicio a fin en la aplicación?

 ¿Qué componentes llaman a otros componentes?

 ¿Qué hace que los datos sean válidos?

 ¿Dónde se realizan las validaciones?

 ¿Cómo se protegen los datos mientras se envían por la red?

4.7 PASO 5. IDENTIFICACIÓN DE VULNERABILIDADES

Utilizando la misma lista de amenazas del paso 4 a las que comúnmente se enfrentan las aplicaciones Web, se tratará de localizar sus vulnerabilidades mediante la realización de una serie de preguntas.

4.7.1 Autenticación

El objetivo de la autentificación es proveer acceso a las aplicaciones a los usuarios autorizados mediante el uso de controles que permitan corroboran que un usuario es quién dice ser y denegar el acceso a los atacantes que utilizan métodos para romper la autenticación. Algunas preguntas que se pueden hacer para identificar vulnerabilidades serían las siguientes:

 Autenticación positiva. Cuando el bloque de autenticación falla, ¿El usuario logra autentificarse?

 Inyección SQL. ¿Se están validando los datos que se reciben del usuario? Una manera de proteger las aplicaciones es limitar la longitud del campo que se recibe y verificar que cumpla con una serie de caracteres.

 ¿Se envían el nombre de usuario y contraseña en texto en claro sobre un canal desprotegido?

¿Se utiliza algún mecanismo de cifrado para datos sensibles?

 ¿Se almacenan las credenciales? ¿En dónde y cómo se protegen si se almacenan?

 ¿Utilizamos contraseñas endurecidas? ¿Cuáles son las políticas de contraseñas?

 ¿Las credenciales son verificadas?

 ¿Cómo se autentica el identificador de usuario después del acceso (login)?

(31)

Instituto Politécnico Nacional ESIME Culhuacán

31 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

 ¿El navegador almacena los datos ingresados por el usuario? Se debe definir en la aplicación qué campos o formas no serán guardados por el navegador.

o Ejemplo <form … autocomplete=”off”>

 ¿Se utilizan cuentas predeterminadas?

 ¿Los nombres de usuario son predecibles?

 ¿Es posible la realización de ataques de fuerza bruta? Se deben limitar el número de intentos fallidos permitidos para evitar estos ataques.

 ¿Las cuentas de usuarios inactivos expiran?

Las mejores prácticas

 Se deben mantener políticas que permitan recolectar evidencia de las actividades de los usuarios para el no repudio.

 Utilizar el control de autenticación adecuado para el valor del activo protegido.

 Re-autenticar a los usuarios cuando realicen transacciones de alto nivel.

 Autenticar la transacción, no al usuario, principalmente para evitar el phishing10.

 Utilizar contraseñas y políticas adecuadas al valor del sistema.

Técnicas de autenticación comunes

 Autenticación por contraseña. Se presenta una ventana al usuario donde introduce su nombre de usuario y contraseña. El envío se realiza en texto claro por lo que su nivel de seguridad es bajo.

 Autenticación basada en formas. Es muy utilizada en las aplicaciones web, ya que permite bastante personalización, aunque también existen muchos mecanismos para ser atacados. Se recomienda utilizar los controles estandarizados disponibles en lugar de utilizar controles personalizados. Un ejemplo, ASP.NET provee de controles de servidor que permiten llevar a cabo todas las tareas de manejo de usuarios.

 Autenticación integrada. Comúnmente utilizada en servidores con Microsoft IIS y aplicaciones ASP.NET en ambientes de Intranet; utiliza un certificado de autenticación del lado de cliente.

10 Phishing es un término informático que denomina un tipo de delito encuadrado dentro del ámbito de las estafas, y que se comete mediante el uso de un tipo de ingeniería social caracterizado por intentar adquirir información confidencial de forma fraudulenta (como puede ser una contraseña o información detallada sobre tarjetas de crédito u otra información bancaria).

(32)

Instituto Politécnico Nacional ESIME Culhuacán

32 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE

 Autenticación basada en certificados. La aplicación Web expide certificados, los certificados públicos son almacenados y comparados con las sesiones entrantes del navegador, si coinciden entonces el usuario es autenticado. La calidad del certificado depende de la calidad de la infraestructura de la llave pública.

 Autenticación fuerte. La utilización de mecanismos de usuario y contraseñas (algo que se sabe) no provee un mecanismo fuerte de autenticación, pero con la combinación de la utilización de Tokens11 o llaves USB o certificados (algo que tenemos) se logra un control fuerte de autenticación.

4.7.2 Autorización

El objetivo es que los usuarios sólo puedan realizar las operaciones correspondientes a su nivel de privilegios y prevenir que usuarios malintencionados logren elevar su nivel de privilegios. Algunas preguntas que se pueden hacer para identificar vulnerabilidades serían las siguientes:

 ¿Se cumple con el principio del menor privilegio? Los usuarios sólo deben tener los privilegios necesarios para la realización de sus operaciones.

 ¿Se manejan listas de control de acceso? Las listan proveen un mecanismo adicional para controlar el acceso a los recursos.

 ¿Se utilizan controles de autorización personalizados? Preferentemente se deben utilizar los controles bien desarrollados como los que proveen los lenguajes de JAVA y ASP.Net

 ¿Las rutinas de autorización están centralizadas? Si se identifica los mecanismos de autorización se logrará acceder a todos los recursos.

 ¿Se controla el acceso a los recursos? No sólo se deben controlar las acciones, el acceso a recursos también debe ser controlado.

 ¿Qué controles de acceso se utilizan en los puntos de entrada de la aplicación?

 ¿La aplicación utiliza roles? ¿Están lo suficientemente separados las funciones para auditorias?

 En caso de un error ¿El usuario logra obtener acceso?

 ¿El acceso a la base de datos es restringido?

11 Token es un dispositivo electrónico que se le da a un usuario autorizado de un servicio computarizado para facilitar el proceso de autenticación.

(33)

Instituto Politécnico Nacional ESIME Culhuacán

33 Esquema de seguridad para el desarrollo de aplicaciones Web para CFE 4.7.3 Validación de datos

El objetivo es garantizar que la aplicación este protegida contra ataques en la recepción de los datos enviados por los usuarios, los componentes externos o las bases de datos. Algunas preguntas que se pueden hacer para identificar vulnerabilidades serían las siguientes:

 ¿Se realizan revisiones de integridad de los datos en los límites de confianza? No se debe confiar en los datos que se envían por un medio no seguro.

 ¿Los datos recibidos son validados?

 ¿Se validan tipos, longitud, rango, formato?

 ¿Es confiable la validación del lado del cliente?

 ¿Se pueden realizar ataques por inyección de comandos?

 ¿Se validan los datos antes de ejecutar una consulta SQL para prevenir ataques por inyección SQL?

 ¿Podemos confiar en los datos recibidos de la base de datos?

 ¿Se envían datos por método GET? No se aconseja, sólo si es información para la navegación y debidamente cifrados.

 ¿Se limita los caracteres que se pueden enviar? Se debe poner especial atención en los caracteres especiales que pueden activar acciones en las aplicaciones.

4.7.4 Administración de la Configuración

El objetivo es garantizar que los datos sensibles de configuración estén protegidos. Algunas preguntas que se pueden hacer para identificar vulnerabilidades serían las siguientes:

 ¿Cómo se administran las interfaces de administración remotas?

 ¿Las cadenas de conexión están cifradas?

 ¿Los datos de configuración o sensibles se envían cifrados por la red?

 ¿Los privilegios del administrador están separados?

 ¿El acceso a los datos de configuración se realiza con los permisos adecuados? ¿Pueden los usuarios comunes escribir, leer o modificar estos datos?

Referencias

Documento similar

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,

o Si dispone en su establecimiento de alguna silla de ruedas Jazz S50 o 708D cuyo nº de serie figura en el anexo 1 de esta nota informativa, consulte la nota de aviso de la

1 El caso de uso inicia cuando el Administrador de Securitas desea generar reportes de usuarios de las diferentes aplicaciones existentes en el sistema; para ello puede

Proporcione esta nota de seguridad y las copias de la versión para pacientes junto con el documento Preguntas frecuentes sobre contraindicaciones y

[r]

Contraindicaciones: El uso de la mascarilla está contraindicado para los pacientes y los miembros de sus familias, profesionales sanitarios y compañeros de

 Para recibir todos los números de referencia en un solo correo electrónico, es necesario que las solicitudes estén cumplimentadas y sean todos los datos válidos, incluido el

En el presente trabajo se explica el proceso de desarrollo de la interfaz de usuario del SIGEP, para el que se ha definido una arquitectura de información que permite