Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Modelado de Amenazas en
SDLC
Aprende a desarrollar aplicaciones seguras y a modelar
amenazas en el Ciclo de Vida del Desarrollo de Software
Empezar
D i ió g l
Descripción general
En este curso, aprenderás los principales modelos de desarrollo de software y cómo
modelar amenazas para abordar las vulnerabilidades existentes. Además, te
enseñaremos a analizar, explotar y solucionar falencias en el desarrollo de
aplicaciones desde el inicio de cualquier proyecto. Al finalizar el curso, serás capaz de
entender el ciclo de desarrollo seguro de aplicaciones, reconocer las amenazas y
vulnerabilidades, diseñar modelos de amenazas, desarrollar aplicaciones seguras y
evitar vulnerabilidades.
11 Prueba
Introducción al desarrollo
seguro y modelado de
amenazas
Por otro lado, el modelado de amenazas es una técnica estructurada y repetible que
permite identificar y evaluar los riesgos a los que estará expuesta una aplicación.
Consiste en analizar el sistema desde la perspectiva del atacante y determinar las
posibles vulnerabilidades y los impactos que podrían tener en la seguridad de la
aplicación.
1. Principio de mínimos privilegios: Este principio establece que los usuarios y componentes del
sistema deben tener únicamente los privilegios necesarios para llevar a cabo sus funciones.
De esta manera, se reducen las posibilidades de que un usuario malintencionado o una falla
en el sistema puedan comprometer la seguridad de la aplicación.
2. Principio de separación de responsabilidades: Este principio tiene como objetivo dividir las
diferentes funcionalidades del sistema en módulos independientes, de manera que cada uno
tenga un propósito específico y no se superpongan entre sí. Esto permite limitar el impacto
de posibles vulnerabilidades o fallos en un componente del sistema y facilita su corrección y
mantenimiento.
Los modelos de desarrollo de software son enfoques sistemáticos para llevar a cabo
el proceso de desarrollo de software de manera organizada y estructurada. Estos
modelos proporcionan un conjunto de reglas y directrices que guían a los
desarrolladores a través de todas las etapas del ciclo de vida del desarrollo de
software (SDLC) y les ayudan a crear aplicaciones de alta calidad y confiables.
Existen varios modelos de desarrollo de software, cada uno con sus propias
características y ventajas. A continuación, se describen algunos de los modelos más
comunes:
Modelo en Cascada
Modelo en Espiral
Modelo en V
Modelo Ágil
Estos son solo algunos ejemplos de modelos de desarrollo de software. Cada modelo
tiene sus propias ventajas y desafíos, y es importante elegir el modelo adecuado
según las necesidades del proyecto. La comprensión de estos modelos es
fundamental para abordar las principales vulnerabilidades y amenazas en el desarrollo
seguro de software.
Referencias:
Este material fue creado como parte del curso "Desarrollo Seguro y Modelado de
Amenazas en SDLC" dictado por Segu-Info.
1. Requerimientos
En esta etapa se analizan y documentan los requerimientos del cliente o usuario final.
Es importante entender las necesidades y expectativas del sistema a desarrollar, así
como los objetivos y funcionalidades que debe cumplir.
2. Diseño
3. Implementación
4. Pruebas
5. Despliegue
Una vez que el software ha pasado todas las pruebas satisfactoriamente, se procede
a su despliegue. Esta etapa puede incluir la instalación del software en los servidores
o dispositivos finales y la configuración necesaria para su correcto funcionamiento.
6. Mantenimiento
El mantenimiento del software es una etapa continua que se lleva a cabo después de
su despliegue. Durante esta etapa se realizan actualizaciones o mejoras, se corrigen
posibles errores o se implementan nuevas funcionalidades según las necesidades del
usuario.
En conclusión, las etapas del desarrollo del software son fundamentales para
garantizar la calidad y seguridad de un software. Cada etapa cumple una función
específica en el proceso de desarrollo y contribuye a la obtención de un producto final
exitoso.
05 Identificación de amenazas
Identificación de riesgos
Evaluación de riesgos
Una vez identificadas las amenazas, se procede a evaluar la importancia de cada una
de ellas. Para ello, se analiza la probabilidad de ocurrencia de cada amenaza y su
impacto en caso de que ocurra. También se tiene en cuenta la efectividad de los
controles existentes para mitigar los riesgos.
Mitigación de riesgos
En esta etapa, se definen y aplican medidas para reducir o eliminar los riesgos
identificados. Estas medidas pueden incluir el diseño e implementación de controles
de seguridad adicionales, la actualización de software, la corrección de
vulnerabilidades, entre otros.
Supervisión continua
Modelado de amenazas
Otra técnica utilizada para identificar amenazas es el modelado de amenazas.
Consiste en analizar y diagramar los diferentes componentes de una aplicación,
identificando las posibles amenazas que puedan afectar a cada uno de ellos.
ISAM (The Integral Secure Agile Methodology): Método que permite identificar y evaluar
amenazas en cada fase del ciclo de vida del desarrollo.
OWASP Development Guide: Guía desarrollada por la Open Web Application Security Project
(OWASP) que proporciona pautas y buenas prácticas para la seguridad en el desarrollo de
aplicaciones web.
El modelado de amenazas nos ayuda a comprender mejor los posibles riesgos a los
que está expuesta nuestra aplicación y a tomar decisiones informadas sobre la
implementación de controles de seguridad.
Modelado de amenazas
06 Modelado de amenazas
1. Gestión de riesgos según NIST SP 800-30: En esta etapa se lleva a cabo una evaluación
exhaustiva de todos los posibles riesgos y amenazas a los que se enfrentará la aplicación.
Se utilizan métodos y estándares reconocidos, como el NIST SP 800-30, para identificar,
analizar y valorar los riesgos.
2. Identificación de amenazas: En esta etapa se identifican las amenazas específicas a las que
estará expuesta la aplicación. Se realizan investigaciones sobre las amenazas conocidas y
se evalúa su probabilidad de ocurrencia y su impacto en la seguridad de la aplicación.
4. ISAM (The Integral Secure Agile Methodology): Esta técnica combina el desarrollo ágil de
software con la seguridad. Se enfoca en la incorporación de medidas de seguridad desde las
primeras etapas del desarrollo y promueve la colaboración entre los diferentes roles del
equipo de desarrollo.
5. OWASP Development Guide: OWASP (Open Web Application Security Project) es una
comunidad de expertos en seguridad de aplicaciones web. Su guía de desarrollo seguro
ofrece pautas y mejores prácticas para garantizar la seguridad de las aplicaciones desde el
inicio del ciclo de vida.
Nota: Este contenido es parte del curso "Desarrollo Seguro y Modelado de Amenazas
en SDLC" y está diseñado para desarrolladores, administradores de bases de datos,
líderes de proyecto, analistas de sistemas y personas vinculadas al análisis, diseño,
arquitectura y desarrollo de aplicaciones.
Diseño seguro: En esta etapa, se debe tener en cuenta la arquitectura segura del software,
definiendo los controles de seguridad que se implementarán. Además, es importante realizar
un modelado de amenazas para identificar los posibles riesgos y establecer medidas de
mitigación adecuadas.
Análisis y práctica de
desarrollo seguro
08 Análisis y práctica de desarrollo seguro
CMM y OSSTMM
Programación "defensiva"
Certificación de productos
Fuzzing
El fuzzing es una técnica de prueba de seguridad que consiste en enviar entradas
inesperadas o incoherentes a una aplicación para encontrar posibles vulnerabilidades.
En esta sección del curso, se examinará cómo se puede implementar el fuzzing como
parte de la estrategia de desarrollo seguro y cómo puede ayudar a identificar y
corregir vulnerabilidades en una aplicación.
Hashing y HMAC
09 Ejercicios Practicos
10 Resumen
Los principios del diseño de software seguro brindan a los desarrolladores las
bases fundamentales para crear aplicaciones seguras y protegidas contra
posibles ataques. Durante este tema, los participantes aprenderán los principios
y mejores prácticas para desarrollar software seguro desde el inicio del proyecto.
Las etapas del desarrollo del software son fundamentales para garantizar la
creación de aplicaciones seguras y libres de vulnerabilidades. En este tema, los
participantes aprenderán las distintas etapas del ciclo de vida del software y
cómo aplicar buenas prácticas de seguridad en cada una de ellas.
11 Prueba
Una técnica formal, estructurada y repetible que permite determinar y ponderar los riesgos y
amenazas a los que estará expuesta una aplicación.
Una técnica formal pero no estructurada que permite determinar y ponderar los riesgos y
amenazas a los que estará expuesta una aplicación.
Una técnica informal, sin estructura y no repetible que permite determinar y ponderar los riesgos y
amenazas a los que estará expuesta una aplicación.
Identificación de amenazas
Waterfall (Cascada)
Encryption
Eavesdropping
Authentication
Un modelo que enumera los tipos de amenazas a la seguridad de una aplicación: Spoofing,
Tampering, Repudiation, Info Disclosure, DoS, Elevation of Privilege
Capability Maturity Model, un modelo que describe la madurez y capacidad de una organización
para realizar el desarrollo seguro de software.
SQL Injection
Fuzzing
Review de código
Penetration Testing
Encryption
Buffer Overflow
Authentication
Creating backdoors
Certificación de productos
Entregar
Conclusión
Felicidades!
¡Felicitaciones por completar este curso! Has dado un paso importante para
desbloquear todo tu potencial. Completar este curso no se trata solo de adquirir
conocimientos; se trata de poner ese conocimiento en práctica y tener un impacto
positivo en el mundo que te rodea.