Prácticas
Desarrollo
Seguro de Software
El ritmo de la innovación sigue aumentando, y muchas empresas de
software se han alejado de los ciclos de desarrollo de varios años
a favor de lanzamientos más frecuentes e iterativos, incluidos
algunos que se lanzan “continuamente”.
Además, la dependencia de componentes de terceros, tanto
comerciales como OSS, está creciendo, y estos a menudo se
tratan como cajas negras y se revisan con un nivel de escrutinio
diferente al del software desarrollado internamente, una
diferencia que puede introducir riesgos.
A esto agregamos la necesidad de cumplir con muchos estándares y
regulaciones, y los equipos de desarrollo de software pueden
tener dificultades para completar las actividades de seguridad
necesarias
Introducción
Proceso Alcance
Los temas de seguridad son una de las principales
Las prácticas definidas en este curso son diversas que
preocupaciones, una revisión de los procesos de desarrollo
abarcan servicios basados en la nube y en línea, software
de software seguro revela que existen prácticas de
empaquetado y aplicaciones de bases de datos, así como
seguridad correspondientes para cada actividad en el ciclo sistemas operativos, dispositivos móviles, sistemas
de vida del desarrollo de software que pueden ayudar a integrados y dispositivos conectados a Internet.
mejorar la seguridad del software.
Estas prácticas son independientes de cualquier
metodología, proceso o herramienta de desarrollo.
Objetivo
En este curso revisaremos prácticas actuales que pueden integrarse y
adaptarse a una amplia variedad de entornos de desarrollo del mundo
real, y si bien cada práctica agrega valor, para ser eficaz, la seguridad
del software debe abordarse durante todo el ciclo de vida del
desarrollo, en lugar de ser un evento único o una casilla única en una
lista de verificación.
Prácticas para el Desarrollo Seguro de Software
¿Qué es el desarrollo Prácticas de
Seguridad
Actividades del
SDLC
Mejora en la
Seguridad del
Software
d1 e software seguro? Planeación, Monitoreo y Control
El SDL debe ser firme en su enfoque de seguridad,
pero lo suficientemente flexible en su aplicación 1. Análisis 2. Diseño 3. Implementación 4. Pruebas
para adaptarse a las variaciones en una serie de
factores como las diferentes tecnologías y
metodologías de desarrollo en uso y el perfil de
riesgo de las aplicaciones en cuestión.
Software Seguro
¿Qué es el desarrollo
d1 e software Comúnmente estás prácticas están consideradas en el ciclo de
vida de desarrollo de software seguro (SDL):
seguro? a) Identificación y definición de requisitos de seguridad
b) Diseño
c) Implementación de prácticas durante la codificación
d) Pruebas y validación
Así como durante el ciclo de creación de Soportado por:
software, se abarca el desarrollo e • Gestión de componentes de terceros (tanto de código
implementación de métodos y procesos para abierto como comerciales listos para usar)
• Administración de hallazgos de seguridad
garantizar que este funcione según lo previsto
• Gestión de problemas de seguridad
y esté libre de defectos de diseño y fallas de • Respuesta y divulgación de vulnerabilidades
implementación, es necesario considerar la • Planeación e implementación en el
integración de procesos y prácticas que despliegue de manera segura
verifiquen los requerimientos de software
seguro.
¿Qué es el desarrollo de
software seguro?
DISEÑO VERIFICACIÓN RESPUESTA
REQUERIMIENTOS IMPLEMENTACIÓN LANZAMIENTO
• Análisis dinámico Ejecutar plan de
• Establecer requerimientos • Establecer • Usar herramientas • Plan de respuesta
requerimientos de a respuesta a incidentes
de seguridad aprobadas • Fuzz testing
diseño incidentes
• Evaluación de calidad / • Desaprobar funciones • Revisión de la
Barrera de Errores • Análisis de inseguras • Revisión final de
superficie del
superficie de seguridad
ataque
• Evaluación de riesgos ataque • Análisis estático
de seguridad y • Documentación de
privacidad • Modelado Release
de
amenazas
Modelado de Amenazas Pentesting
Revisiones de seguridad
Q&A
Definición de controles
de seguridad de
aplicaciones
• Las prácticas comentadas en este curso y los controles de
seguridad de las aplicaciones; conducirán a la
identificación de debilidades de diseño o implementación
de software, que cuando se explotan exponen la
aplicación, el entorno o la empresa a un nivel de riesgo.
• Se debe realizar un seguimiento de estos problemas (por
medio de la administración de los hallazgos de seguridad)
y se deben tomar medidas para mejorar la postura de
La identificación y gestión de los controles seguridad general del producto.
de seguridad de aplicaciones (ASC) o los
requerimientos de seguridad y los
problemas de seguridad son aspectos • El seguimiento efectivo respalda la capacidad de medir
esenciales de un programa de desarrollo el cumplimiento de las políticas internas y las
de software seguro y eficaz. regulaciones externas y definir otras métricas para
garantizar la seguridad.
Definición de La definición de los controles de seguridad de la aplicación comienza la etapa
controles de seguridad de Diseño y continúa a lo largo del ciclo de vida de una aplicación, en respuesta
de aplicaciones a los requerimientos de negocio cambiantes y a un entorno de amenazas en
constante evolución.
Las entradas para la identificación de los requisitos El fujo general debe considerar:
de seguridad son:
1. Identificar amenazas, riesgos y factores de cumplimiento.
1. Los principios de diseño seguro descritos 2. Identificar los requerimientos de seguridad adecuados
2. La retroalimentación del programa de gestión para abordar esas amenazas y riesgos.
de vulnerabilidades establecido 3. Comunicar los requerimientos de seguridad a los equipos
3. Las solicitudes de partes interesadas, como un equipo de de implementación.
cumplimiento (por ejemplo: si la aplicación debe cumplir 4. Validar la implementación de todos los requerimientos
con estándares como HIPAA, PCI, GDPR, etc.) o un de seguridad.
equipo de implementación y operaciones. 5. Ejecutar auditorías, para demostrar el cumplimiento de las
políticas o regulaciones aplicables.
Definición de controles
de seguridad de
Principios de diseño Implementación de
seguro tareas en ADLM
aplicaciones Principios de
codificación segura
Requerimientos legales
y de la industria Gestión de control
Validación de tareas
de seguridad
en ADLM
de aplicaciones
Políticas y estándares
internos
Incidentes y feedback
Artefactos de auditoria
Amenazas y riesgos
Sistema de gestión del ciclo de vida del
desarrollo de aplicaciones (ADLM)
SECCIÓN 2
Diseño
• Si las organizaciones que usarán el software
tienen políticas de seguridad internas o deben
cumplir con leyes o regulaciones externas, el
software debe incorporar características de
seguridad que cumplan con esos requerimientos.
• Además de incorporar características de
seguridad, la arquitectura y el diseño del
software deben permitir resistir amenazas
conocidas según el entorno operativo
previsto.
Diseño
Características de
Proceso de seguridad para
Principios de Requerimientos proteger datos y
modelado de
diseño seguro de seguridad cumplir con
amenazas requerimientos
de usuario
Estas características realizan funciones como:
1. La identificación y autenticación del usuario.
2. La autorización del acceso del usuario a la información y los recursos.
3. La auditoría de las actividades de los usuarios según lo requiera la aplicación.
1. Economía de mecanismo: diseño del sistema
lo más simple y pequeño posible.
Principios de diseño 2. Valores predeterminados a prueba de fallas:
basar las decisiones de acceso en el permiso (a un
seguro usuario se le permite explícitamente el acceso a un
recurso) en lugar de en la exclusión (a un usuario se
le niega explícitamente el acceso a un recurso).
Los principios del diseño de sistemas seguros 3. Mediación completa: debe comprobarse la
se establecieron por primera vez en un autorización de todos los accesos a todos los
artículo de 1974 de Jerome Saltzer y Michael objetos es decir debe haber un control integral de
Schroeder y los más importantes son: accesos y privilegios.
4. Privilegios mínimos: todos los programas y
todos los usuarios del sistema deben operar
utilizando el menor conjunto de privilegios
necesarios.
Principios de diseño 5. Mecanismo menos común: una arquitectura
de seguridad debe minimizar la dependencia de
mecanismos que son compartidos por muchos
seguro usuarios.
6. Aceptabilidad psicológica: es fundamental que la
Los principios del diseño de sistemas seguros interfaz de usuario esté diseñada para facilitar su
se establecieron por primera vez en un uso, para que los usuarios apliquen de forma
artículo de 1974 de Jerome Saltzer y Michael rutinaria y automática los mecanismos de protección
Schroeder y los más importantes son: correctamente.
7. Registro de compromiso: se sugiere utilizar
mecanismos que registran de manera confiable que
se ha comprometido el uso de información, en lugar
de mecanismos más elaborados que evitan por
completo la pérdida.
Principios de diseño a. Defensa profunda: diseñar el sistema para
que pueda resistir a los ataques incluso si se
descubre una sola vulnerabilidad de seguridad o
seguro se omite una sola característica de seguridad.
b. Fallar de forma segura: un sistema debe
Otros principios a considerar: diseñarse para permanecer seguro incluso
si encuentra un error o falla.
c. Diseño para actualización: es probable que
ningún sistema permanezca libre de
vulnerabilidades de seguridad para siempre,
por lo que los desarrolladores deben planificar
la instalación segura y confiable de
actualizaciones de seguridad.
Un modelo de amenazas, Una vista de la aplicación
es esencialmente una y su ambiente desde la
representación perspectiva de seguridad
estructurada de toda la
información que puede
afectar la seguridad de
una aplicación.
Modelado de El modelado de amenazas es una técnica de ingeniería que se puede
usar para ayudar a identificar:
a) Amenazas
Amenazas b) Ataques
c) Vulnerabilidades
que pueden afectar la seguridad de una aplicación.
Este modelo sirve para dar forma al diseño de la aplicación, cumplir los
objetivos de seguridad del cliente y así reducir riesgos.
Existen 5 pasos esenciales para realizar el modelado de amenazas:
1. Definir requerimientos de seguridad
2. Crear un diagrama de aplicación
3. Identificar amenazas
4. Mitigar amenazas
5. Validar que las amenazas han sido mitigadas.
• El modelado de amenazas es una actividad
de diseño centrada en la seguridad y una
práctica fundamental en el proceso de
creación de tecnología confiable que permite
identificar y abordar fallas de diseño antes
Modelado de de su implementación en el código.
Amenazas • Genera valor en el mapeo de un sistema
para comprender y priorizar sus
debilidades.
• Las actividades posteriores, como el
análisis estático, las pruebas de seguridad y
la documentación del cliente, pueden guiarse
y centrarse en función del contexto
proporcionado por el modelado de
amenazas.
Hay varios componentes clave de
una estrategia de cifrado: Desarrollo de
una estrategia de
1. Definiciones de qué proteger.
encripción
2. Designación de los mecanismos que se
utilizarán para el cifrado.
3. Decidir sobre una solución de
gestión de llaves y certificados. El cifrado es el mecanismo más común para
4. Implementar teniendo en cuenta la proteger los datos de la divulgación o alteración
involuntarias, ya sea que los datos se almacenen
agilidad criptográfica. o transmitan.
Estandarizar la La mayoría de los productos y servicios requieren verificar qué usuario,
administración de servicio o componente lógico, está intentando realizar acciones y si
está autorizado para realizar la acción que está intentando invocar.
identidades y control Todas estas acciones deben ser auditables y registradas en el sistema de
de acceso control que se esté utilizando.
El estándar que una organización aplica a sus productos y
servicios debe incluir:
1. El mecanismo por el cual los usuarios (tanto los usuarios finales como los
administradores de la organización) autentican sus identidades.
2. El mecanismo o los mecanismos mediante los cuales un servicio o
componente lógico se autentica en otro, cómo se almacenan las credenciales y
cómo se actualizan de manera oportuna.
3. El mecanismo que autoriza las acciones de cada usuario.
Establecer
requerimientos de log y
prácticas de auditoría
En el caso de un incidente relacionado con la seguridad, es importante
poder reunir los detalles relevantes para determinar qué sucedió.
Los archivos de registro (logs) de seguridad, sistema y aplicaciones bien
diseñados brindan la capacidad de comprender el comportamiento de
una aplicación y cómo se ha utilizado en cualquier momento.
Son las fuentes de datos fundamentales que informan las alertas
automatizadas de los sistemas de gestión de eventos e información de
seguridad (SIEM).
Establecer
requerimientos de log y
prácticas de auditoría
La creación y el mantenimiento de estos registros El contenido de los archivos de registro debe considerar:
se basa en:
a) El grupo o grupos que necesitarán la información.
a) los requerimientos del negocio y del sistema b) No solo capturar la información crítica, sino
b) el modelo de amenazas también restringir la captura de información a solo
c) la disponibilidad de las funciones de creación y los datos necesarios.
mantenimiento de registros en el entorno de c) Identificar cuidadosamente qué información de seguridad
despliegue es relevante y debe registrarse.
d) Dónde se almacenarán los registros, durante cuánto
tiempo se conservarán y cómo se protegerán los registro