Requerimientos de Seguridad en Software
Requerimientos de Seguridad en Software
ISWD853
REQUERIMIENTOS DE SEGURIDAD
(PRINCIPIOS Y PRÁCTICAS)
2
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad
Agenda
• Situación actual
• Principios
Nombre del profesor "Coloque desde pie de página"
• Mejores prácticas
3
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad
SITUACIÓN ACTUAL
4
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad
Ciberataques en la actualidad
5
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad
6
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad
PRINCIPIOS
7
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad
Principios
No Repudio Autenticidad
8
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad
Confidencialidad
• Ausencia de roles
• Ausencia de mecanismos para proteger información privada, sensible, confidencial, secreta.
• Uso de mecanismos débiles
Nombre del profesor "Coloque desde pie de página"
• Supuestos asumidos incorrectamente
• No identificación del requerimiento.
Integridad
9
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad
Disponibilidad
No repudio
10
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad
Autenticidad
11
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad
• Experto
– CISO (Chief Information Security Officer)
Nombre del profesor "Coloque desde pie de página"
– CSO (Chief Security Officer)
– Auditor Informático
12
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad
13
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad
14
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad
MEJORES PRÁCTICAS
15
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad
Mejores prácticas
• Identificar el proceso
• Definir roles (Segregación de funciones)
Nombre del profesor "Coloque desde pie de página"
• Establecer controles
• Documentación
• Identificar requerimientos de seguridad
16
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad
Mejores prácticas
17
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad
Mejores prácticas
• Hardening de ambientes
• Hardening de comunicaciones
Nombre del profesor "Coloque desde pie de página"
• Secure coding
• Asegurar el proceso de despliegue
• Identificación de entradas y salidas (data flow)
18
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad
Mejores prácticas
• Verificación de controles
• Verificación de hardening
Nombre del profesor "Coloque desde pie de página"
• Pentest (OWASP Top 10) – (Dev, Test, PreProd, Prod).
• Componentes
PRINCIPIOS EN EL DISEÑO DE
SOFTWARE SEGURO
2
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
Agenda
• Introducción
• Evolución de arquitecturas de despliegue
Nombre del profesor "Coloque desde pie de página"
• Principios de diseño seguro
3
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
No Repudio Autenticidad
4
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
Introducción
5
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
La evolución al cloud
[Link]
understand-the-journey-from-mainframe-to-client-
server-to-the-cloud/
6
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
7
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
Principios
Mínimos privilegios
Principios
Defensa en profundidad
Nombre del profesor "Coloque desde pie de página"
Control seguro de errores
Separación de funciones
Perímetro de seguridad
10
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
Perímetro de seguridad
– Extranets y VPNs
– Teletrabajo
– Tecnologías móviles
– Apertura de los servicios back-office a los usuarios públicos y
automatización
11
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
Perímetro de seguridad
12
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
13
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
Superficie de ataque
14
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
Superficie de ataque
• Mapeo de la superficie
– Aplicaciones web
Nombre del profesor "Coloque desde pie de página"
• Obtener todas las entradas
• Identificar toda la funcionalidad
– Seguir todos los hipervínculos
– Llenar todos los formularios con datos válidos e inválidos.
• Identificar todos los puntos
15
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
Superficie de ataque
16
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
• ¿Cómo reducir?
– Deshabilitar módulos o componentes no requeridos
Nombre del profesor "Coloque desde pie de página"
– Ejemplos
• Deshabilitar la caché
• Hardening
– La vulnerabilidad puede existir pero no afectará al sistema.
17
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
18
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
19
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
• Logging
• Aislar recursos
Nombre del profesor "Coloque desde pie de página"
• Crear componentes
• K.I.S
– Keep Security Simple
– If it is not broken, don’t fix it.
20
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
MÍNIMOS PRIVILEGIOS
21
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
Mínimos privilegios
22
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
Mínimos privilegios
• Limitar el CPU
• Memoria RAM
Nombre del profesor "Coloque desde pie de página"
• Permisos de red
• Permisos de archivos
23
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
24
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
25
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
• ¿Dónde validarlos?
• ¿Cuántas capas?
Nombre del profesor "Coloque desde pie de página"
• ¿Qué cosas se pueden/deben validar?
26
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
DEFENSA EN PROFUNDIDAD
27
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
Defensa en profundidad
28
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
Defensa en profundidad
29
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
30
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
31
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
32
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
33
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
SEPARACIÓN DE FUNCIONES
34
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
Separación de funciones
35
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
Separación de funciones
36
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
37
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
38
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
• ¿Cómo fortalecer?
– Políticas de acceso a la información (Código fuente)
Nombre del profesor "Coloque desde pie de página"
– Arquitectura sólida
– Contraseñas robustas.
• Errores -> En un algoritmo de cifrado… ¿Qué es más
importante proteger?
39
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
Principios
No confiar en la infraestructura
41
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
DETECTAR INTRUSIONES
42
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
Detección de intrusiones
43
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
NO CONFIAR EN LA INFRAESTRUCTURA
44
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
No confiar en la Infraestructura
• Seguridad física
• Confianza en componentes de 3eros
Nombre del profesor "Coloque desde pie de página"
45
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
No confiar en la infraestructura
46
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
47
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro
• Vulnerables a ataques
• Validez de los datos
Nombre del profesor "Coloque desde pie de página"
• Permisos altos
• Autenticación – Robusto
48
Desarrollo de Software Seguro
ISWD853
Agenda
2
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
3
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
✓ No es procedimiento estático
✓ Contribuye al proceso de gestión de riesgos (amenazas de hw y sw
pueden afectar al usuario).
✓ Identifica amenazas en el sistema antes de que
Nombre del profesor "Coloque desde pie de página"
se transforme en código.
✓ Revalida la arquitectura y el diseño, haciendo que el equipo de desarrollo
revise nuevamente el diseño.
✓ Obliga al equipo de desarrollo a mirar el diseño desde el punto de vista
de la seguridad y privacidad. (Componentes con alta probabilidad de
ataque)
4
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
5
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
• Escenarios de uso
• Dependencias externas
Nombre del profesor "Coloque desde pie de página"
• Supuestos de seguridad
• Notas de seguridad externa
6
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
Construyendo el modelo
7
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
Construyendo el modelo
Establecer
Preparar Analizar
mitigaciones
8
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
Definir Identificar
Determinar tipos
escenarios de amenazas al
de amenazas
uso sistema
9
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
10
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
11
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
Supuestos de seguridad
12
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
13
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
14
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
15
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
16
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
18
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
DFD – Ejemplo – L0
19
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
DFD – Ejemplo – L1
20
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
21
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
• Confidencialidad
• Integridad
Nombre del profesor "Coloque desde pie de página"
• Availability (Disponibilidad)
22
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
23
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
24
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
25
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
Determinar el riesgo
26
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
Planes de mitigación
• No hacer nada
• Eliminar la característica
Nombre del profesor "Coloque desde pie de página"
• Deshabilitar la característica
• Advertir al usuario
• Contrarrestar la amenaza con tecnología
27
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
28
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
29
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro
Lab
30
Desarrollo de Software Seguro
ISWD853
ESTÁNDARES DE CODIFICACIÓN
Nombre del profesor "Coloque desde pie de página"
SEGURA
2
DESARROLLO DE SOFTWARE SEGURO
2.2. Estándares de codificación segura
Agenda
• Introducción
• Programación Defensiva
Nombre del profesor "Coloque desde pie de página"
• Controles proactivos OWASP
3
DESARROLLO DE SOFTWARE SEGURO
2.2. Estándares de codificación segura
Introducción
4
DESARROLLO DE SOFTWARE SEGURO
2.2. Estándares de codificación segura
5
DESARROLLO DE SOFTWARE SEGURO
2.2. Estándares de codificación segura
Programación Defensiva
6
DESARROLLO DE SOFTWARE SEGURO
2.2. Estándares de codificación segura
Programación defensiva
7
DESARROLLO DE SOFTWARE SEGURO
2.2. Estándares de codificación segura
8
DESARROLLO DE SOFTWARE SEGURO
2.2. Estándares de codificación segura
Frentes de acción
Detección
Preventivo
Proactivo
9
DESARROLLO DE SOFTWARE SEGURO
2.2. Estándares de codificación segura
Mejores prácticas
10
DESARROLLO DE SOFTWARE SEGURO
2.2. Estándares de codificación segura
Mejores prácticas
11
DESARROLLO DE SOFTWARE SEGURO
2.2. Estándares de codificación segura
12
DESARROLLO DE SOFTWARE SEGURO
2.2. Estándares de codificación segura
Desbordamiento de búfer
• Explotar el software de forma remota Nombre del profesor "Coloque desde pie de página"
• C y C++
Gestión de sesiones
• Sesiones únicas por usuario
• Deben invalidarse y anularse luego de un tiempo de inactividad.
13
DESARROLLO DE SOFTWARE SEGURO
2.2. Estándares de codificación segura
• Proteger metadatos
Implementación de controles de identidad y autenticación
• Verificar la identidad de los usuarios que intentan acceder
• Transportar credenciales de forma segura
• Garantizar la autenticación (Oauth, OpenId)
14
DESARROLLO DE SOFTWARE SEGURO
2.2. Estándares de codificación segura
MFA
• Algo que se conoce (credenciales)
• Algo que se tiene (token) Nombre del profesor "Coloque desde pie de página"
• Algo que se es (biometría)
15