Ciclo de vida de desarrollo de Software Seguro

Anuncio
Ciclo de vida de desarrollo
de Software Seguro
Facultad Politécnica – UNA
Maestría en TICs – 2015
Énfasis Auditoría y Seguridad de la Información
Seguridad en aplicaciones y base de datos
Cristian Cappo ([email protected])
NIDTEC - Núcleo de Investigación y Desarrollo Tecnológico - FPUNA
Contenido
 Principios de diseño de seguridad
 Seguridad en el ciclo de vida de un software
 Modelo de desarrollo de software seguro de
OWASP (OpenSMMI) (diapositivas prestadas)
2
Principios de diseño de seguridad (PDS)*
Estos principios se aplican para el diseño e implementación de
mecanismos de seguridad. Se enfoca en las ideas de simplicidad y
restricción
1)
2)
3)
4)
5)
6)
7)
8)
Diseño abierto
Seguro a fallas, por defecto
Privilegios mínimos
Economía de mecanismo
Separación de privilegios
Mediación completa
Mecanismo de menos común
Aceptabilidad psicológica
*Saltzer & Schoroeder. The protection of information in Computer Systems. Proceedings of the
IEEE. Vol. 63 Num 9. Pag: 1278-1308. 1975.
DOI: 10.1109/PROC.1975.9939
3
PDS (2)
1) Diseño abierto/público (Open Design)
 Sugiere que la complejidad no agrega seguridad
 Definición: la seguridad de un mecanismo no
debería depender del secreto de su diseño o
implementación.
 El término “seguridad por oscuridad” captura el
concepto.
 Ejemplo: El sistema CSS (Content Scrambling System) es un
algoritmo criptográfico que protegía a los DVDs de copias no
autorizadas. Aunque el algoritmo se mantuvo oculto, en 1999 se
descubrió el algoritmo, se publicó y se rompió.
4
PDS (3)
2) Seguro ante fallas, por defecto
 Restringe como los privilegios son inicializados
cuando un sujeto u objeto es creado.
 Definición: un privilegio a un sujeto debe ser dado
explícitamente sobre un objeto, de lo contrario se
debe denegar el acceso al mismo.
 El acceso por defecto es “ninguno”
 Ejemplo: Si un servidor de mail no puede crear el directorio de
spool, éste debe cerrar la conexión, emitir un mensaje de error
y parar. No debe tratar de guardar el mensaje o expandir sus
privilegios para guardar el mensaje en otro lugar, esto daría
lugar a un atacante para sobrescribir o alzar nuevos archivos o
llenando el disco (ataque DoS).
5
PDS (4)
3) Privilegios mínimos
 Indica como los privilegios son otorgados
 Definición: un sujeto debe tener solo los privilegios
necesarios a fin de completar su tarea.
 Si alguien no necesita de un privilegio, no lo debe
tener.
 Ejemplo 1: En Unix al usuario root no se le aplica control de
acceso, tiene privilegio a todo. Viola este principio
 Ejemplo 2: un mail server que acepta conexiones de internet y
copia los mensajes al directorio spool. Solo necesita acceso al
puerto de red, crear los archivos y modificarlos. Debe renunciar
a sus derechos sobre el archivo tan pronto como termina su
tarea. Este no debe poder leer luego los archivos de usuarios.
6
PDS (5)
4) Economía en los mecanismos
 Enfatiza que el diseño e implementación de los
mecanismos de seguridad deben ser simples.
 Definición: los mecanismos de seguridad deben ser
tan simples como se pueda.
 Si los mecanismos son simples, existe menos
posibilidades de error. El proceso de pruebas de los
mecanismos es menos complejo.
 Los mecanismos complejos a veces hacen asunciones
sobre el sistema o entorno donde se ejecutan. Si
éstas con incorrectas, podrían generar problemas de
seguridad.
7
PDS (6)
5) Separación de privilegios
 Limita el acceso a las entidades del sistema
 Definición: un sistema no debe otorgar permisos
basados en una simple decisión.
 Sistemas y programas deben dar acceso a recursos
solo cuando mas de una condición es cumplida.
 Ejemplo: En Berkeley-Unixs, los usuarios no pueden cambiarse
a la cuenta root a no ser que se den dos situaciones. La primera
es que conozca la contraseña de root y la segunda que se
encuentre en el grupo wheel.
8
PDS (7)
6) Mediación completa
 Este principio restringe la información en caché.
 Definición: requiere que todos los accesos a los
objetos sean chequeados para asegurar que ellos
sean permitidos.
 Ejemplo: El DNS guarda información en el caché de los
nombres de hosts con sus direcciones IP. Si un atacante
envenena el caché implantando registros asociados a un IP falso
con un nombre válido, un host puede enrutar conexiones a otro
host incorrectamente.
9
PDS (8)
7) Mecanismo común mínimo
 Es restrictivo ya que limita el compartir
 Definición: los mecanismos para acceso a recursos
no deben ser compartidos.
 Compartir recursos provee un canal por el cual la
información puede ser transmitida, por lo que debe
minimizarse el compartir.
 Ejemplo: un sitio web provee servicio de comercio electrónico
a una compañía. Los atacantes quieren privar a esa compañía
de sus ganancias, así que inundan el sitio con mensajes
obstruyendo el servicio de comercio electrónico haciendo que
los usuarios legítimos no puedan accederlo. En este caso el
compartir Internet con el sitio de los atacantes causan que el
ataque sea exitoso.
10
PDS (9)
8) Aceptabilidad psicológica
 Se reconoce el elemento humano en la seguridad
informática.
 Definición: los mecanismos de seguridad no deben
hacer mas dificultoso el acceso a un recurso que
cuando éstos no estén presentes.
 Configurar y ejecutar un programa debe ser fácil e
intuitivo tanto como sea posible, y la salida debe ser
clara, directa y útil.
 Ejemplo: el programa ssh permite al usuario configurar el
mecanismo de clave pública para cifrar la comunicación. Si se
guarda la clave pública, se permite la conexión sin proveer la
contraseña pero se mantiene la conexión cifrada.
11
Ejercicios sobre PDS
1. Un programa llamado lsu da acceso a un rol en un sistema. Se
chequea los derechos del usuario y entonces se requiere introducir
su contraseña. Si tiene derecho y su contraseña es correcta
entonces lsu permite el cambio. María utiliza lsu desde su cuenta,
¿porqué lsu requiere su contraseña? ¿Cuál es el principio aplicado?
2. Un mecanismo común para proteger de obtención de contraseña
por fuerza bruta es deshabilitar la cuenta luego de 3 o un número
definido de intentos.
1.
2.
¿Cómo esta técnica puede prevenir que usuarios legítimos acceda al sistema?.
¿Qué principio de diseño viola y porqué?
Se puede argumentar que este es un mecanismo que aborda el principio de
seguro ante fallas, por defecto. Indique porqué se aplicaría este principio. En
que caso no es una aplicación de este principio.
12
Componentes de la seguridad(ext)
 Confidencialidad
 El dato es accesible solo para los que poseen permiso para ello.
 Privacidad: personas
Condidencialidad: datos.
 Integridad
 Datos y sistema son cambiados solo de la forma apropiada por las
personas apropiadas
 Disponibilidad
 El sistema esta disponible cuando se le necesita y su performance
es aceptable.
Otros componentes extendidos pero relacionados a los
anteriores
 Autenticación: La identidad de usuarios es establecida (Confidencialidad).
 Autorización: El acceso o no de usuarios a los recursos es explícito.
(Integridad)
 No repudio: Usuarios no pueden realizar una acción y luego negar que la
hicieron. (Integridad)
13
Seguridad en el ciclo de vida de un
software
 Abordaje erróneo: diseñar y construir software
ignorando la seguridad desde el principio
 Agregar seguridad una vez que los requerimientos funcionales
son satisfechos.
 Mejor abordaje: incorporar seguridad desde el
principio, en todas las fases del proceso de desarrollo.
 Descubrir problemas de seguridad en fases avanzadas
del desarrollo son difíciles de arreglar y solucionar y
generalmente más costosas.
Según Fortify corregir errores de seguridad en el nivel de requerimiento es 100
veces menos costoso que hacerlo en un software terminado. Business Software
Assurance: Identifying and Reducing - 9th Semi-Annual Software Assurance Forum,
Gaithersburg, MD, 2008
14
Seguridad en el ciclo de vida de un
software
 Fase del proceso de desarrollo de un software
(presentes generalmente en todas las metodologías de
desarrollo)
 Requerimientos
 Diseño
 Implementación
 Testing
 Implantación
 ¿Dónde agregar seguridad?
 En todas las fases
15
Seguridad en el ciclo de vida de un
software
 El diseño, construcción y despliegue de una
aplicación debe integrar seguridad en todo su
ciclo de vida.
 Veremos en las siguientes diapositivas
actividades específicas que integran la seguridad
en cada ciclo de la vida de la aplicación
 Estas actividades se basan en las
recomendaciones de Microsoft para desarrollo
de aplicaciones (SDL). Mandatorio en MS desde
2004.
16
Seguridad en el ciclo de vida de un software
17
Terminología - revisión
 Amenaza
 Es un evento no deseado. Una ocurrencia potencial o un efecto
que puede dañar o comprometer un activo u objetivo.
 Vulnerabilidad
 Es una debilidad (falla) en algún aspecto o característica del
sistema que hace posible su ataque. Puede existir en la red,
host, aplicación o prácticas operacionales.
 Ataque (o exploit)
 Es una acción que usa una o más vulnerabilidades para
concretar una amenaza.
 Contramedida
 Aplicar acciones para reducir la probabilidad de ataques o el
impacto de ellas. No abordan directamente las amenazas sino
se enfocan en las causas que las generan.
18
Actividades de seguridad en el SDLC
1. Objetivos de seguridad:
 Define los objetivos y requerimientos de seguridad de forma temprana en el proceso.
Son metas y restricciones que afectan la CID de datos y aplicación.
2. Guía de Diseño por seguridad
 Eliminar los vulnerabilidades comunes por mala elección de diseño.
3. Modelado de amenazas
 Identificar y comprender las amenazas y vulnerabilidades relevantes en el contexto del
sistema. Identifica acciones de un atacante y como puede comprometer el sistema.
4. Diseño y arquitectura por seguridad
 Analiza el diseño y la arquitectura desde el punto de vista de seguridad. Incluye
aspectos como implantación e infraestructura.
5. Revisión de código por seguridad
 Identificar vulnerabilidades de seguridad en la implementación.
6. Pruebas de seguridad
 Abordaje basado en riesgo (asegurar que el sistema pueda defenderse de ataques
probables y ataques más costosos)
7. Revisión de implantación por seguridad:
 Incluye la evaluación del entorno de ejecución y configuración del sistema
19
Actividades de seguridad en el ciclo de vida de
una aplicación
20
1) Objetivos de seguridad
21
Descubriendo los objetivos de seguridad
 Matriz de roles
 Derivar de los requerimientos funcionales
22
Matriz de roles
 Ejemplo
23
Derivar de los requerimientos funcionales
 Ejemplo
24
2) Guía de Diseño por seguridad
 Consisten en un conjunto de prácticas que pueden ser
empleados para reducir el riesgo de vulnerabilidades de
seguridad.
 Cada directriz/guía debe ser:
 Accionable
 Asociada a una vulnerabilidad a ser mitigada
 Relevante
 Asociada a una vulnerabilidad que es conocida afecta a
aplicaciones reales.
 De impacto
 Debe representar una decisión de ingeniería que tenga un impacto
amplio.
 Este conjunto es referenciado en un marco de seguridad
o de trabajo (framework)
25
Marco de seguridad
 Es una modelo de información-patrón que
define un conjunto de aspectos de seguridad
para la aplicación que se está diseñando.
 Las guías de patrones y prácticas incluyen un
marco de seguridad específico por cada tipo de
aplicación.
26
Categoría de vulnerabilidades común en
muchos tipos de aplicaciones
27
Directrices específicas para una aplicación
específica
 Ejemplo: aplicación web
28
Consideraciones de despliegue
29
Directrices de diseño que son comunes en
muchas aplicaciones
30
Directrices de diseño que son comunes en
muchas aplicaciones (2)
31
3) Modelado de amenazas
 “Software security” es un área de la seguridad
computacional que se enfoca en el diseño e
implementación segura del software. Construir software
seguro que funcione como es esperado a través de todo
su ciclo de vida. Es diferente a “security software”
¿Porqué?
 El modelado de amenazas es parte integral del ciclo de
desarrollo seguro de una aplicación.
 Cuando desarrolla o actualiza un sistema, debe
considerar cómo un intruso puede atacarlo y cómo
construir las defensas apropiadas en los estadios de
diseño e implementación del mismo.
32
Modelado de amenazas
 Existen muchos abordajes
 No existe una forma bien establecida para
medirla calidad de un modelo de amenazas.
 Aun en el campo más maduro, como por
ejemplo el de criptografía, muchos programas
populares aun no han probado ser seguros
(HeartBleed – bug de OpenSSL - CVE-20140160).
33
Modelado de amenazas
 Es una técnica de ingeniería que se utiliza para
identificar amenazas, ataques, vulnerabilidades y
contramedidas
 Ayuda a:
 Reconocer los objetivos de seguridad
 Amenazas relevantes
 Vulnerabilidades y contramedidas
 Es realizado para identificar cuando y donde se
requieren más recursos para reducir los riesgos.
 Se realiza usualmente en la fase de diseño de un
sistema y se retroalimenta de otras fases.
 Provee también las bases para el plan de test de
seguridad (penetration test) y para la revisión de código
34
Modelado de amenazas – proceso iterativo
35
Modelado de amenazas en el
ciclo de vida de un SW
 En el modelo SDL de MS
36
Proceso de modelo de amenazas, resumen de
entrada/salida por cada paso
37
Utilizando STRIDE
STRIDE es una taxonomía de amenazas que identifica varios tipos de
amenazas considerándolas desde la perspectiva del atacante. Es también
una propuesta de MS.
Amenaza
Spoofing
Falsificación de identidad
Componente de seguridad
Autenticación
Tampering
Modificación de dato o código
Integridad
Repudiation
Negar que se ha realizado una acción
No Repudio
Information disclosure
Exponer información no autorizada
Confidencialidad
Denial of service
Denegar o degradar el servicio a los usuarios
Disponibilidad
Elevation of privilege
Ganar capacidades sin la debida autorización
Autorización
38
Modelado de amenazas
 Forma parte del SDL (Security Development Lifecycle)
 En el modelo de amenazas utilizando STRIDE,
se descompone el sistema en componentes
relevantes, se analiza cada componente por
susceptibilidad a las amenazas y se mitiga las
mismas.
 Este proceso se repite hasta que uno se
encuentre confortable con las amenazas que
restan.
 Si hace esto puede argumentar que su sistema
es seguro.
39
El proceso de modelado con STRIDE
40
El proceso de modelado con STRIDE
 Diagrama: se utiliza DFD (Data Flow Diagram
– Diagrama de Flujo de Datos) aunque se puede
utilizar cualquier otro para representar el diseño
del sistema.
41
Elementos del DFD
42
DFD
 Puede hacerse en varios niveles
 Diagrama de contexto.
 Alto nivel, el producto/sistema completo
 Nivel 1
 Alto nivel con los principales componentes
 Nivel 2
 Bajo nivel con detalle de subcomponentes
 Nivel 3
 Mucho más detallado, solo para grandes proyectos
43
Ejemplo (diagrama de contexto)
44
Ejemplo (Diagrama de nivel 1)
45
DFD
 Análisis o Síntesis
 TopDown
 Comienza del contexto
 Se focaliza en el sistema como un todo
 Bottom up
 Se conoce en detalle las características
 Se comienza desde abajo
 Abordaje no es conveniente para la síntesis
46
Reglas básicas
 Los datos no aparecen mágicamente, los datos
vienen de un DataStore (almacenamiento) o de
una entidad externa.
 Los datos no mueren en un DataStore, se indica
un DataStore por alguna razón.
 Los datos no fluyen mágicamente entre los
DataStores, debe existir un proceso entre ellos.
 No reensamblar el diagrama de clases o grafos
de llamadas.
47
Amenazas por cada elemento del sistema
(Identificando amenazas)
En caso de almacenar datos de auditoría/logging
tiene una amenaza de Repudio
48
Mitigación: algunas mitigaciones estándar
49
Mitigaciones
Tipo de amenaza
Técnica de mitigación
Spoofing
Autenticación apropiada, Protección de datos secretos
No guardar “secretos”
Tampering
Autorización apropiada, Hashes, MAC(message
authentication code), Firma digital,
Uso de protocolos resistentes a modificaciones
Repudiation
Firma digital, Timestamps, logs de auditoría
Information disclosure Autorización, Protocolos de privacidad mejorados,
encripción, protección de “secretos”, no guardar
“secretos”
Denial of service
Autenticación, autorización, filtrado, calidad de servicio,
regulación de tráfico
Elevation of privilege
Ejecución con menos privilegio posible
50
Validación
 Validar todo el modelo
 ¿Coincide con el código final?
 ¿Son todas las amenazas enumeradas?
 Mínimo: STRIDE de cada elemento que toca la línea
o límite de confianza
 ¿Esta cada amenaza mitigada?
 ¿Son las mitigaciones correctas?
 Validar la información capturada
 ¿Qué otro código utiliza? ¿Qué funciones de
seguridad esta en otro código? ¿Es seguro?
51
Ejemplo
 Suponga un sencillo sistema que colecta las
ventas desde varias sucursales, procesa los
datos de ventas y produce reportes semanales.
 Existen muchas amenazas obvias a este sistema
(¿Cuáles son?)
52
DFD Inicial
Vendedores
Sucursal 01
Aplicación de
ventas
Aplicación de
ventas
Datos Vendedores
Datos Venta
Datos Venta
Proceso de
envío
Proceso de
envío
Proceso
Recolección
Proceso
Análisis
Datos Análisis
Vendedores
Sucursal NN
Cliente
Límite de confianza
Servidor
53
Un DFD mejor analizado
Datos Vendedores
2
Vendedores
Sucursal 01
1
Proceso
recolección
y análisis
3
Vendedores
Sucursal NN
Datos Análisis
Generación
Reportes
Administrador
54
Analizando los flujo de datos y
almacenamientos
 Flujo de Dato 1:
Tampering - Information disclosure - Denial of Service
 Flujo de Dato 2:
Tampering - Information disclosure - Denial of Service
 Flujo de Dato 3:
Tampering - Information Disclosure - Denial of service
 Almacenamiento Datos Vendedores
Tampering - Information Disclosure - Denial of service
 Almacenamiento Datos Análisis
Tampering - Information Disclosure - Denial of service
 Proceso de recolección y análisis de datos
Spoofing - Information Disclosure - Denial of service - Elevation of privilege Repudiation
55
Determinando el riesgo
Opción 1:
Riesgo = Chance del ataque x Daño Potencial.
Problemático para determinar la probabilidad a priori
Opción 2:
 El modelo de MS utiliza DREAD para determinar el riesgo.
 Damage Potencial: ¿cuál es el grado de daño en caso de ataque?
 Reproducibility: ¿qué tan fácil es reproducir un ataque?
 Exploitability: ¿Cuánto tiempo, expertise y esfuerzo es necesario para explotar
la amenaza?
 Affected users: si la amenaza es explotada, ¿cuántos usuarios son afectados?
 Discoverability: ¿qué tan fácil es descubrir esta amenaza?
 Para determinar el riesgo se da a cada amenaza un valor de 1 al
10, donde 10 indica más riesgo. Se promedia y se puede distribuir
en alto, medio y bajo riesgo.
56
Otra forma de ver las amenazas y contramedidas
Grafo de amenazas
Atacante puede leer
los mensajes de
usuarios
Usuario no cerró su
sesión en una
computadora
compartida
Mala validación de
los datos,
permitiendo
inyección SQL
Autorización puede
fallar permitiendo
acceso no
autorizado
Implementar un
buen esquema de
validación de datos
Implementar un
buen chequeo de
autorización
El navegador
puede contener
parte del mensaje
en su caché
Implementar anticaching de
cabeceras HTTP
Usar SSL
57
Modelado de amenazas (conclusiones)
 Es una actividad estructurada que permite
identificar y evaluar amenazas y vulnerabilidades.
 Debe empezar temprano con el diseño
arquitectónico del sistema
 Debe ser refinado en la etapa de implementación
 Debe coincidir plenamente con el diseño de los
objetivos de seguridad
 Debe ayudar a ponderar contra otros aspectos de
diseño como el rendimiento.
58
Otros abordajes de modelado de
amenazas
 OWASP (https://www.owasp.org/index.php/Threat_Risk_Modeling)
 Básicamente es el mismo mostrado aquí.
 Trike (http://www.octotrike.org/home.shtml)
 OCTAVE (CERT) (SEI - Carnegie Mellon University )
(http://www.cert.org/resilience/products-services/octave/octavemethod.cfm)
59
Ejercicio
 Realice el Modelado de amenazas de la
aplicación payroll utilizado en clases pasadas.
Asuma que esta aplicación será instalada en un
servidor web disponible en la red Interna de la
entidad.




Analice la aplicación
Construya el DFD
Indique las amenazas posibles
Proponga las contramedidas posibles para cada amenaza en
caso de que estas sean de alto o medio riesgo considerando el
modelo DREAD y los valores promedios
 10-8
 7-5
 4-1
: Alto
: Medio
: Bajo
60
App: Payroll
61
DFD - Payroll
62
4) Diseño arquitectónico seguro
63
Consideraciones de despliegue e infraestructura
64
Arquitectura de la aplicación y consideración de
diseño
65
5) Revisión de Código seguro
 1: establecer metas y
restricciones de la revisión
 2: usar análisis estático para
encontrar un conjunto inicial de
vulnerabilidades
 3: revisión de código buscando
vulnerabilidades comunes
guiados por el paso 2
 4: revisar mecanismos únicos
de seguridad en la arquitectura
 Técnicas de revisión:
 ControFlow
 DataFlow
66
Lista de preguntas para revisar el código
67
Lista de preguntas para revisar el
código(2)
68
7) Revisión de Despliegue seguro
 Categorías de configuración de un servidor
69
Revisión de despliegue seguro
Categorías de aseguramiento del servidor
70
Revisión de despliegue seguro
 Categorías de aseguramiento del servidor(2)
Aquí termina el modelo SDL de MS
71
Verificación de aplicaciones web
 OWASP ASVS
(Application Security Verification Standard)
 Normaliza el rango de cubrimiento y nivel de rigor
disponible en el mercado cuando se realiza una
verificación de una aplicación web por seguridad.
 Ideal para verificar software de terceros o empresas
de consultoría de seguridad.
 Define niveles de verificación
72
OWASP ASVS (2)
Nivel
O (Coursory)
Es opcional e indica que la aplicación ha pasado algún
tipo de verificación
1 (Opportunistic)
Existen defensas adecuadas para vulnerabilidades fáciles
de descubrir
2 (Standard)
Existen defensas adecuadas para vulnerabilidades
prevalentes cuya existencia genera un riesgo moderado
a serio. Puede incluir las vulnerabilidades “Top 10
OWASP” y vulnerabilidades lógicas.
3 (Advanced)
Existen defensas adecuadas contra todas las
vulnerabilidades avanzadas y se muestra principios de un
buen diseño por seguridad.
73
OWASP ASVS (3)
 Áreas de verificación que define













Autenticación
Manejo de sesión
Control de acceso
Manejo de entrada maliciosa
Criptografía y REST
Manejo de errores y logging
Protección de datos
Comunicación
HTTP
Control de código malicioso
Lógica del negocio
Archivos y recursos
Mobile
74
OWASP ASVS (4)
Ejemplo de tabla de verificación por área
75
Bibliografía/Referencias
 M. Bishop. Introduction to Computer Security. Addison
Wesley. 2005. (capítulo 13)
 J.D. Meir et al. Security Engineering Explained. Patterns
& practices. Microsoft. 2005.
 STRIDE Model. Microsoft.
 NIST 800-64 rev. 2 “Security considerations in the System
Development Life Cycle” (http://csrc.nist.gov/publications/nistpubs/800-64Rev2/SP800-64-Revision2.pdf)
 OWASP - SAMM (http://www.opensamm.org)
 OWASP – ASVS
(https://www.owasp.org/index.php/Category:OWASP_Application_Security_Verificati
on_Standard_Project)
 Microsoft SDL (http://www.microsoft.com/security/sdl/default.aspx)
76
¡Gracias!
¿Preguntas?
77
Descargar