Actividad 6
DISEÑO DE SOFTWARE SEGURO
ACTIVIDAD 6
Mancilla Henry Steven
Ingeniero en sistemas
[Link]@[Link]
Universidad Saint Leo
Notas del autor
Mancilla Henry Steven,
Maestría en Ciberseguridad
Esta actividad ha sido financiada por los propios autores
La conexión asociada con esta actividad debe ser dirigido al Dr. Fernando Pech May
Universidad Saint Leo, 33701 County Road 52, St Leo, FL 33574, Estados Unidos.
Contacto: [Link]@[Link]
Actividad 6
INTRODUCCIÓN 3
DESARROLLO 4
Pregunta 1 ¿Cuál de las metodologías de desarrollo seguro sería la más recomendable para
desarrollar un sistema que demande un nivel de seguridad crítico? ¿Por qué? 4
Pregunta 2 Dentro de la arquitectura de seguridad definida para la aplicación, en la fase de
diseño se tienen en cuenta, entre otros, estos dos aspectos: el diseño de autorización y el
diseño de autenticación. Por favor, detalle qué componentes se evalúan en cada uno de
ellos. 4
Pregunta 3 En la fase de implementación se suelen hacer varios tipos de prueba del
software, uno de ellos es el fuzz testing. Describa cómo funciona esta técnica de pruebas y
cuál puede ser su aporte desde el punto de vista de seguridad. 5
Pregunta 4 En el ciclo de vida del desarrollo de software (SDLC) de Microsoft, ¿cuáles son la
primera y la última fase? Desde su punto de vista, ¿estas fases son necesarias o se pueden
obviar sin afectar la seguridad del software? 6
Pregunta 5 ¿Cuáles son las vistas del modelo CLASP (Comprehensive Lightweight
Application Security Process) y en cuál de ellas estarían incluidas tareas como la
identificación de una política de seguridad y la documentación de requisitos de seguridad? 7
Pregunta 6 ¿Cuál es el aporte, desde el punto de vista de la seguridad, de realizar pruebas
de estrés? 7
Pregunta 7 Independientemente del modelo de desarrollo seguro que adopte una
organización, ¿cuáles serían las principales ventajas de aplicar alguno de estos modelos en
una organización? 7
Pregunta 8 Describa las características más representativas de la metodología de modelado
de amenazas stride de Microsoft. 8
Pregunta 9 Mencione y explique brevemente tres de los indicadores de que probablemente
pueda ocurrir, o esté ocurriendo, un incidente de seguridad en una organización. 8
Pregunta 10 Describa en sus propias palabras la diferencia entre concientización,
capacitación y entrenamiento con foco en seguridad. Dé un ejemplo para cada una. 9
CONCLUSIÓN 10
REFERENCIAS 11
Actividad 6
INTRODUCCIÓN
En este trabajo se encontrará información acerca del fuzzing, en un mundo
cada vez más dependiente de la tecnología y el software, la seguridad cobra una
importancia fundamental. La creciente sofisticación de los ataques informáticos
exige nuevas formas de proteger nuestras aplicaciones y sistemas. Una de las
técnicas más efectivas para identificar vulnerabilidades y fortalecer la seguridad
es el fuzzing.
Actividad 6
DESARROLLO
Pregunta 1 ¿Cuál de las metodologías de desarrollo seguro sería
la más recomendable para desarrollar un sistema que demande
un nivel de seguridad crítico? ¿Por qué?
Desarrollo Seguro por Diseño (SSDLC)
El SSDLC se enfoca en integrar la seguridad desde la etapa de diseño, incorporando controles
de seguridad en los requisitos y la arquitectura del software. Siendo este uno delos modelos de
desarrollo mas seguros que existen.
Pregunta 2 Dentro de la arquitectura de seguridad definida para
la aplicación, en la fase de diseño se tienen en cuenta, entre
otros, estos dos aspectos: el diseño de autorización y el diseño
de autenticación. Por favor, detalle qué componentes se evalúan
en cada uno de ellos.
La autenticación es el proceso de demostrar que usted es quien dice ser al acceder a una
aplicación.
2 formas de mantener al usuario autenticado:
- Autenticación basada en sesión : cuando un usuario inicia sesión en un sitio web en un
navegador, el servidor crea una sesión para ese usuario y le asigna un ID de sesión. El
servidor almacena este ID de sesión como referencia y se envía de vuelta al usuario
para que lo almacene en una cookie en el navegador. Ahora, cada vez que el usuario
realice una solicitud, el navegador enviará el ID de sesión junto con la solicitud. Lo que
ayudará a autenticar la solicitud. Y, así, preservar la autenticación mientras el usuario
esté en el sitio.
- Autenticación basada en token : para esto, el servidor crea un token cifrado que se
envía al usuario y lo guarda únicamente el navegador, como cookies HttpOnly. Toda la
información requerida, como la información del usuario, los permisos y la caducidad del
token, están cifradas dentro del token. El token se envía junto con las llamadas al
servidor. El servidor simplemente descifra el token con la clave secreta y verifica al
usuario. Este token se actualiza a intervalos.
Actividad 6
La autorización es el proceso de definir y hacer cumplir políticas de acceso, es decir, lo que
puede hacer una vez que esté autenticado.
Las formas comunes de segmentar el acceso son:
- Control de acceso basado en roles (RBAC) : los usuarios se asignan a un determinado
grupo/rol que viene con permisos establecidos. Ejemplos: administrador, miembro,
propietario.
- Control de acceso basado en políticas (PBAC) : determina dinámicamente los privilegios
de acceso durante la autorización en función de políticas y reglas. Las políticas se
basan en roles de usuario, funciones laborales y requisitos organizacionales.
- Control de acceso basado en atributos (ABAC) : a los usuarios se les permite el acceso
según atributos como título, certificación, capacitación y/o factores ambientales como la
ubicación.
- Listas de control de acceso (ACL) : cada usuario o entidad tiene permisos individuales
que se pueden activar o desactivar, similar a instalar una nueva aplicación en su
teléfono y decidir qué permisos otorgar (servicios de ubicación, contactos, etc.)
Pregunta 3 En la fase de implementación se suelen hacer varios
tipos de prueba del software, uno de ellos es el fuzz testing.
Describa cómo funciona esta técnica de pruebas y cuál puede ser
su aporte desde el punto de vista de seguridad.
El fuzzing es una técnica de prueba de seguridad que consiste en enviar datos aleatorios,
manipulados o maliciosos a una aplicación o sistema con el objetivo de descubrir
vulnerabilidades. Básicamente, se trata de «alimentar» la aplicación con entradas inesperadas
y observar su comportamiento para detectar errores, fallos o condiciones inseguras.
El objetivo principal del fuzzing es identificar vulnerabilidades que podrían ser explotadas por
atacantes para comprometer la seguridad de un sistema. Al encontrar y corregir estas
vulnerabilidades, los desarrolladores pueden fortalecer sus aplicaciones y prevenir posibles
brechas de seguridad.
El proceso de fuzzing implica varios pasos, desde la generación de datos de prueba hasta el
análisis de los resultados obtenidos. A continuación, se presenta una descripción general de las
etapas principales:
1- Generación de datos de prueba. En esta etapa, se generan datos de prueba
aleatorios o se modifican datos existentes para crear entradas inesperadas. Estos datos
pueden incluir valores extremos, cadenas de texto largas, caracteres especiales, entre
Actividad 6
otros. El objetivo es explorar diferentes caminos dentro del código de la aplicación y
encontrar situaciones no previstas.
2- Envío de los datos de prueba. Una vez generados los datos de prueba, se envían a la
aplicación o sistema que se desea probar. Los datos se inyectan en puntos específicos
de la aplicación, como campos de entrada, archivos, protocolos de red, entre otros. Es
importante cubrir tantos puntos de entrada como sea posible para maximizar las
posibilidades de descubrir vulnerabilidades.
3- Monitoreo y análisis del comportamiento. Durante esta etapa, se monitorea el
comportamiento de la aplicación mientras procesa los datos de prueba. Se registran y
analizan los fallos, bloqueos, excepciones y cualquier otro comportamiento inesperado.
Esta información es fundamental para identificar las vulnerabilidades y entender cómo
se pueden explotar.
4- Reporte de resultados y corrección de vulnerabilidades. Una vez finalizada la fase
de fuzzing, se analizan los resultados obtenidos y se generan informes detallados sobre
las vulnerabilidades encontradas. Estos informes se entregan a los desarrolladores para
que puedan corregir las vulnerabilidades identificadas y mejorar la seguridad de la
aplicación.
Pregunta 4 En el ciclo de vida del desarrollo de software (SDLC)
de Microsoft, ¿cuáles son la primera y la última fase? Desde su
punto de vista, ¿estas fases son necesarias o se pueden obviar
sin afectar la seguridad del software?
La primera fase es:
Planificación. La fase de planificación incluye normalmente tareas como análisis de costos y
beneficios, programación, estimación de recursos y asignación. El equipo de desarrollo recopila
requisitos de varias partes interesadas, como clientes, expertos internos y externos, así como
directivos, para crear un documento de especificaciones con los requisitos del software.
Y la ultima es:
Mantenimiento. En la fase de mantenimiento, entre otras tareas, el equipo corrige errores,
resuelve problemas de los clientes y administra los cambios hechos en el software. Además, el
equipo supervisa el rendimiento general del sistema, la seguridad y la experiencia del usuario
para identificar nuevas maneras de mejorar el software existente.
Sin duda las dos son muy importantes y hacen parte de todo el ciclo, no es posible omitirlas o
quitarlas.
Actividad 6
Pregunta 5 ¿Cuáles son las vistas del modelo CLASP
(Comprehensive Lightweight Application Security Process) y en
cuál de ellas estarían incluidas tareas como la identificación de
una política de seguridad y la documentación de requisitos de
seguridad?
- Vista de evaluación de actividades
- Vista de Vulnerabilidades
Pregunta 6 ¿Cuál es el aporte, desde el punto de vista de la
seguridad, de realizar pruebas de estrés?
Las pruebas de estrés de software —también conocidas como pruebas de resistencia— son un
recurso utilizado durante la etapa de testing, con el objetivo de probar los límites de un sistema
y prever escenarios de riesgo ante cargas extremas.
Para ello los desarrolladores simulan el uso del producto informático mediante el envío de
peticiones constantes, más allá del parámetro normal que podrían atender en periodos
reducidos.
Si el sistema no se encuentra en condiciones óptimas responderá con errores o
comportamientos anormales, como fallos en el código o bloqueos de información. Los testers
deben comprobar que una vez identificada la falla el sistema sea capaz de recuperarse y
funcionar satisfactoriamente.
Esto se relaciona con la seguridad del software, porque cuando un software se bloquea por
muchas peticiones puede generar un estado de vulnerabilidad, que los ciberdelincuentes
pueden aprovechar y entrar a robar información o dañarla.
Pregunta 7 Independientemente del modelo de desarrollo seguro
que adopte una organización, ¿cuáles serían las principales
ventajas de aplicar alguno de estos modelos en una
organización?
La principal ventaja de adoptar un proceso de desarrollo seguro es la reducción general
del riesgo en una organización y el aumento de su confianza. Asimismo, se pueden
mencionar otras:
Actividad 6
- Introducir la seguridad en el proceso de desarrollo supone un enfoque proactivo que
resulta en un software más seguro, ya que, al haberse considerado la seguridad desde
un primer momento, permite detectar y solucionar tempranamente las fallas.
- La detección temprana de fallas trae aparejada una reducción de costos, ya que las
modificaciones, el tiempo y la complejidad de su solución son menores.
- También permite identificar causas y evitar que se repitan errores comunes de
seguridad, por lo que se ve reducida la probabilidad de vulnerabilidades en el producto
final.
- Incluir conceptos de seguridad en la etapa de diseño también puede ayudar a mitigar el
impacto de la explotación de alguna vulnerabilidad no detectada en el ciclo de
desarrollo.
- Genera conciencia de seguridad en los equipos involucrados en el ciclo de desarrollo.
Pregunta 8 Describa las características más representativas de la
metodología de modelado de amenazas stride de Microsoft.
STRIDE: esta metodología, desarrollada por Microsoft, es un dispositivo mnemotécnico para
identificar las amenazas a la seguridad."STRIDE" son las siglas en inglés para "Suplantación
de identidad, Manipulación, Repudio, Divulgación de información, Denegación de servicio y
Elevación de privilegios".("Repudio" se refiere en este caso a la incapacidad de verificar el
origen y la integridad de los datos).La idea es buscar estos seis tipos de amenazas específicos
en toda la arquitectura de una aplicación.
el acrónimo STRIDE describe seis categorías de amenazas para el software. Este acrónimo se
deriva de:
- Suplantación de identidad
- Amperamiento de T
- Repudiación
- Divulgación de información
- Denegación de servicio
- Elevación de privilegios
Pregunta 9 Mencione y explique brevemente tres de los
indicadores de que probablemente pueda ocurrir, o esté
ocurriendo, un incidente de seguridad en una organización.
En todas las organizaciones existen debilidades y/o vulnerabilidades que pueden ser
explotadas de manera intencionada o no intencionada y causar la pérdida de confidencialidad,
de integridad y/o de disponibilidad de la información.
Actividad 6
Algunos ejemplos de incidentes de seguridad:
- Filtración o revelación de información confidencial.
- Infección por malware.
- Acceso no autorizado a la información o los sistemas.
- Destrucción o corrupción de la información.
- Ataques de denegación de servicio (DoS o DDoS).
Pregunta 10 Describa en sus propias palabras la diferencia entre
concientización, capacitación y entrenamiento con foco en
seguridad. Dé un ejemplo para cada una.
Concientización: Cuando hablamos de “Concientización en Seguridad de la Información”, nos
referimos a un concepto mucho más amplio. El propósito de los programas de concientización
no es transmitir conocimientos prácticos, sino promover el cambio cultural entre sus
empleados, que puede extenderse incluso fuera del entorno empresarial, perpetuando la rutina
personal y familiar del empleado.
Capacitación: es la preparación de una persona para dotarla de conocimientos para ejecutar y
desarrollar tareas dentro del ámbito laboral específicos en seguridad
Entrenamiento: es de corto plazo. Orientado usualmente a que las personas desarrollen
destrezas y habilidades en ciberseguridad.
Actividad 6
CONCLUSIÓN
Como se apreció a lo largo del documento, el fuzzing es una técnica valiosa en el
ámbito de la seguridad de software. Mediante el envío de datos de prueba aleatorios o
manipulados, el fuzzing revela vulnerabilidades que podrían ser explotadas por atacantes.
Esto permite a los desarrolladores corregir los problemas y fortalecer la seguridad de las
aplicaciones y sistemas. Con sus beneficios en la detección temprana de vulnerabilidades
y la mejora de la estabilidad del software, el fuzzing se ha convertido en una herramienta
fundamental para proteger nuestros sistemas en un mundo cada vez más digitalizado.
Actividad 6
REFERENCIAS
Mario Micucci. (27 diciembre 2023). Metodologías de Desarrollo Seguro de Software:
Integración y Aplicaciones
[Link]
software-integracion-aplicaciones/
Sysadminok. (23 junio 2023). Qué es y para qué sirve el Fuzzing: Un Enfoque Integral a la
Seguridad de Software [Link]
sirve-el-fuzzing-un-enfoque-integral-a-la-seguridad-de-software/
Arunava. (5 mayo 2024). Diseño de sistemas funcionales de autenticación y autorización
[Link]