0% encontró este documento útil (0 votos)
30 vistas35 páginas

Tema 3

Cargado por

Jesús Macías R
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)
30 vistas35 páginas

Tema 3

Cargado por

Jesús Macías R
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

Tema 3

Desarrollo de Software Seguro

Tema 3. Seguridad en el ciclo


de vida del software en las
fases de análisis
Índice
Esquema

Ideas clave

3.1. Introducción y objetivos

3.2. La seguridad en el ciclo de vida del software

3.3. Casos de abuso

3.4. Modelado de ataques

3.5. Ingeniería de requisitos de seguridad

3.6. Referencias bibliográficas

A fondo

Implementación simplificada del proceso SDL

Modelos SDLC de última generación

Test
Esquema

Desarrollo de Software Seguro 3


Tema 3. Esquema
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

3.1. Introducción y objetivos

Actualmente, el aumento de los ataques al software vulnerable ha dejado patente la

insuficiencia de las protecciones a nivel de infraestructura. En este contexto, es

conveniente minimizar al máximo los ataques en la capa de aplicación y, por lo

tanto, el número de vulnerabilidades explotables.

El desarrollo de software seguro y confiable requiere de la adopción de un proceso

sistemático o disciplina que aborde la seguridad en cada una de las fases de su ciclo

de vida. Se deben integrar en él dos tipos de actividades de seguridad: la primera es

e l seguimiento de unos principios de diseño seguro (mínimo privilegio, por

ejemplo); y la segunda, la inclusión de una serie de buenas prácticas de seguridad

(especificación de requisitos de seguridad, casos de abuso, análisis de riesgo,

análisis de código, pruebas de penetración dinámicas, etc.). A este nuevo ciclo de

vida con prácticas de seguridad incluidas lo llamaremos S-SDLC.

Una de las principales ventajas de la adopción de un S-SDLC es el descubrimiento

de errores de codificación y debilidades de diseño en las etapas tempranas de su

desarrollo, lo que implica un importante ahorro de costes.

Figura 1. Ataques de la capa aplicación. Fuente: Hoglund y McGraw (2004).

Desarrollo de Software Seguro 4


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Normalmente, el modelo más propicio para el desarrollo de software en las

organizaciones suele ser una combinación de dos o más modelos de los ciclos de

vida (cascada, espiral, etc.); sin embargo, lo importante no es el modelo seguido,

sino la incorporación de buenas prácticas de seguridad en las diferentes fases de

este, así como unos hitos o puntos de control donde se verifiquen los entregables de

las mismas.

A lo largo del tema se presentará un conjunto mínimo de prácticas de seguridad

que deberían ser una parte integral del S-SDLC en la fase de análisis y requisitos.

Entre las razones principales para añadir prácticas de seguridad en el SDLC

destacan:

▸ Mayor probabilidad de capturar adecuadamente los requisitos, tomar decisiones de

diseño correctas y no cometer errores involuntarios de codificación.

▸ Dificultad de los agentes maliciosos para explotar vulnerabilidades y debilidades del

software, pues el resultante de un ciclo de vida S-SDLC será más robusto en su


entorno de ejecución y en su interacción con entidades externas.

Los objetivos del presente tema son los siguientes:

▸ Conocer y comprender las buenas prácticas de seguridad que se deben incluir en un

S-SDLC en las fases de requisitos.

▸ Profundizar en el estudio de una de las principales prácticas de seguridad como es

el análisis de riesgo de casos de abuso.

▸ Familiarizar al alumno con prácticas de seguridad como el modelado de ataques y la

ingeniería de requisitos de seguridad.

Desarrollo de Software Seguro 5


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

3.2. La seguridad en el ciclo de vida del software

La seguridad del software es algo más que la eliminación de las vulnerabilidades y

la realización de pruebas de penetración. Un aspecto importante es la adopción por

los gerentes de un enfoque sistémico que incorpore los principios de diseño y unas

buenas prácticas de seguridad del software touchpoint en su ciclo de vida de

desarrollo. Su objetivo es producir software más seguro y confiable, así como

poder verificar su seguridad. A este nuevo ciclo de vida lo denominaremos ciclo de

vida del software seguro o S-SDLC.

No existe una metodología de ingeniería de seguridad de software que haya probado

unos mejores resultados que otras; todas se basan en la inclusión de prácticas de

seguridad, fundamentalmente. Por lo tanto, no importa cuál es el modelo de ciclo de

vida seguido, sino que la seguridad sea considerada desde las primeras etapas del

ciclo de vida del software.

Figura 2. Mejores prácticas de seguridad del software en el SDLC. Fuente: elaboración propia.

La figura anterior propone un ciclo de vida de desarrollo de software SDLC en


cascada, basado en el modelo de McGraw (2005). Sería similar también para otro

tipo, como el iterativo, donde se especifican las actividades y prácticas de seguridad

Desarrollo de Software Seguro 6


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

a efectuar en cada fase de este. A continuación, se enumeran esas actividades o

mejores prácticas de seguridad del software:

▸ Casos de abuso.

▸ Modelado de ataques.

▸ Ingeniería de requisitos de seguridad.

▸ Modelado de amenazas.

▸ Análisis de riesgo arquitectónico.

▸ Patrones de diseño.

▸ Pruebas de seguridad basadas en riesgo.

▸ Revisión de código.

▸ Pruebas de penetración.

▸ Operaciones de seguridad.

▸ Revisión externa.

En la siguiente tabla se representan las prácticas de seguridad y su relación en cada

una de las fases donde son aplicables:

Desarrollo de Software Seguro 7


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Tabla 1. Relación entre las prácticas de seguridad y las fases del ciclo de vida. Fuente: elaboración propia.

En los siguientes apartados de este tema se desarrollarán las distintas prácticas de


seguridad propuestas para el ciclo de vida.

Desarrollo de Software Seguro 8


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

3.3. Casos de abuso

L o s diagramas de casos de uso constituyen unas buenas prácticas para la

obtención de los requisitos funcionales de una aplicación; sin embargo, para la

obtención de requisitos de seguridad no lo son, sobre todo los no funcionales o

requisitos negativos referidos a actividades que no debería realizar el sistema.

Para solucionar lo anterior, se ha creado un tipo especializado de casos de uso que

se utiliza para analizar y especificar las amenazas de seguridad. Yuan y sus

colaboradores (2015) lo definen como:

«Un caso de abuso es la inversa de un caso de uso, es decir, una función que el sistema

no debe permitir o una secuencia completa de acciones que resulta en una pérdida para

la organización» (Yuan et al., 2015).

Figura 3. Casos de abuso. Fuente: elaboración propia.

Los casos de abuso, o casos de mal uso, son un instrumento que puede ayudar a

pensar de la misma forma que lo hacen los atacantes, más allá de los aspectos

normativos y funcionales y estudiando los eventos negativos o inesperados. Los

profesionales de seguridad de software entienden mejor cómo crear software

seguro, pues obtienen una mejor comprensión de las áreas de riesgo del sistema a

través de:

Desarrollo de Software Seguro 9


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Identificación de los objetivos de seguridad que debe cumplir el software.

▸ Identificación de las amenazas de seguridad a ser mitigadas por el software.

▸ Identificación de los puntos en el software susceptibles de ser atacados.

▸ Obtención de las restricciones o requisitos no funcionales de seguridad (requisitos

negativos), necesarios para alcanzar los objetivos de seguridad.

▸ Obtención de los requisitos de seguridad funcionales (requisitos positivos) de los

mecanismos que garanticen que el software cumple con los objetivos de seguridad.

Los casos de abuso constituyen un excelente medio de análisis de las

amenazas que debe afrontar el software. Son apropiados para el

análisis y la especificación de restricciones o requisitos negativos, ya

que se basan en el uso indebido del sistema. Establecen la base para

otros casos de uso de seguridad que proporcionan los medios para

contrarrestar o mitigar las amenazas capturadas en los mismos y una

manera altamente reutilizable de organizar, analizar y especificar sus

requisitos de seguridad.

Los casos de abuso describen lo que el software no debe hacer en respuesta al uso
incorrecto o malintencionado de este por un agente malicioso. Para cada caso de

uso funcional, el desarrollador deberá explorar las formas en que esa función podría

ser deliberadamente mal utilizada. También tiene que identificar todas las posibles

relaciones entre casos de uso de seguridad y casos abuso, con el fin de especificar

restricciones y requisitos de seguridad para evitar un mal uso o abuso de las

funcionalidades del software.

En la siguiente figura se muestra la relación entre el caso de uso de seguridad y el

de abuso asociado:

Desarrollo de Software Seguro 10


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 4. Relación entre el caso de uso de seguridad y el de abuso asociado. Fuente: Donald (2003).

En la siguiente tabla se resumen las diferencias entre los casos de uso de seguridad

y los casos de abuso:

Tabla 2. Diferencias entre los casos de uso de seguridad y los casos de abuso. Fuente: elaboración propia

a partir de Donald (2003).

Caso de uso de seguridad y caso de abuso

A continuación, presentamos un ejemplo de un diagrama de casos de uso de

seguridad y sus casos de abuso asociados en su versión gráfica. La siguiente figura

(Sindre y Opdahl, 2001) muestra un caso de abuso en un ejemplo de comercio

electrónico que presenta varias relaciones:

Desarrollo de Software Seguro 11


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Relación caso de abuso: uso de seguridad, «incluye» y «extiende».

▸ Relación caso de uso: abuso, «previene» y «detecta».

Los casos de uso resultantes de especificar los requisitos de seguridad protegen al

cajero automático y a sus usuarios de las amenazas potencialmente realizables por

un cibercriminal.

Figura 5. Ejemplo de caso de uso de seguridad y caso de abuso. Fuente: Sindre y Opdahl (2001).

La siguiente tabla muestra un ejemplo de especificación del caso de abuso «Obtener

contraseña» del diagrama de casos de uso y abuso de la figura anterior:

Desarrollo de Software Seguro 12


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Tabla 3. Especificación de caso de abuso «Obtener contraseña». Fuente: elaboración propia.

En el siguiente vídeo, Casos de abuso, puedes ver un resumen de todo lo tratado en

este epígrafe:

Casos de abuso

Desarrollo de Software Seguro 13


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Accede al vídeo:
https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=97c8c78c-2eae-

4534-8c46-b17f0116c016

Desarrollo de Software Seguro 14


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

3.4. Modelado de ataques

El principal objetivo de la seguridad del software es el de mantener sus

propiedades de seguridad frente a los ataques realizados por personal malicioso

sobre sus componentes y reducir al mínimo posible sus vulnerabilidades explotables.

Para conseguir que el desarrollo de una aplicación posea las propiedades y los

principios de diseño del software seguro, se necesita que el personal de diseño y

desarrollo genere dos perspectivas:

Figura 6. Perspectivas de modelado. Fuente: elaboración propia.

La perspectiva del atacante se suele modelar de las siguientes dos formas:

▸ Patrones de ataque.

▸ Árboles de ataque.

Figura 7. Modelado de ataques. Fuente: elaboración propia.

Desarrollo de Software Seguro 15


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

El uso combinado de patrones de ataque y de árboles de ataque captura la

probabilidad de cómo los ataques se pueden combinar y secuenciar, lo que

proporciona una serie de datos que nos permiten ayudar a diseñar, en el software,

una serie de respuestas encaminadas a mitigarlos.

Patrones de ataque

Un ataque aprovecha una vulnerabilidad de una aplicación mediante un exploit para

obtener un beneficio del sistema, como escalada de privilegios, robo y modificación

de datos, modificaciones del funcionamiento, denegación de servicio, etc.

Un patrón de ataque se pude definir como:

Mecanismo o medio para capturar y representar la perspectiva y el

conocimiento del ciberatacante con el suficiente detalle acerca de cómo

los ataques llevan a cabo los métodos más frecuentes de explotación

(exploit) y las técnicas usadas para comprometer el software.

En definitiva, constituyen una clasificación de los ataques y u n a representación

estructurada del pensamiento del atacante para que el equipo de diseño y

desarrollo obtenga el conocimiento y los pasos necesarios a realizar con el fin de

mitigar con mayor probabilidad las acciones de los ciberatacantes, reducir su impacto

y seleccionar las políticas de seguridad más convenientes. Derivan del concepto de

patrones de diseño, aplicado en un contexto más destructivo que constructivo, y

están generados a partir de un análisis en profundidad de determinados ejemplos de

exploits del mundo real.

Un catálogo de patrones de ataques, que proporciona un conjunto de definiciones

comunes, una taxonomía de clasificación, un esquema de patrones de ataque y un


conjunto de ellos reales, lo constituye la iniciativa del MITRE Common Attack

Desarrollo de Software Seguro 16


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Pattern Enumeration and Classification (CAPEC). Actualmente, incluye 519

patrones reales de ataque.

Accede al catálogo a través del aula virtual o desde la siguiente dirección web:

http://capec.mitre.org

Dependiendo del nivel de detalle que describe y su nivel de abstracción, los patrones

de ataque constituyen un recurso que proporciona valor al conjunto del SDLC, dado

que tiene diferentes utilidades en cada una de sus fases.

En la siguiente tabla se muestra un resumen de los usos de los patrones de ataques

en las diferentes fases del SDLC:

Tabla 4. Aplicación de patrones de ataque a las diferentes fases del SDLC. Fuente: elaboración propia.

Desarrollo de Software Seguro 17


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

U n patrón de ataque, como mínimo, debe describir ampliamente el incidente, las

habilidades y los recursos necesarios para ejecutarlo con éxito y en qué contexto es

aplicable y proporcionar información suficiente para permitir a los defensores evitar o

mitigar eficazmente las acciones del atacante.

En la tabla siguiente se muestran los ítems de información de los que consta un

patrón de ataque obtenido de CAPEC:

Tabla 5. Alcance de información de un patrón de ataque. Fuente: elaboración propia.

Desarrollo de Software Seguro 18


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Árboles de ataque

Un árbol de ataque se puede definir como un método sistemático para

caracterizar la seguridad de un sistema, basado en la combinación y las

dependencias de las vulnerabilidades de este, que un atacante puede

aprovechar para comprometerlo.

En un árbol de ataque, el objetivo del atacante se coloca en la parte superior del

árbol. Las posibles alternativas de ataque se documentan en los diferentes recorridos

del árbol por los nodos de nivel inferior, que contienen objetivos intermedios, hasta

llegar al nivel inferior, que contiene los diferentes métodos o técnicas de ataque.

Cada camino a través de un árbol de ataque representa un tipo de ataque único.

Para cada alternativa se puede añadir recursivamente otras precursoras que

alcancen diversos objetivos parciales que, en conjunto, logran el objetivo principal del

atacante.

Mediante el examen de diferentes ramas del árbol de ataque, el analista puede

identificar todas las posibles técnicas o métodos que podrían ser utilizados para

comprometer la seguridad del sistema. Básicamente:

▸ Captura los pasos realizados en ataques con éxito.

▸ Captura métodos generales y específicos del sistema de ataque, propiedades del

sistema y otras condiciones previas que lo hacen posible.

▸ Se enfoca en las causas de las vulnerabilidades, pero no identifica las

contramedidas.

▸ Representa de forma gráfica y textual directrices de codificación segura y patrones

de seguridad.

Desarrollo de Software Seguro 19


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

La representación de la estructura de un árbol de ataque se realiza conforme a los

dos siguientes tipos:

▸ Textual: sigue una estructura de esquema numérico. El nodo raíz, o la meta, es

representada en el primer nivel sin sangría y cada objetivo de nivel inferior se


enumera con sangría de una unidad por nivel de descomposición:

Figura 8. Estructura textual de un árbol de ataque. Fuente: elaboración propia.

▸ Gráfica o semántica: se construye, generalmente, con el nodo raíz, o la meta, en la

parte superior. Al descender por las ramas del árbol, se obtienen subobjetivos hasta
que se llega al nivel inferior, donde están los métodos de ataque. Un nodo se
descompone como:

Desarrollo de Software Seguro 20


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 9. Representación gráfica o semántica de la estructura de un árbol de ataque. Fuente: elaboración

propia.

Figura 10. Vista conceptual de un árbol de ataque. Fuente: elaboración propia a partir de Redwine et al.

(2006).

Desarrollo de Software Seguro 21


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

3.5. Ingeniería de requisitos de seguridad

Gran parte de las vulnerabilidades y debilidades del software tiene su

origen en unos requisitos inadecuados, inexactos e incompletos,

principalmente debido a la falta o la debilidad de la especificación de

estos, que no determinan las funciones, restricciones y propiedades no

funcionales del software que hacen que este sea previsible, confiable y

resistente.

Los defectos en los requisitos cuestan de diez a doscientas veces más de corregir
durante la ejecución que si se detectan durante su especificación. Además, es

difícil y costoso mejorar significativamente la seguridad de una aplicación después de

que esté en su entorno de producción.

La fase de ingeniería de requisitos cubre todas las actividades y tareas que deben

realizarse antes de iniciar el diseño. Su principal resultado es la especificación de los

requisitos que definen los aspectos funcionales y no funcionales del software.

Figura 11. Ingeniería de requisitos. Fuente: elaboración propia.

Desarrollo de Software Seguro 22


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Los requisitos de seguridad deben ser considerados simultáneamente

junto con los demás requisitos, incluidos los relativos a funcionalidad,

rendimiento y facilidad de uso. Ya que los requisitos de seguridad, a

menudo, entran en conflicto con ellos, se hace necesario, por lo tanto, la

integración satisfactoria de la ingeniería de requisitos de seguridad con

la ingeniería de requisitos en su conjunto.

En la siguiente figura se muestra un alcance completo de los requisitos de seguridad

de una aplicación:

Figura 12. Requisitos de seguridad. Fuente: elaboración propia.

Desarrollo de Software Seguro 23


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Requisitos servicios de seguridad (funcionales o positivos). Incluyen la

especificación de funciones que implementan una política de seguridad, como


control de acceso, autenticación, autorización, cifrado y gestión de claves. Deben

especificar:

• Propiedades que el software debe exhibir, por ejemplo: el software debe tener un
comportamiento correcto y predecible y disponer de capacidades de recuperación
frente a ciberataques.

• Nivel requerido de seguridad y salvaguardas de riesgo de las funciones de


seguridad.

▸ Requisitos de software seguro (no funcionales o negativos). Requisitos que

afectan directamente a la probabilidad de que el software sea seguro. Estos


abarcan, principalmente, los no funcionales, los que garanticen que el sistema
seguirá siendo confiable incluso cuando esa confianza se vea amenazada.

▸ Operacionales. Mas enfocados a los controles y normas que rigen los procesos de

desarrollo, implementación y operación del software.

Es fundamental que los requisitos de seguridad del software sean:

▸ Completos. Una especificación de requisitos puede considerarse completa solo

cuando es suficiente para distinguir entre un comportamiento deseado y uno no


deseado, como puede ser el proveniente de entradas y estímulos externos previstos

e imprevistos no solo durante el funcionamiento normal, sino también cuando el


software o cualquiera de sus recursos presenten fallos parciales o totales y, sobre
todo, cuando el software esté bajo un ciberataque.

▸ Precisos. El requisito debe ser único, breve y conciso. Cada palabra extra es una

invitación para introducir defectos.

▸ Coherentes. Cada requisito debe ser comprensible, claro y tener solamente una

interpretación.

Desarrollo de Software Seguro 24


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Trazables. Esto es necesario para asegurar que los requisitos del software no se

pierden en las siguientes fases del diseño o implementación. Es este sentido, el


establecimiento de una trazabilidad entre los artefactos del software y el modelado
de las amenazas, ataques y vulnerabilidades forman la base de la definición de los
requisitos de seguridad del software.

▸ Verificables. Los requisitos de seguridad deben permitir identificar requisitos tanto

de acciones concretas y verificables como de no verificables de requisitos negativos


no funcionales.

Uno de los retos más importantes de la ingeniería de requisitos de seguridad es la

identificación o captura de requisitos de seguridad negativos, es decir, los

requisitos de restricciones en funcionalidades debidos a seguridad y los requisitos no

funcionales de seguridad. Como ejemplo, los provenientes de propiedades de

software o directrices o normas de desarrollo de software.

Los requisitos negativos existen porque hay ciertas funcionalidades del software que
no se deben permitir, pues pueden inducir un estado de inseguridad que le hace

vulnerable, por lo que puede llegar a ser comprometido mediante un exploit. Por

ejemplo:

REQ-1. El software no debe utilizar datos de entrada que no se hayan

validado.

Los requerimientos no funcionales de seguridad deben especificar:

▸ Propiedades que el software debe exhibir, por ejemplo: el software debe tener un

comportamiento correcto y predecible y disponer de capacidades de recuperación


frente a ciberataques.

▸ Nivel requerido de seguridad y salvaguardas de riesgo de las funciones de

seguridad.

Desarrollo de Software Seguro 25


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Los controles y normas que rigen los procesos de desarrollo, implementación y

operación del software.

Uno de los problemas típicos relacionados con la ingeniería de software es el

análisis de requisitos. O bien no se realiza en absoluto (los requisitos identificados

se especifican directamente sin ningún análisis o modelado) o se limita a los

requisitos funcionales, haciendo caso omiso de las exigencias de calidad y otras

limitaciones, como la arquitectura, el diseño, la implementación y las pruebas.

Con relación a lo anterior, es de vital importancia que los requisitos de seguridad

funcionales y no funcionales de los componentes COTS y de software libre

sean analizados, ya que a menudo no alcanzan el nivel de fiabilidad, confiabilidad y


recuperación requeridos.

En teoría, un requisito surge cuando se identifica una necesidad. En la práctica,

otros factores son los que llevan a su detección, como la necesidad de reemplazar

una capacidad cuando un equipamiento obsoleto alcanza su fecha de caducidad,

cambios en la normativa técnica, cambios en la política de seguridad de la

organización que requieren una nueva capacidad, avances en la tecnología que

ponen al alcance nuevas capacidades y modificaciones en el entorno operacional.

Las fuentes más comunes de los requisitos de seguridad para software son:

▸ Política de seguridad de la organización.

▸ Normativa de obligado cumplimiento durante el desarrollo, la implantación y la

operación del software.

▸ Casos de abuso.

▸ Análisis de los modelos de ataque y análisis de riesgo realizado.

▸ Implicaciones de seguridad de la especificación funcional, en cuanto a posibles

vulnerabilidades estimadas de los modelos de ataque y operación de una manera

Desarrollo de Software Seguro 26


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

que no comprometa cualquier parte del software o cualquier otro programa externo
con los que interactúa.

▸ Análisis de la amenaza: a partir de las características de la amenaza de la que surge

la necesidad de la capacidad o del sistema se pueden deducir requisitos.

▸ Avances en investigación y nuevas tecnologías que pueden aportar nuevas

soluciones e ideas que mejoren los procesos del sistema.

▸ Reuniones de grupos de usuarios, que pueden poner en común sus necesidades y

problemas, proponer nuevos requisitos o modificar los ya existentes.

▸ Vulnerabilidades conocidas en los componentes COTS y tecnologías de software

libre.

▸ Requisitos de funciones de seguridad en términos de fiabilidad, confiabilidad y

robustez.

Un modelo útil simplificado de una aplicación para la especificación y análisis de

requisitos es el representado en la figura siguiente, en el que de forma general se

incluyen cinco componentes que contienen todos los programas:

Figura 13. Modelo de aplicación para la especificación y análisis de requisitos. Fuente: elaboración propia.

▸ Interfaz de entrada.

▸ Interfaz de salida.

▸ Datos internos.

Desarrollo de Software Seguro 27


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Datos críticos de seguridad, como claves criptográficas, datos relacionados con

privilegios y otros datos críticos.

▸ Algoritmos: lógica interna del programa, que procesa los datos internos.

Desde el punto de vista de seguridad de la aplicación, es necesario proteger cada

uno de los cinco componentes de los ciberataques. En este sentido, disponer de

escenarios de operación y uso puede ser de gran ayuda para la comprensión de las

necesidades de seguridad, las capacidades de respuesta a amenazas y una posible

estimación de los daños, así como otros requisitos de calidad como el rendimiento.

Puedes consultar el siguiente vídeo, Ingeniería de requisitos de seguridad, para ver

ejemplos de lo explicado:

Ingeniería de requisitos de seguridad

Accede al vídeo:
https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=401a29d1-60cd-

480b-b1cc-b17f011b1992

Desarrollo de Software Seguro 28


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

3.6. Referencias bibliográficas

Donald, G. (2003). Security use cases. Journal of Object Technology, 2(2), pp. 53-64.
https://www.jot.fm/issues/issue_2003_05/column6/

Hoglund, G. y McGraw, G. (2004). Exploiting software: How to break code. Addison-

Wesley Software Security Series.

McGraw, G. (2005). Software security: Building security in. Addison Wesley

Professional.

Redwine, S. T. Bishop, M., McGraw, G. et al. (2006). Workshop on secure software

engineering education & training. En Proceedings. 19th Conference on Software

Engineering Education and Training. CSEE&T.

https://ieeexplore.ieee.org/document/1617355

Sindre, G. y Opdahl, A. L. (2001). Capturing security requirements through misuse

c a s e s . Proceedings of the 14th Norsk Information Conference (NIK2001).

https://www.se.rit.edu/~se555/Reading%20Materials/Capturing%20Security%20Requ

irements%20through%20Misuse%20Cases.pdf

Yuan, X., Borkor, E., Williams, I. y Yu, H. (2015). Developing abuse cases based on

threat modeling and attack patterns. Journal of Software, 10, pp. 491-498.

https://www.jsoftware.us/vol10/41-E024.pdf

Desarrollo de Software Seguro 29


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
A fondo

Implementación simplificada del proceso SDL

Microsoft (2010). Implementación simplificada del proceso SDL de Microsoft.


http://www.microsoft.com/en-us/download/details.aspx?id=12379

Este documento describe los conceptos básicos del Microsoft Security Development

Lifecycle (SDL) y las actividades de seguridad individuales en cada una de sus fases.

Desarrollo de Software Seguro 30


Tema 3. A fondo
© Universidad Internacional de La Rioja (UNIR)
A fondo

Modelos SDLC de última generación

Secappdev.org (2017, marzo 10). Secure development lifecycles (SDLC):

Introduction and process models. Bart De Win [Vídeo]. YouTube.

https://www.youtube.com/watch?v=L-gL1YQUrwg

En este vídeo se expone una visión general de los modelos SDLC de última

generación con el fin de discutir sus fundamentos y piedras angulares, lo que ayuda

a comprender su alcance y diferentes conceptos. También se desarrolla la

perspectiva de los modelos de cascada y de desarrollo ágil.

Secure development lifecycles (SDLC): Introduction and process models

Accede al vídeo:

https://www.youtube.com/embed/L-gL1YQUrwg?si=Ryldo2g7EQ3IJrlQ

Desarrollo de Software Seguro 31


Tema 3. A fondo
© Universidad Internacional de La Rioja (UNIR)
Test

1. Indica la diferencia entre los casos de uso de seguridad y los casos de abuso.

A. El caso de abuso analiza y especifica las amenazas a la seguridad,

mientras que el caso de uso de seguridad analiza y especifica los requisitos

de seguridad.

B. El criterio de éxito de un caso de abuso y un caso de uso de seguridad es

el éxito del atacante.

C. El caso de uso de seguridad es conducido por el análisis de

vulnerabilidades de activos y amenazas y el caso de abuso por los casos de

abuso de seguridad.

D. El caso de abuso y el caso de uso de seguridad son usados por el equipo

de seguridad.

2. Los patrones de ataque en la fase de diseño y arquitectura:

A. Ayudan a definir el comportamiento del sistema para prevenir o reaccionar

ante otros ataques.

B. Especifican debilidades no aprovechadas por los ataques, orientando qué

técnicas o prácticas de seguridad de desarrollo evitan estas deficiencias.

C. Proporcionan el contexto de las amenazas al que el software se va a

enfrentar.

D. Facilitan ejemplos de ataques que no aprovechan las vulnerabilidades de

la arquitectura elegida.

3. Respecto a los casos de uso de seguridad:

A. Analizan y especifican los requisitos de seguridad funcionales.


B. Analizan y especifican las amenazas a la seguridad.

C. Realizan el análisis de vulnerabilidades de activos y amenazas.

D. Llevan a cabo el análisis forense de las actividades maliciosas.

Desarrollo de Software Seguro 32


Tema 3. Test
© Universidad Internacional de La Rioja (UNIR)
Test

4. ¿Qué no incluye la ingeniería de requisitos de seguridad?

A. Requisitos de software seguro: requisitos que afectan directamente a la

probabilidad de que el software sea seguro.

B. Requisitos de servicios de seguridad.

C. Requerimientos no funcionales de seguridad, que deben especificar

propiedades que el software debe exhibir.

D. Requerimientos no funcionales de seguridad, que deben especificar los

controles y normas que rigen los procesos de desarrollo, implementación y

operación del software.

5. Señala la respuesta incorrecta. Los requisitos de los servicios de seguridad

deben especificar:

A. Propiedades que el software debe exhibir.

B. Nivel requerido de seguridad y salvaguardas de riesgo de las funciones de

seguridad.

C. Los controles y normas que rigen los procesos de desarrollo,

implementación y operación del software.

D. La reducción o eliminación de las vulnerabilidades del software, como

validación de entradas, comprobación de límites de búfer, ejecución de

entornos aislados… El análisis de riesgo arquitectónico implica el desarrollo

de los tres siguientes pasos básicos: análisis de ambigüedad, análisis de

resistencia al ataque y análisis de debilidad.

Desarrollo de Software Seguro 33


Tema 3. Test
© Universidad Internacional de La Rioja (UNIR)
Test

6. ¿Cuál de las siguientes respuestas es una de las perspectivas que el equipo de

desarrollo tiene que adoptar a la hora de diseñar unas pruebas de seguridad

basadas en el riesgo?

A. Perspectiva de gerencia.

B. Perspectiva del atacante.

C. Perspectiva del usuario.

D. Perspectiva del analista.

7. Indica la utilidad de los patrones de ataque en la etapa de especificación de

requisitos.

A. Proporciona ejemplos de ataques que aprovechan las vulnerabilidades de

la arquitectura elegida.

B. Pueden ser utilizados para orientar las pruebas de seguridad del software

en un contexto práctico y realista, identificando debilidades concretas con el

fin de generar casos de prueba para cada componente.

C. Permiten la selección de políticas de seguridad y configuraciones acordes

a las amenazas obtenidas de los patrones de ataque.

D. Ayudan a definir el comportamiento del sistema para prevenir o reaccionar

ante un tipo específico de ataque probable.

8. Un método sistemático para caracterizar la seguridad de un sistema, basado en

la combinación y las dependencias de las vulnerabilidades de este, que un atacante


puede aprovechar para comprometerlo, se denomina:

A. Método de ataque.

B. Patrón de ataque.

C. Árbol de ataque.

D. Modelo de ataque.

Desarrollo de Software Seguro 34


Tema 3. Test
© Universidad Internacional de La Rioja (UNIR)
Test

9. Señala la respuesta incorrecta sobre los casos de abuso.

A. Los casos de abuso constituyen unas buenas prácticas para la obtención

de los requisitos funcionales de una aplicación, referidos a actividades que

debería realizar el sistema.

B. Un caso de abuso es la inversa de un caso de uso, es decir, una función

que el sistema no debe permitir o una secuencia completa de acciones que

resulta en una pérdida para la organización.

C. Los casos de abuso, o casos de mal uso, son un instrumento que puede

ayudar a pensar de la misma forma en que lo hacen los atacantes.

D. Establecen la base para otros casos de uso de seguridad que proporcionan

los medios para contrarrestar o mitigar las amenazas capturadas en los

mismos y una manera altamente reutilizable de organizar, analizar y

especificar los requisitos de seguridad.

10. Indica en qué fase del ciclo de vida de desarrollo del software es aplicable el

modelado de ataque:

A. Especificación de requisitos.

B. Diseño del sistema.

C. Codificación.

D. Todas las anteriores.

Desarrollo de Software Seguro 35


Tema 3. Test
© Universidad Internacional de La Rioja (UNIR)

También podría gustarte