CISSP Application and System Development Resumen Importancia del

  • Slides: 75
Download presentation
CISSP Application and System Development Resumen

CISSP Application and System Development Resumen

Importancia del Software • El software debe ser desarrollado teniendo en mente toda la

Importancia del Software • El software debe ser desarrollado teniendo en mente toda la gama de riesgos potenciales que existen, así como vulnerabilidades en la tecnología. • La herramienta más útil en el desarrollo de software son los análisis de riesgos, este no solo se debe realizar solo al inicio sino en cada etapa del proyecto. • Estos análisis tienen como objetivo lo siguiente: • • Reducir vulnerabilidades Reducir corrupción de la información Mitigar riesgos Los controles a utilizar pueden ser: • • • Preventivos De Detección Correctivos 2

Seguridad de Software Vs. Seguridad de Dispositivos • En la actualidad la mayoría de

Seguridad de Software Vs. Seguridad de Dispositivos • En la actualidad la mayoría de los esfuerzos de seguridad buscan dispositivos que resuelvan las necesidades, por ejemplo: IDS, firewalls, sensores, y scanners de vulnerabilidades • Este enfoque aunque exitoso no es suficiente porque se protege principalmente el ambiente, no los recursos. Si se burlan todos los dispositivos las aplicaciones deben de tener los recursos para defenderse. • Algunas de las razones porque la seguridad de dispositivos es la predominante son las siguientes: • • • La mayoría de los profesionales de la seguridad no son desarrolladores Muchos de los desarrolladores no se preocupan por la seguridad Las firmas de software se preocupaban por funcionalidad y diseño solamente. La comunidad tecnología esta acostumbrada a recibir software con bugs y después recibir los patches necesarios. La solución no es acusar a nadie sino cambiar la manera de pensar, se tiene que entender que conlleva la seguridad en el software, como se relaciona este con su ambiente y finalmente llegar a acuerdos donde la seguridad y funcionalidad tengan un equilibrio satisfactorio. 3

Diferentes Ambientes = Diferente Seguridad • En la actualidad existen diferentes ambientes para las

Diferentes Ambientes = Diferente Seguridad • En la actualidad existen diferentes ambientes para las aplicaciones, en especial en lo referente a web. Todos los sistemas están interconectados de alguna manera, cuando esto sucede el manejarlos conlleva una ardua tarea donde intervienen tantos actores y condiciones que finalmente hacen casi imposible su buena administración. • El autor divide estos ambientes en 2 grandes rubros: • E-Commerce: Los tiempos de paginas web simples han pasado, hoy en día es común encontrarse con el comercio electrónico que conlleva una mezcla transparente de middleware complejo, datawarehousing y front-ends. Mientras más crece la complejidad de estos sistemas la seguridad de los mismos se vuelve más critica. • Modelo Cliente/Servidor: Este modelo permite que una aplicación y/o sistema sea divido en diferente plataformas, en las cuales el sistema operativo y hardware puede variar. El servidor se encarga de procesar la información y el cliente se encarga del front-end de la aplicación. El front-end incluye la interfaz de usuario, el manejo de la información local y el manejo de los mecanismos de la comunicación. 4

Ambiente Vs. Controles • Los controles de software pueden ser implementados por los sistemas

Ambiente Vs. Controles • Los controles de software pueden ser implementados por los sistemas operativos, aplicaciones, o por medio de los controles de manejo de bases de datos. Usualmente es una combinación de los 3. Cada uno tiene sus ventajas y desventajas, el punto clave es el encontrar el equilibrio entre ellos. • Ejemplos: • Si nos enfocamos mucho al controles de sistemas operativos controlaremos los accesos de los sujetos a los objetos y podremos restringir las acciones de los mismos, pero no necesariamente las acciones de estos dentro de alguna aplicación. • Si la seguridad esta comprometida dentro del código de una aplicación el sistema operativo no tendría conocimiento de esto y no podría evitarlo 5

Complejidad de la Funcionalidad • Programar es complejo. • Dentro de esta complejidad se

Complejidad de la Funcionalidad • Programar es complejo. • Dentro de esta complejidad se debe de encontrar un equilibrio entre: Funcionalidad, Requerimientos de Seguridad y Mecanismos de Seguridad. • Para realizar esto se debe de escoger y llevar a cabo una serie de pasos metódicos siguiendo un modelo probado. La clave en cualquier modelo es la siguiente: • Debe de ser posible probar la funcionalidad y seguridad de cada modulo por separado y posteriormente en conjunto con uno o más módulos relacionados. 6

Formato, Longitud y Tipo de Datos • Es importante validar la longitud de los

Formato, Longitud y Tipo de Datos • Es importante validar la longitud de los datos debido al reciente boom de ataques del tipo “buffer overflow”. Este ataque sucede cuando la aplicación no revisa la longitud de los datos aceptados. Cualquier información extra puede ser ejecutado en modo privilegiado, lo que puede brindarle al atacante control total del sistema. • La longitud no es lo único a validar al aceptar información, el formato y el tipo de dato es también de suma importancia. Por ejemplo: • Si la aplicación espera caracteres del tipo ASCII, no debe aceptar valores en hexadecimal o binarios. • Si la aplicación espera la fecha en el formato xx/xx/xxxx, la aplicación debe de rechazar cualquier otra información, y/o forzar al usuario para introducir el valor correcto. 7

Implementación y Valores Default • En la actualidad hay muchos problemas con las soluciones

Implementación y Valores Default • En la actualidad hay muchos problemas con las soluciones “out-of-the -box” (ej. Windows NT), estos problemas no son culpa del software, es culpa del estado inicial en el cual son vendidos, la solución al stress causado por esto reside tanto en el vendedor como en el comprador. • Para el vendedor es necesario considerar estos estados iniciales y hacerlos lo más amigable para el usuario sin olvidar la seguridad. • Para el comprador es necesario leer los manuales (RTFM) y modificar estos estados para adaptarlos a sus necesidades. • Implementación: La mayoría de los problemas de seguridad se dan por errores de implementación y configuraciones débiles. Por ejemplo, en la mayoría de las aplicaciones vendidas la mayoría, si no es que todos los servicios están en modo “Active” por default. Esto es un serio riesgo ya que el tener servicios extra funcionando conlleva oportunidades innecesarias para que un atacante se aproveche. 8

Implementación y Valores Default • Este tipo de descuidos no son por error, nacen

Implementación y Valores Default • Este tipo de descuidos no son por error, nacen del deseo de hacer de las aplicaciones algo más amigable para los usuarios, entre menos tengan que configurar más rápido empezaran a usar el producto. • Otro error común es dejar la seguridad para después, es decir, tener la mentalidad de que cualquier falla puede ser corregida después: “parches”. La falla en esta manera de pensar es la siguiente: NO TODO EL MUNDO HACE O ACEPTA ACTUALIZACIONES AL SISTEMA • Así que no todos los sistemas son protegidos después de instalados ya que la responsabilidad es ahora del usuario. • Estados de las Fallas: Este rubro es muy pocas veces considerado por los programadores. Estado de fallas es simplemente lo que hace el sistema en caso de algún error o falla inesperado. Muchos se apagan causando perdidas de información, otros se quedan bloqueados sin liberar recursos, pero muchos otros cambian a un modo privilegiado con la finalidad de resolver el problema de fondo, pero en las manos de un usuario esto puede ser catastrófico y en las manos de un atacante esta condición es una puerta abierta a la explotación del sistema. 9

Administración de Bases de Datos • La bases de datos tienen una larga tradición

Administración de Bases de Datos • La bases de datos tienen una larga tradición de almacenar información critica de gran importancia para empresas e individuos. • El manejo de bases de datos se hace por medio de un DBMS (Database Management System) que usualmente es una suite de programas usados para administrar grandes grupos de datos estructurados con capacidad de query para diferentes tipos de usuarios. Un DBMS también puede controlar los parámetros de seguridad de las bases de datos. • En la actualidad muchas empresas brindan a sus clientes conexiones directas con sus bases de datos con la finalidad de evitarse trabajo. Este tipo de conexiones son inseguras en extremo ya que una conexión directa no tiene una mediación que evite explotar incorrectamente a la bases de datos. 10

Administración de Bases de Datos • Solución: 11

Administración de Bases de Datos • Solución: 11

Software de Administración de Bases de Datos • Base de Datos: Colección de datos

Software de Administración de Bases de Datos • Base de Datos: Colección de datos almacenados de manera significativa que permite que múltiples usuarios accedan, vean y modifican información según necesiten. La bases de datos no solo almacenan información sino que también la procesan para presentarla de una manera que el usuario entienda. • Debido a la complejidad de la misma es necesario tener un administrador de las mismas. La herramienta clave para esta persona son las DBMS, con estas la administración no solo de accesos y datos se maneja fácilmente, sino que también brinda opciones de seguridad. 12

Modelos de Bases de Datos • Un modelo de bases de datos define las

Modelos de Bases de Datos • Un modelo de bases de datos define las relaciones entre diferentes elementos de datos, dicta como se accede la información, define las operaciones permitidas, la integridad ofrecida y como se organiza los datos. • Un modelo provee una método formal para representar los datos de manera conceptual y provee los medios necesarios para manipular los datos almacenados en ellas. 13

Modelo Relacional • Usa atributos (columnas) y duplas (filas) para contener y organizar la

Modelo Relacional • Usa atributos (columnas) y duplas (filas) para contener y organizar la información. Es el método más usado. 14

Modelo Jerárquico • Este modelo combina una estructura de árbol con relaciones padre/hijo. 15

Modelo Jerárquico • Este modelo combina una estructura de árbol con relaciones padre/hijo. 15

Modelo Distribuido • Este modelo almacena información en mas de una base de datos,

Modelo Distribuido • Este modelo almacena información en mas de una base de datos, pero con una conexión lógica, el acceso para el usuario es transparente. 16

Modelo Orientado a Objetos • Diseñado para manejar diferentes tipos de datos (imágenes, audio,

Modelo Orientado a Objetos • Diseñado para manejar diferentes tipos de datos (imágenes, audio, documentos y video). La información se guarda en objetos, que pertenecen a clases. Información con tipo de datos y atributos parecidos se agrupan en clases. 17

Lenguajes de Interfaz de Base de Datos • Los datos son inútiles a menos

Lenguajes de Interfaz de Base de Datos • Los datos son inútiles a menos que se puedan manipular para lo que se necesita. Las aplicaciones necesitan poder interactuar con las bases de datos, para esto existen los siguientes mecanismos: • Open Database Connectivity (ODBC) • • Object Linking and Embedding Database (OLE DB) • • Set de interfases ODBC que expone la funcionalidad de las BD por medio de objetos que se pueden acceder. Usa la interfase OLE. Java Database Connectivity (JDBC) • • Separa los datos en componentes que corre como middleware en un cliente ó servidor. Active. X Data Objects (ADO) • • API (Application Programming Interface) que permite comunicarse con una base de datos local o remota. Aplicación – ODBC – Traducción de comandos – BD. Permite que aplicaciones JAVA se conecten con las BD, ya sea por medio de ODBC o directo a la BD. Extensible Markup Language (XML) • Standard para estructurar datos para su sencillo manejo por parte de aplicaciones usando tecnologías Web. Los tags de XML son interpretados por los browsers. 18

Componentes de BD Relacionales • DDL (Data Definition Language): Define el schema (contenedor de

Componentes de BD Relacionales • DDL (Data Definition Language): Define el schema (contenedor de la información que describe a la base de datos y los tipos de dato almacenados en ellas). • DML (Data Manipulating Language): Examina y manipula los datos dentro de la base de datos. • DCL (Data Control Language): Define la organización interna de la base de datos. • QL (Query Language): Usado para que los usuarios puedan hacer queries para acceder la información en la BD. • Report Generator: Usado para presentar a los usuario con un reporte, resultado de las operaciones sobre la BD. 19

Diccionario de Datos • Es un repositorio central de elementos de datos y sus

Diccionario de Datos • Es un repositorio central de elementos de datos y sus relaciones. Guarda información crítica sobre el uso de la información, fuentes de datos, y formato de datos. • Es una herramienta para administrar la BD de manera centralizada, esto lo hace mediante el control de datos de los datos (metadata). • También puede contener: valores default de columnas, información sobre la integridad, nombres de usuarios, privilegios de usuarios y roles de usuarios. 20

Llave primaria Vs. Llave foráneas • Llave primaria: Es el identificador de una fila

Llave primaria Vs. Llave foráneas • Llave primaria: Es el identificador de una fila y debe de ser único. Cada fila debe de tener uno. • Llave foráneas: Es cuando el atributo de una tabla tiene un valor igual a la llave primaria de otra tabla. 21

Integridad • Las bases de datos pueden tener problemas de concurrencia, esto es, que

Integridad • Las bases de datos pueden tener problemas de concurrencia, esto es, que diferentes sujetos pueden acceder a la base de datos y que esta les brinda la información al momento y que la base de datos pueda soportar varias operaciones a la vez. • Para asegurar esto las BD utilizan 3 tipos de integridad: • Integridad Semántica: Mecanismo que asegura que las reglas de estructura y semántica sean cumplidas. • Integridad Referencial: Se encarga que todas llaves foráneas tengan referencias con una llave primaria. • Integridad de Entidad: Garantiza que las duplas sean identificadas por llaves primarias únicas. 22

Integridad • Otras herramientas para asegurar la integridad son: • Rollback: Es un statement

Integridad • Otras herramientas para asegurar la integridad son: • Rollback: Es un statement que termina todas las transacciones en curso y cancela todos los cambios a la base de datos. Cuando se ejecuta regresa a la BD a un estado anterior (antes de cambios). • Commit: Es un statement que termina todas las transacciones en curso y ejecuta todos los cambios a la base de datos requeridos por el usuario. • Savepoint: Se aseguran que si una falla ocurre la base de datos tendrá un punto de retorno y recuperación. 23

Seguridad en las Bases de Datos • Agregación: Esto sucede cuando un usuario no

Seguridad en las Bases de Datos • Agregación: Esto sucede cuando un usuario no tiene los permisos necesario para acceder cierta información, pero si cuenta con los permisos para acceder a componentes de esa información. Teniendo esto el usuario puede deducir el resto y obtener información restringida, es decir, puede ir agregando pedazos de información para conseguir información valiosa. • Inferencia: Este problema sucede cuando el usuario deduce la información restringida a partir de el proceso de agregación • La seguridad de la base de datos se realiza de la siguiente manera: Cuando alguien quiere acceder algún dato, la BD lee los datos requeridos para ver si se pueden acceder por parte del usuario, se le llama Content Dependant Access Control • Controles de Seguridad: • Cell Supression • Database Partitioning • Noise & Perturbation • Database View • Polyinstantiation 24

OLTP • Online Transaction Processing: Es usado cuando las bases de datos yacen en

OLTP • Online Transaction Processing: Es usado cuando las bases de datos yacen en clusters, y alguno de los miembros de este clusters falla, si esto ocurre OLTP puede reintentar la acción en otro miembro, o en su caso hacer un rollback del cambio ejecutado. • Debido al numero de transacciones que administra, y el numero de bases de datos que maneja OLTP puede tener muchos problemas de integridad, la solución es la prueba ACID. 25

ACID • Atomicity: Divide las transacciones en unidades de trabajo y se asegura que

ACID • Atomicity: Divide las transacciones en unidades de trabajo y se asegura que todas las modificaciones surtan efecto. Los cambios pueden ser: Commited o Rollback. • Consistency: Una transacción debe seguir las políticas de prioridad desarrolladas para esa BD y ver que los datos sean consistentes en todas las BD del cluster. • Isolation: Las transacciones deben ejecutarse en modo aislado hasta ser completadas. • Durability: Una vez completadas las transacciones se verifican por el sistema, se hace un commit y las bases de datos no podrán hacer rollback. 26

Data Warehousing & Data Mining • Data Warehousing, combina los datos de múltiples bases

Data Warehousing & Data Mining • Data Warehousing, combina los datos de múltiples bases de datos o fuentes de datos una enorme BD, con el propósito de extender la información a explotar y mejorar la capacidad de análisis de las mismas. • Data Mining: Es el proceso de manejar la información contenida en el DW para su explotación. Se usan herramientas de mining para extraer metadata, y por medio de esta contar con la información necesaria para analizar a fondo esta información. • Data Mining = KDD (Knowledge Discovery in Database) • Clasificación • Probabilística • Estadística 27

 • 1. - Which of the following centrally controls the database and manages

• 1. - Which of the following centrally controls the database and manages different aspects of the data? • a) Data storage • b) Database • c) Data Dictionary • d) Access Control 28

 • Answer: C • A data dictionary holds the schema information about the

• Answer: C • A data dictionary holds the schema information about the database. 29

 • 2. - What is the purpose of polyinstantiation? • a) To restrict

• 2. - What is the purpose of polyinstantiation? • a) To restrict lower-level subjects from accessing low-level information. • b) To make a copy of an object and modify the attributes of the second copy. • c) To create different objects that will react in different ways to the same input • d) To create different objects that will take on inheritance attributes from their class. 30

 • Answer: B • Polyinstantiation is when more that one object is made,

• Answer: B • Polyinstantiation is when more that one object is made, and the other copy is modified to have different attributes. In security this is done to fool lower level objects. 31

 • 3. - When a database detects and error, what enables it to

• 3. - When a database detects and error, what enables it to start processing at a designated place? • a) Savepoint • b) Data dictionary • c) Metadata • d) Data Mining Pool 32

 • Answer: A • Savepoints are used to periodically save the state of

• Answer: A • Savepoints are used to periodically save the state of the application and the user’s information. 33

 • 4. - Database views provide what type of security control? • a)

• 4. - Database views provide what type of security control? • a) Detective • b) Corrective • c) Preventive • d) Administrative 34

 • Answer: C • A database view is put into place to prevent

• Answer: C • A database view is put into place to prevent certain users from viewing specific data. 35

 • 5. - Which of the following is used to deter database inference

• 5. - Which of the following is used to deter database inference attacks • a) Partitioning, cell suppression, and noise and perturbation • b) Controlling access to the data dictionary • c) Partitioning, cell suppression and small query sets • d) Partitioning, noise and perturbation and small query sets 36

 • Answer: A 37

• Answer: A 37

 • 6. - What is the disadvantage of content-dependent access control when it

• 6. - What is the disadvantage of content-dependent access control when it comes to databases? • a) It can access other memory addresses. • b) It can cause concurrency problems. • c) It increases processing time and reduces overhead. • d) It can cause deadlock situations 38

 • Answer: C • Relative to other types of access control, contentdependent control

• Answer: C • Relative to other types of access control, contentdependent control requires a lot of overhead and processing because it makes decisions based on the sensitivity of the data. 39

 • 7. - If security was not part of the development of a

• 7. - If security was not part of the development of a database, how is it usually handled? • a) Cell supression • b) Trusted back-end • c) Trusted front-end • d) Views 40

 • Answer: C • A trusted fron end can be developed to implement

• Answer: C • A trusted fron end can be developed to implement more security that the databse is lacking. 41

 • 8. - What is an advantage of content-dependent access control in databases?

• 8. - What is an advantage of content-dependent access control in databases? • a) Processing overhead • b) Ensures concurrency • c) Disallows data locking • d) Granular control 42

 • Answer: D • Content-dependent access control bases its access decision on the

• Answer: D • Content-dependent access control bases its access decision on the sensitivity of the data, which provides more granular control. 43

 • 9. - Online application systems that detect an invalid transaction should do

• 9. - Online application systems that detect an invalid transaction should do which of the following? • a) Roll back and rewrite over original data. • b) Terminate all transactions until properly addressed. • c) Write a report to be reviewed • d) Check point each data entry 44

 • Answer: C • Tricky question, invalid transaction is mostly an user error,

• Answer: C • Tricky question, invalid transaction is mostly an user error, hence the error should be logged and reviewed later. 45

 • 10. - Which of the following are rows and columns of within

• 10. - Which of the following are rows and columns of within relational databases? • a) Rows and tuples • b) Attributes and rows • c) Keys and views • d) Tuples and attributes 46

 • Answer: D • In a relational database a row is referred to

• Answer: D • In a relational database a row is referred to as a tuple, and a column is referred to as an attribute. 47

48

48

49

49

50

50

51

51

52

52

53

53

54

54

55

55

56

56

57

57

58

58

59

59

60

60

61

61

62

62

63

63

64

64

65

65

66

66

67

67

68

68

69

69

70

70

71

71

72

72

73

73

74

74

75

75