0% encontró este documento útil (0 votos)
21 vistas112 páginas

Requerimientos de Seguridad en Software

El documento aborda los requerimientos de seguridad en el desarrollo de software seguro, destacando la situación actual de ciberataques y los principios fundamentales como confidencialidad, integridad y disponibilidad. Se presentan mejores prácticas para implementar estos principios, así como las consecuencias de no aplicarlos, incluyendo pérdidas económicas y de reputación. Además, se enfatiza la importancia de validar el cumplimiento de estos principios mediante políticas de seguridad y controles adecuados.

Cargado por

Pann Konwebo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
21 vistas112 páginas

Requerimientos de Seguridad en Software

El documento aborda los requerimientos de seguridad en el desarrollo de software seguro, destacando la situación actual de ciberataques y los principios fundamentales como confidencialidad, integridad y disponibilidad. Se presentan mejores prácticas para implementar estos principios, así como las consecuencias de no aplicarlos, incluyendo pérdidas económicas y de reputación. Además, se enfatiza la importancia de validar el cumplimiento de estos principios mediante políticas de seguridad y controles adecuados.

Cargado por

Pann Konwebo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Desarrollo de Software Seguro

ISWD853

Por: Jhonattan Barriga, PhD., CEH


DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad

Nombre del profesor "Coloque desde pie de página"

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

Nombre del profesor "Coloque desde pie de página"

SITUACIÓN ACTUAL

4
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad

Ciberataques en la actualidad

Nombre del profesor "Coloque desde pie de página"

5
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad

Ciberataques en nuestro país

Nombre del profesor "Coloque desde pie de página"

6
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad

Nombre del profesor "Coloque desde pie de página"

PRINCIPIOS

7
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad

Principios

Confidencialidad Integridad Disponibilidad


Nombre del profesor "Coloque desde pie de página"

No Repudio Autenticidad

8
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad

Atentando contra los principios (I)

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

• Confianza “ciega” en el usuario.


• Algoritmos débiles.
• Confundir cifrar con hash
• “Confianza” en al fuente externa.
• Arquitecturas débiles

9
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad

Atentando contra los principios (II)

Disponibilidad

• Falta de identificación del requerimiento no funcional.


• Ausencia de políticas de blindaje de infraestructura.
• Falta de experiencia en el sizing. Nombre del profesor "Coloque desde pie de página"
• Seguridad perimetral débil o nula.
• Arquitectura centrada en la aplicación y no en los datos.

No repudio

• Ausencia de mecanismos de trazabilidad.


• Poor logging.
• Procesos sin controles adecuados.

10
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad

Atentando contra los principios (III)

Autenticidad

• Esquema elemental de roles (user/admin).


Nombre del profesor "Coloque desde pie de página"

• Ausencia de información de perfil para identificar al autor.


• Pocos o nulos mecanismos que garanticen la verificación
de información o alguna operación.
• Ausencia de mecanismos que permitan “firmar
digitalmente” un conjunto de datos.

11
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad

Responsable de implementación de principios

• 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

Consecuencias de no aplicar los principios

• Toda organización/sistema sin importar su tamaño debe


considerar los 5 principios antes mencionados.
Nombre del profesor "Coloque desde pie de página"
• Pérdida de reputación
• Pérdidas económicas
• Incumplimiento de normativas

13
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad

¿Cómo validar cumplimiento de principios?

• Políticas de seguridad para toda la organización.


• Estándares
Nombre del profesor "Coloque desde pie de página"
• Certificaciones
• Madurez en los procesos
• Controles
• Revisiones externas

14
DESARROLLO DE SOFTWARE SEGURO
1.4 Requerimientos de Seguridad

Nombre del profesor "Coloque desde pie de página"

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

• Identificar operaciones y su asociación con roles (CRUD).


• Perfilamiento de acceso a opciones (usuario o sistema).
Nombre del profesor "Coloque desde pie de página"
• Error log
• Datos históricos (Movimiento de información)

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

Diseño != Código != Implementación


19
Desarrollo de Software Seguro
ISWD853

Por: Jhonattan Barriga, PhD., CEH


DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Nombre del profesor "Coloque desde pie de página"

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

Introducción – Principios de la seguridad

Confidencialidad Integridad Disponibilidad


Nombre del profesor "Coloque desde pie de página"

No Repudio Autenticidad

4
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Introducción

• La afectación a los principios de seguridad constituye una


vulnerabilidad que puede ser explotada.
Nombre del profesor "Coloque desde pie de página"
• La explotación de una vulnerabilidad afecta directamente
a uno a más principios.
• Basta que exista una vulnerabilidad para que el sistema
no se considere seguro.

5
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Evolución de arquitecturas de despliegue

Nombre del profesor "Coloque desde pie de página"

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

Nombre del profesor "Coloque desde pie de página"

PRINCIPIOS DE DISEÑO SEGURO

7
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Principios

Reducir superficie de ataque


Nombre del profesor "Coloque desde pie de página"
Seguridad por defecto

Mínimos privilegios

Validación de datos de entrada


8
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Principios

Defensa en profundidad
Nombre del profesor "Coloque desde pie de página"
Control seguro de errores

Separación de funciones

Evitar seguridad por oscuridad


9
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Perímetro de seguridad

• Perímetro de seguridad: Límite entre los activos que


queremos proteger y el mundo exterior.
Nombre del profesor "Coloque desde pie de página"

10
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Perímetro de seguridad

• Seguridad física: Puertas, cercas, cámaras, alarmas, etc.


• Zona de confianza en software y redes
– Cloud Nombre del profesor "Coloque desde pie de página"

– 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

• Hace décadas un firewall era “suficiente”.


• No hay control sobre
Nombre del profesor "Coloque desde pie de página"
– Browser
– Otras aplicaciones
– Bases de datos externas

12
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Nombre del profesor "Coloque desde pie de página"

REDUCIR LA SUPERFICIE DE ATAQUE

13
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Superficie de ataque

• Permite identificar, evaluar y mitigar los riesgos de los


sistemas de software.
Nombre del profesor "Coloque desde pie de página"
• Puntos de entrada que puede utilizar un atacante para
comprometer la aplicación.
• Interna
• Externa

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

• Side channel attacks -> Ataque de canal lateral


• Forma de ingeniería inversa.
Nombre del profesor "Coloque desde pie de página"
• Deducir la forma de funcionamiento e información
procesada.
– Criptoanálisis acústico
– Ataques de sincronización

16
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Reducir la superficie de ataque

• ¿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

Nombre del profesor "Coloque desde pie de página"

SEGURIDAD POR DEFECTO

18
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Seguridad por defecto

• Configuraciones establecidas por el fabricante para garantizar


niveles de seguridad mínimos.
• La experiencia del usuario debe ser segura
Nombre del profesor "Coloque desde pie de página"
• Evitar deshabilitar los niveles de seguridad establecidos
• Si se requiere modificar alguna modificación de los permisos es
mandatorio revisar sus efectos
• Ejm: “Ejecución de tareas, servicios con el usuario
Administrador”

19
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Seguridad por defecto

• 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

Nombre del profesor "Coloque desde pie de página"

MÍNIMOS PRIVILEGIOS

21
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Mínimos privilegios

• Cuentas de usuario con mínima cantidad de privilegios


• Procesos deben ejecutarse con permisos suficientes para
ejecutar tareas Nombre del profesor "Coloque desde pie de página"

• Si un atacante compromete un proceso al tener mínimos


privilegios se reduce la capacidad de poder comprometer todo
el sistema.
• Tomar en cuenta siempre los privilegios de acceso a datos por
parte de los usuarios/procesos.

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

Nombre del profesor "Coloque desde pie de página"

VALIDACIÓN DE DATOS DE ENTRADA

24
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Validación de datos de entrada

• PREMISA: No confiar en los datos que el usuario puede


introducir.
• Puede manipularlos. Nombre del profesor "Coloque desde pie de página"

• El no hacerlo genera vulnerabilidades


– Inyección de código
– Ejecución remota de comandos
– Ataques al sistema de archivos
– Desbordamiento de memoria

25
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Validación de datos de entrada

• ¿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

Nombre del profesor "Coloque desde pie de página"

DEFENSA EN PROFUNDIDAD

27
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Defensa en profundidad

• Control en cada una de capas de la arquitectura definida.


• Autenticación y autorización para acceder a la siguiente capa y
a los datos. Nombre del profesor "Coloque desde pie de página"
• Las debilidades de una capa son contenidas por las fortalezas
de la siguiente
• Ejm: Caja fuerte
• Un dispositivo de seguridad perimetral no es la solución a los
problemas de defensa en profundidad.

28
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Defensa en profundidad

Nombre del profesor "Coloque desde pie de página"

29
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Nombre del profesor "Coloque desde pie de página"

CONTROL SEGURO DE ERRORES

30
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Control seguro de errores

• Información detallada del error no debe ser mostrada al


usuario final.
Nombre del profesor "Coloque desde pie de página"
• Dos tipos de errores deben ser controlados
adecuadamente
– Excepciones que ocurren en el procesamiento de controles de
seguridad
– Excepciones en el código que no son “relativas a la seguridad”

31
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Control seguro de errores

• El control seguro del error, va de la mano con la ejecución


del proceso
Nombre del profesor "Coloque desde pie de página"
– Permitir
– No permitir
– Excepción

32
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Control seguro de errores

Nombre del profesor "Coloque desde pie de página"

33
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Nombre del profesor "Coloque desde pie de página"

SEPARACIÓN DE FUNCIONES

34
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Separación de funciones

Nombre del profesor "Coloque desde pie de página"

35
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Separación de funciones

• Definir los roles


• Cada proceso tiene responsables
Nombre del profesor "Coloque desde pie de página"
• Un usuario no puede ser juez y parte

36
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Nombre del profesor "Coloque desde pie de página"

EVITAR SEGURIDAD POR OSCURIDAD

37
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Evitar seguridad por oscuridad

• La seguridad no debe depender del secreto del diseño *


• Asignar nombres “oscuros” para ocultar archivos
Nombre del profesor "Coloque desde pie de página"
sensibles no ayudará en el diseño.
• La seguridad clave de los sistemas no debe basarse en
ocultar detalles.

38
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Evitar seguridad por oscuridad

• ¿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

K.I.S (Keep Security Simple)


Nombre del profesor "Coloque desde pie de página"
Detectar Intrusiones

No confiar en la infraestructura

No confiar en los servicios


40
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Nombre del profesor "Coloque desde pie de página"

KEEP SECURITY SIMPLE

41
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Nombre del profesor "Coloque desde pie de página"

DETECTAR INTRUSIONES

42
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Detección de intrusiones

• La seguridad no es un producto es un servicio


• Notificaciones al equipo de seguridad
• Supervisión periódica
• Respuesta a intrusiones ¿cómo? Nombre del profesor "Coloque desde pie de página"
• Dog barking
• Perfil del usuario para transacciones $$
• Borrado de huellas
• Eventos accionables (cómo actuar)
• Forense
• Limitaciones de intentos (cómo distinguir un usuario que tiene comportamiento errático)
• Código es el escudo

43
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Nombre del profesor "Coloque desde pie de página"

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"

• Herramientas de soporte para hacer tareas de seguridad


(cajas criptográficas)

45
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

No confiar en la infraestructura

• ¿Pentest infraestructura de mi proveedor?


• Corregir vulnerabilidades, delegar responsabilidad
Nombre del profesor "Coloque desde pie de página"
• Falsa sensación de seguridad
• PKI

46
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

Nombre del profesor "Coloque desde pie de página"

NO CONFIAR EN LOS SERVICIOS

47
DESARROLLO DE SOFTWARE SEGURO
2.1. Principios en el diseño de Software Seguro

No confiar en los servicios

• 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

Por: Jhonattan Barriga, PhD., CEH


DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

Agenda

✓“Metodologías” de desarrollo de software seguro


✓Análisis de Riesgo
Nombre del profesor "Coloque desde pie de página"
• Modelado de amenazas

2
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

Modelado de amenazas (Threat modeling)

Nombre del profesor "Coloque desde pie de página"

3
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

Modelado de amenazas (Threat modeling)

✓ 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

Modelado de amenazas (Threat modeling)

✓ Ayuda a identificar mecanismos de protección ante ataques.


✓ Contribuye al proceso de reducción de la superficie de ataque.
✓ Ayuda a guiar el proceso de revisión de código.
Nombre del profesor "Coloque desde pie de página"

✓ Guía el proceso de pruebas de penetración.


✓ Un código sólido no necesariamente implica que esté libre de
amenazas (no indica que sea un código de mala calidad).
✓ Actualización constante (al menos cada 6 meses).

5
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

Artefactos (Modelo de amenazas)

• 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

1. Considerar los límites de confianza de la aplicación


2. Ver más allá de los límites para determinar qué es parte
Nombre del profesor "Coloque desde pie de página"
de la aplicación.

7
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

Construyendo el modelo

Nombre del profesor "Coloque desde pie de página"

Establecer
Preparar Analizar
mitigaciones

Arquitecto / Persona que tenga el conocimiento de seguridad más profundo.

8
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

El proceso del modelado de amenazas

Definir Identificar
Determinar tipos
escenarios de amenazas al
de amenazas
uso sistema

Nombre del profesor "Coloque desde pie de página"

Listar Crear diagramas


Determinar
dependencias de flujo de la
riesgo
externas aplicación

Definir Crear notas de


Planear
supuestos de seguridad
mitigaciones
seguridad externas

9
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

Definir escenarios de uso

• Definir escenarios clave de amenaza dentro del alcance.


• Identificar el rol de usuario
Nombre del profesor "Coloque desde pie de página"
• ¿Una aplicación móvil, debería considerar el hecho que
un dispositivo sea robado?
• ¿Un insider debe ser siempre ser considerado como
amenaza?

10
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

Listar dependencias externas

• Documentar las aplicaciones y software dependiente de la


aplicación.
Nombre del profesor "Coloque desde pie de página"
– Sistema Operativo
– DBMS
– Componentes
– Tomar en cuenta las versiones “robustecidas” del componente.

11
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

Supuestos de seguridad

• Realizar supuestos precisos.


• Un supuesto debe ser analizado desde la perspectiva
Nombre del profesor "Coloque desde pie de página"
específica de la herramienta (sistema operativo).

12
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

Notas de seguridad externa

• Identificar las ramificaciones de seguridad que aparecen


al habilitar cierta funcionalidad.
Nombre del profesor "Coloque desde pie de página"
• Definir otros perfiles
• Definir comunicación mediante ciertos puertos.
• Tomar en cuenta lo que se puede controlar y modelar y
aquello que no se puede controlar pero se depende.

13
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

Notas de seguridad externa

Nombre del profesor "Coloque desde pie de página"

14
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

Notas de seguridad externa

Nombre del profesor "Coloque desde pie de página"

15
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

Crear uno o más flujos (DFD)

• Diagrama de flujo de información (Data Flow Diagram).

Nombre del profesor "Coloque desde pie de página"

16
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

DFD Tipos de Elementos

Figura Tipo de Elemento Descripción


Proceso complejo .exe con muchos DLLs, binario, servicio,
(Multiproceso)
Proceso Tarea específica Nombre del profesor "Coloque desde pie de página"

Entidad externa Algo o alguien que impulsa su aplicación pero no se puede


controlar.
Almacén de datos Datos persistentes (Archivos y DB)

Flujo de datos Movimiento de los datos en el sistema

Límite de privilegios Indicar si los datos pasan de alta a baja confianza y


viceversa. 17
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

Valor del privilegio / Límites de confianza

• Muestran donde los datos pasan de un privilegio inferior a un


superior.
• Indican sitios donde deben analizarse Nombre
los datos / sitios
del profesor "Coloque donde
desde pie de página"

existan fugas de datos sensibles.


• El pasar de un nivel de privilegio a otro no debe constituir un
punto donde se filtre información sensible, privado o
confidencial. (Mensajes de error)
• Crear niveles de diagramas (drill down).

18
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

DFD – Ejemplo – L0

Nombre del profesor "Coloque desde pie de página"

19
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

DFD – Ejemplo – L1

Nombre del profesor "Coloque desde pie de página"

20
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

Determinar tipos de amenazas

• STRIDE identifica varios tipos de amenazas.


• Spoofing Identity (Suplantación de identidad)
• Tampering (Manipulación de datos) Nombre del profesor "Coloque desde pie de página"
• Repudiation (Repudio)
• Information disclosure (Divulgación de información)
• Denial of Service (Denegación de servicio)
• Elevation of privilege (Escalar privilegios)

21
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

Determinar tipos de amenazas

• 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

Identificar amenazas al sistema

• Listar todos los elementos agrupados por tipo y con su


respectivo número de identificación según su DFD.
Nombre del profesor "Coloque desde pie de página"
• Los flujos de información bidireccional deben listarse de
manera independiente.
• Se pueden reducir elementos si fueron escritos o usan la
misma tecnología y manejan datos similares.

23
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

Mapeo de DFD con STRIDE

Nombre del profesor "Coloque desde pie de página"

24
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

Mapeo de DFD con STRIDE

• Mapear elemento del DFD con tipo de amenaza y número


de ítem.
Nombre del profesor "Coloque desde pie de página"
• Mostrar elementos clasificados por el tipo de
amenaza(STRIDE).

25
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

Determinar el riesgo

• Riesgo = Impacto * Probabilidad


• Microsoft define los niveles de riesgo desde la perspectiva
Nombre del profesor "Coloque desde pie de página"
de cliente y usuario.

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

Planes de mitigación - STRIDE

Nombre del profesor "Coloque desde pie de página"

28
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

Factores de éxito del modelado de amenazas

• No hay modelo (0) -> No aceptable, implica que no se han


considerado las amenazas.
• No aceptable (1)-> Desactualizado, antigüedad mayor a 12 meses.
Nombre del profesor "Coloque desde pie de página"
• OK (2) -> DFD o lista de activos, usuarios, límites de amenaza.
• Bueno (3) -> Cumple con todas las definiciones de OK. STIE
identificados, todos los usuarios se muestran.
• Excelente (4) -> Cumple todo lo definido en “Bueno”, STRIDE
identificado con medidas de mitigación, notas de seguridad externa,
dependencias confirmadas.

29
DESARROLLO DE SOFTWARE SEGURO
1.2 Metodologías de desarrollo de software seguro

Lab

• Modelando con Microsoft Threat Modeling Tool

Nombre del profesor "Coloque desde pie de página"

30
Desarrollo de Software Seguro
ISWD853

Por: Jhonattan Barriga, PhD., CEH


DESARROLLO DE SOFTWARE SEGURO
2.2. Estándares de codificación segura

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

Nombre del profesor "Coloque desde pie de página"

4
DESARROLLO DE SOFTWARE SEGURO
2.2. Estándares de codificación segura

¿Qué son malas prácticas de programación?


function add(num1, num2)
{
int a=0;
int b=0;
Nombre del profesor "Coloque desde pie de página"
int c=0;
a=num1;
b=num2;
c=a+b;
return c;
}

5
DESARROLLO DE SOFTWARE SEGURO
2.2. Estándares de codificación segura

Programación Defensiva

• Un programa no se puede defender por sí solo.


• ¿Qué tan importante era el software hace décadas?
Nombre del profesor "Coloque desde pie de página"
• Las consecuencias hoy en día pueden ocasionar…
• Los ataques han evolucionado considerablemente.
• ¿Cómo construir código que puede defenderse?

6
DESARROLLO DE SOFTWARE SEGURO
2.2. Estándares de codificación segura

Programación defensiva

• El que defiende debe proteger todos los puntos.


• Se tiende a defender de ataques conocidos.
• Un atacante busca nuevas formas. Nombre del profesor "Coloque desde pie de página"
• El que defiende debe estar monitoreando todo el tiempo.
• El defensor respeta las reglas, el atacante tiene sus propias
reglas.
• Un sistema seguro garantiza mejoramiento continuo

7
DESARROLLO DE SOFTWARE SEGURO
2.2. Estándares de codificación segura

¿Dónde implementar los controles?

Nombre del profesor "Coloque desde pie de página"

Entrada Procesamiento Salida

8
DESARROLLO DE SOFTWARE SEGURO
2.2. Estándares de codificación segura

Frentes de acción

Detección

• Identificar accesos no autorizados


• Operaciones con exactitud
• Garantizar consultas consistentes Nombre del profesor "Coloque desde pie de página"

Preventivo

• Evitar entrada de datos no autorizados no válidos


• Información precisa para producir resultados adecuados
• Regex, Integridad, Duplicidad, Rangos de validación

Proactivo

• Probar componentes de forma continua

9
DESARROLLO DE SOFTWARE SEGURO
2.2. Estándares de codificación segura

Mejores prácticas

• ¿Cuántos lenguajes de programación conocen?


• ¿Cómo construir un estándar?
Nombre del profesor "Coloque desde pie de página"
• ¿Los desarrolladores están preparados para construir
código seguro?
• ¿El dar capacitación garantiza seguridad?

10
DESARROLLO DE SOFTWARE SEGURO
2.2. Estándares de codificación segura

Mejores prácticas

• OWASP Secure Coding Practices-Quick Reference Guide


• OWASP ASVS
Nombre del profesor "Coloque desde pie de página"
• [Link].800-218

11
DESARROLLO DE SOFTWARE SEGURO
2.2. Estándares de codificación segura

Controles proactivos OWASP

Verificación de la seguridad desde las primeras etapas


• OWASP ASVS
([Link]
[Link])
Nombre del profesor "Coloque desde pie de página"
Validación de datos de entrada
• Formularios
• Formatos
• Rangos
• Cabeceras HTTP
• Cookies
• Parámetros POST y GET
• Archivos
• White List, Black List

12
DESARROLLO DE SOFTWARE SEGURO
2.2. Estándares de codificación segura

Controles proactivos OWASP

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

Controles proactivos OWASP

Implementación de controles de acceso


• Acceso con credenciales
• Roles y privilegios Nombre del profesor "Coloque desde pie de página"

• 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

Controles proactivos OWASP

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)

Manejo de errores y excepciones


• No registrar información confidencial
• Respetar leyes de privacidad y protección de datos
• Deshabilitar errores detallados
• Identificar sensibilidad de los datos.

15

También podría gustarte