Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 1. El Problema de La Seguridad en El Software
Tema 1. El Problema de La Seguridad en El Software
Seguridad en el Software
El problema de la
seguridad en el software
Índice
Esquema 3
Ideas clave 4
1.1. Introducción y objetivos 4
1.2. Introducción al problema de la seguridad en el
software 4
1.3. Vulnerabilidades y su clasificación 12
1.4. Propiedades software seguro 21
© Universidad Internacional de La Rioja (UNIR)
A fondo 58
Test 61
© Universidad Internacional de La Rioja (UNIR)
Introducción al problema de la
seguridad en el software
Disponibilidad
Mínimo privilegio
Gestión de Estándares de calidad y
Separación privilegios
vulnerabilidades seguridad del software
Complementarias: Separación dominios
Fiabilidad
Autenticación
Separación código,
Clasificación de las Trazabilidad entorno ejecución
vulnerabilidades Robustez inseguro, registros
Resiliencia eventos seguridad
Tolerancia
Fallar de forma segura,
Escáneres de diseño SW resistente,
vulnerabilidades seguridad por
oscuridad y defecto
Tema 1. Esquema
Seguridad en el Software
Esquema
3
Ideas clave
Actualmente las tecnologías de seguridad red pueden ayudar a aliviar y mitigar los
ciberataques, pero no resuelven el problema de seguridad real, ya que una vez que
el ciberatacante consigue vencer esas defensas, por ejemplo, mediante ingeniería
social, y comprometer una máquina del interior, a través de esta podrá atacar las
demás empezando por las más vulnerables. Se hace necesario, por tanto, disponer
de software seguro que funcione en un entorno agresivo y malicioso.
el software
Hoy en día, los ataques cibernéticos son cada vez más frecuentes, organizados y
costosos en el daño que infligen a las administraciones públicas, empresas privadas,
redes de transporte, redes de suministro y otras infraestructuras críticas desde la energía
Seguridad en el Software
4
Tema 1. Ideas clave
a las finanzas, hasta el punto de poder llegar a ser una amenaza a la prosperidad, la
seguridad y la estabilidad de un país.
La sociedad está cada vez más vinculada al ciberespacio, un elemento importante del
mismo lo constituye el software o las aplicaciones que proporcionan los servicios,
utilidades y funcionalidades.
Seguridad en el Software
5
Tema 1. Ideas clave
La sociedad está cada vez más vinculada al ciberespacio, un elemento importante del
mismo lo constituye el software o las aplicaciones que proporcionan los servicios,
utilidades y funcionalidades. Sin embargo, estas aplicaciones presentan defectos,
debilidades de diseño o configuraciones inseguras que originan vulnerabilidades pueden
ser explotadas por atacantes de diversa índole desde aficionados hasta organizaciones
de cibercrimen o incluso estados en acciones de ciberguerra, utilizándolas como
plataformas de ataque comprometiendo los sistemas y redes de la organización.
Seguridad en el Software
6
Tema 1. Ideas clave
No control de la cadena de suministro del software, lo puede dar lugar a la
introducción de código malicioso en origen.
No seguimiento, por los desarrolladores, de guías de normalizadas de estilo en la
codificación.
Fechas límite de entrega de proyectos inamovibles.
Cambio en la codificación en base al requerimiento de nuevas funcionalidades.
Tolerancia a los defectos.
No tener actualizadas las aplicaciones en producción con los parches
correspondientes, configuraciones erróneas, etc.
Las aplicaciones son amenazadas y atacadas, no solo en su fase de operación, sino que
también en todas las fases de su ciclo de vida (Goertzel, 2009):
Seguridad en el Software
7
Tema 1. Ideas clave
Las vulnerabilidades de alta severidad (CVSS 8 a 10, clasificación definida en la OSVDB)
dan lugar a que un atacante pueda explotarlas rápidamente y hacerse con el control total
del sistema. Su explotación requiere un conocimiento poco especializado de la aplicación
al alcance, no solo de organizaciones cibercriminales, si no de cualquiera con
conocimientos de informática.
Seguridad en el Software
8
Tema 1. Ideas clave
En respuesta a lo expuesto anteriormente nace la Seguridad del Software, en el
documento de referencia de SAFECode se define como: «La confianza que el software,
hardware y servicios están libres de vulnerabilidades intencionadas o no intencionadas y
que funcionan conforme a lo especificado y deseado» (SafeCode, 2011).
El Departamento de Defensa de los Estados Unidos (DoD) la define como «El nivel de
confianza de que el software funciona según lo previsto y está libre de vulnerabilidades,
ya sean intencionada o no, diseñada o insertada en el marco de su ciclo de vida de
desarrollo».
Seguridad en el Software
9
Tema 1. Ideas clave
que el ciberatacante consigue vencer esas defensas, por ejemplo, mediante ingeniería
social, y comprometer una máquina del interior, a través de esta podrá atacar a otras de
la red (pivoting) empezando por las más vulnerables. Este es el caso de las Amenazas
Avanzadas Persistentes (APT) uno de los ciberataques más peligrosos y dañinos de hoy
en día. Se hace necesario por tanto el disponer de software seguro que funcione en un
entorno agresivo y malicioso.
Seguridad en el Software
10
Tema 1. Ideas clave
Figura 2. Coste relativo de corrección de vulnerabilidades en función de la etapa de desarrollo. Fuente:
https://www.qualys.com/docs/2018/qsc/las-vegas/qsc18-day2-23-operationalizing-web-application-security-
imaginex.pdf
Seguridad en el Software
11
Tema 1. Ideas clave
1.3. Vulnerabilidades y su clasificación
Se puede decir que son un subconjunto del fenómeno más grande que
constituyen los bugs (errores de programación) y flaws (errores de diseño) del
software.
Fallos de implementación
Fallos de diseño
Fallos de configuración
Seguridad en el Software
12
Tema 1. Ideas clave
Casi todos los fallos que se producen en un software provienen de fallos de
implementación y diseño, pero solamente algunos resultan ser vulnerabilidades de
seguridad. Un fallo debe tener algún impacto o característica relevante para ser
considerado un error de seguridad, es decir tiene que permitir a los atacantes la
posibilidad de lanzar un exploits que les permita hacerse con el control de un sistema.
Seguridad en el Software
13
Tema 1. Ideas clave
Solución: los programadores del software buscan solución en entornos
controlados.
Difusión: los medios de comunicación dan publicidad al incidente.
Medidas: si es posible las organizaciones afectadas toman medidas para mitigar
las posibles pérdidas.
Corrección y nueva verificación: el proceso de corrección de la vulnerabilidad,
llevado a cabo por programadores, será verificado nuevamente de manera
iterativa hasta comprobar la resolución del error.
Búsqueda. Los técnicos buscan vulnerabilidades similares (el ciclo vuelve a
comenzar).
Actualización: Los sitios no actualizados vuelven a ser víctimas.
Figura 6. Riesgo de una vulnerabilidad en función del tiempo. Fuente: Alert Logic (2014).
Seguridad en el Software
14
Tema 1. Ideas clave
Gestión de vulnerabilidades
MITRE: organización sin ánimo de lucro, de carácter público que trabaja en las
áreas de ingeniería de sistemas, tecnologías de la información, concepto de
operación y modernización de empresas.
CVE-2012-4212
Seguridad en el Software
15
Tema 1. Ideas clave
Common Vulnerability Scoring System (CVSS). Es básicamente un sistema que
escalona la severidad de una vulnerabilidad, de manera estricta a través de
fórmulas, proporcionando un estándar para comunicar las características y el
impacto de una vulnerabilidad identificada con su código CVE. Su modelo
cuantitativo asegura una medición exacta y repetible a la vez que permite ver
características subyacentes que se usaron para generar su puntuación.
Existe una página web donde se puede realizar el cálculo de la severidad de una
vulnerabilidad conforme al estándar CBSS.
Seguridad en el Software
16
Tema 1. Ideas clave
Common Vulnerability Reporting Framework (CVRF). Es un formato XML que
permite compartir información crítica sobre vulnerabilidades en un esquema
abierto y legible por cualquier equipo. Hasta el momento no había ningún
estándar para informar de vulnerabilidades de los sistemas de la Tecnologías de la
Información y Comunicaciones (TIC), este viene a cubrir una necesidad
manifestada por los distintos actores de la industria, organismos de investigación
y de la administración en cuanto a un marco común, ya que, hasta ahora, cada
proveedor creaba sus informes según su criterio. La disponibilidad de CVRF acelera
el intercambio y procesamiento de información entre distintas plataformas.
Seguridad en el Software
17
Tema 1. Ideas clave
• Proporcionar un estándar de comparación de herramientas de auditoría
seguridad de software.
• Proporcionar una línea base para la identificación de vulnerabilidades, su
mitigación y los esfuerzos de prevención.
CWE
Seguridad en el Software
18
Tema 1. Ideas clave
Consulta aquí más información sobre las diferentes clasificaciones:
MITRE Top 25: http://cwe.mitre.org/top25/
OWASP Top 10: https://owasp.org/www-project-top-ten/
WASC Threat Classification v2.0: http://www.webappsec.org/projects/threat/
Seguridad en el Software
19
Tema 1. Ideas clave
[12] CWE-787 Out-of-bounds Write. 11.08
[13] CWE-287 Improper Authentication. 10.78
[14] CWE-476 NULL Pointer Dereference. 9.74
[15] CWE-732 Incorrect Permission Assignment for Critical Resource. 6.33
[16] CWE-434 Unrestricted Upload of File with Dangerous Type. 5.50
[17] CWE-611 Improper Restriction of XML External Entity Reference. 5.48
[18] CWE-94 Improper Control of Generation of Code ('Code Injection'). 5.36
[19] CWE-798 Use of Hard-coded Credentials. 5.12
[20] CWE-400 Uncontrolled Resource Consumption. 5.04
[21] CWE-772 Missing Release of Resource after Effective Lifetime. 5.04
[22] CWE-426 Untrusted Search Path. 4.40
[23] CWE-502 Deserialization of Untrusted Data. 4.30
[24] CWE-269 Improper Privilege Management. 4.23
[25] CWE-295 Improper Certificate Validation. 4.06
Seguridad en el Software
20
Tema 1. Ideas clave
OWASP Top 10. Su objetivo es crear conciencia sobre la seguridad de las
aplicaciones web mediante la identificación de algunos de los riesgos más críticos
que enfrentan las organizaciones.
• Las 10 vulnerabilidades de seguridad más críticas en aplicaciones web.
• Lista ordenada por criticidad y predominio.
• Representa una lista concisa y enfocada sobre los diez riesgos más críticos
sobre seguridad en aplicaciones.
Seguridad en el Software
21
Tema 1. Ideas clave
Las principales propiedades esenciales que distinguen al software de confianza del
que no es, son:
disponibles.
• Uso de arquitecturas de alta disponibilidad, con diferentes tipos de
redundancias.
• Uso de sistemas distribuidos con sistemas de réplica de información entre ellos.
• Uso de sistemas de recuperación a través de imágenes, virtualización, etc.
Seguridad en el Software
22
Tema 1. Ideas clave
Confidencialidad. Capacidad de preservar que cualquiera de sus características,
activos manejados están ocultos a usuarios no autorizados, de forma que se
garantice que solo las personas, entidades o procesos autorizados pueden acceder
a la información.
Integri-
Confiden dad
-cialidad
Disponi
-bilidad
Estas tres primeras serían las propiedades fundamentales esenciales mínimas que
debería disponer todo software, a las que habría que añadir las siguientes
complementarias.
Seguridad en el Software
23
Tema 1. Ideas clave
Fiabilidad. Capacidad del software de funcionar de la forma esperada en todas
las situaciones a la que estará expuesto en su entorno de funcionamiento, es
decir que la posibilidad de que un agente malicioso pueda alterar la ejecución o
resultado de una manera favorable para el atacante está significativamente
reducida o eliminada.
Tolerancia. Capacidad del software para «tolerar» los errores y fallos que resultan
de ataques con éxito y seguir funcionando como si los ataques no se hubieran
producido.
Seguridad en el Software
24
Tema 1. Ideas clave
Las propiedades que distinguen al software de confianza se ilustran en la figura
siguiente.
Integridad
Confidencialidad Disponibilidad
Resiliencia
SEGURIDAD Fiabilidad
DEL
SOFTWARE
Robustez Autenticación
Trazabilidad Tolerancia
Existe una serie de factores que influyen en la probabilidad de que un software sea
consistente con las propiedades anteriormente mostradas (Mead y Woody, 2016)
estos incluyen:
Seguridad en el Software
25
Tema 1. Ideas clave
Conocimiento Profesional. El nivel de concienciación y conocimiento de seguridad
que los analistas, diseñadores, desarrolladores, probadores y mantenedores del
software, o su falta de este.
Existe una gran cantidad de bibliografía relativa a temas de seguridad en los que se
suele comentar los principios de seguridad que han de regir todo diseño. Algunos de
ellos están más enfocados a las configuraciones de los dispositivos de seguridad de
red; la mayoría de ellos se solapan y generalmente coinciden siendo, por tanto,
análogos. En este sentido, se selecciona como referencia para la realización de este
apartado los documentos Enhancing the Development Life Cycle to Produce Secure
Software y Writing Secure Code.
Defensa en profundidad.
Simplicidad del diseño.
Mínimo privilegio.
Separación de privilegios.
Separación de dominios.
© Universidad Internacional de La Rioja (UNIR)
Seguridad en el Software
26
Tema 1. Ideas clave
La seguridad por oscuridad es un error.
Seguridad por defecto.
Defensa en profundidad
Seguridad en el Software
27
Tema 1. Ideas clave
Este principio, propone un enfoque defensivo, que implanta protecciones o
mecanismos de seguridad en todos los niveles del sistema o capas del modelo Open
Systems Interconnection (OSI).
Las medidas de seguridad a implementar en cada capa podrán variar en función del
entorno de operación del sistema, sin embargo, el principio base o general
permanece inalterable, por ejemplo, para las capas siguientes tendríamos:
Intrusiones. S-SDLC.
Validación de entradas.
Poítica de contraseñas.
Figerprinting. TLS.
4 Transporte
Enumeración. Monitorización de puertos.
Seguridad en el Software
28
Tema 1. Ideas clave
Spoofing de las rutas y Cortafuegos de filtrado de
direcciones IP. paquetes.
Suplantación de identidad. ACLs, 802.1X, NAC, Kerberos,
SSH.
Bastionado equipos de red para
IPSec.
SIEM.
cifrado fuertes.
Accidentes naturales Virtualización.
incendios.
Ataques a la Politicas Seguridad de la
confidencialidad, ingenieria Información.
© Universidad Internacional de La Rioja (UNIR)
Formación y concienciación en
seguridad.
Seguridad en el Software
29
Tema 1. Ideas clave
El principio fundamental detrás de este concepto es el de dificultar las acciones del
atacante a través de las diferentes medidas de seguridad aplicadas a cada una de las
capas de forma que los diferentes sensores que tenga nuestro sistema detecten las
actividades maliciosas. Cuando una capa se vea comprometida, las medidas de
detección, de reacción y de recuperación nos permitirán reaccionar, disminuyendo la
probabilidad de que otras capas se vean comprometidas, evitando así, que la
seguridad del servicio en su conjunto se vea burlada, disminuyendo por tanto el
riesgo.
Seguridad en el Software
30
Tema 1. Ideas clave
resulten en vulnerabilidades que comprometan la seguridad de la aplicación. Incluso
se hará más fácil el análisis de su descubrimiento y su verificación y validación.
Algunas de las opciones específicas de diseño del software que lo simplifican son
(Mead y Woody, 2016):
Seguridad en el Software
31
Tema 1. Ideas clave
Objetivo: reducir la complejidad del diseño para minimizar el número de
vulnerabilidades explotables por el atacante y debilidades en el sistema.
Mínimo privilegio
Una de las principales razones por la que es necesario que una entidad se ejecute con
los mínimos privilegios posibles, es debido a que si un ciberatacante consigue
comprometer una máquina o es capaz de inyectar código malicioso en un proceso
del sistema este se debería ejecutar con los mismos privilegios que tuviera el usuario
en la máquina o el proceso.
Este principio requiere que el diseñador realice una lista de las entidades de software
con los recursos que utiliza y las tareas que debe realizar en el sistema, especificando
para cada una los privilegios reales estrictamente necesarios. Normalmente se suele
asignar un usuario general con conjunto de privilegios que le permitirá realizar todas
las tareas, incluidas las no necesarias.
© Universidad Internacional de La Rioja (UNIR)
Seguridad en el Software
32
Tema 1. Ideas clave
Ejemplos de errores comunes son:
Separación de privilegios
Se evita así que todas las entidades sean capaces de acceder a la totalidad o llevar
a cabo todas las funciones del sistema con privilegios de «superusuario» y por tanto
que ninguna entidad tenga todos los privilegios necesarios para modificar,
sobrescribir, borrar o destruir todos los componentes y recursos de la aplicación.
Como ejemplo tenemos:
contrario, tiene que ser capaz de leer, escribir y eliminar contenido y modificar el
código de los formularios HTML.
Seguridad en el Software
33
Tema 1. Ideas clave
Separación de dominios
Solo deben ser capaces de realizar las tareas que son absolutamente necesarias.
Llevarlas a cabo solamente con los datos que tenga permiso de acceso.
Utilizar el espacio de memoria y disco que tenga asignado para la ejecución de
esas funciones.
Seguridad en el Software
34
Tema 1. Ideas clave
TPM: es el nombre de una especificación publicada que detalla un
criptoprocesador seguro que puede almacenar claves de cifrado para
proteger información, así como el nombre general de las implementaciones
de dicha especificación, frecuentemente llamadas el «chip TPM» o
«dispositivo de seguridad TPM». (Fuente:
https://es.wikipedia.org/wiki/M%C3%B3dulo_de_plataforma_de_confianz
a).
como el de UNIX/TMP.
Almacenar los archivos de datos, configuración y programas ejecutables en los
directorios separados del sistema de archivos.
Seguridad en el Software
35
Tema 1. Ideas clave
Los programas y scripts que están configurados para ejecutarse como servidor
Web de usuario «nobody» (debe suprimirse) deben ser modificados para
funcionar bajo un nombre de usuario específico.
Cifrar todos los archivos ejecutables e implementar un módulo de decodificación
que se ejecute como parte del inicio del programa para desencriptarlos al iniciar
su funcionamiento.
Incluir técnicas de cifrado de archivos y firma digital o almacenamiento en un
servidor de datos externos con conexión cifrada (por ejemplo, mediante Secure
Sockets Layer ─SSL─ o Transport Layer Security ─TLS─) para aislar los datos de
configuración del software de la manipulación y eliminación, en caso de que las
técnicas de control de acceso al sistema no son lo suficientemente fuertes. Ello
requerirá que el software incluya la lógica de cifrado para descifrar y validar la
firma del archivo de configuración al inicio del programa.
Implantar clonado de sistemas como medida de recuperación, desde un servidor
remoto (que guardaría las imágenes y los datos de configuración) mediante una
red de comunicaciones fuera de banda específica y cifrada.
Asumir que todos los componentes del entorno de producción y sistemas externos
son inseguros o no confiables, con ello se pretende reducir la exposición de los
componentes del software a agentes potencialmente maliciosos que hayan podido
penetrar en el perímetro de defensa (los límites dispositivos de protección
© Universidad Internacional de La Rioja (UNIR)
El software debe ser diseñado con una mínima dependencia de los datos externos,
se debe tener control completo sobre cualquier fuente de entrada de datos, tanto los
Seguridad en el Software
36
Tema 1. Ideas clave
proporcionados por la plataforma de ejecución como de sistemas externos, debiendo
validar todos los datos provenientes de las diferentes fuentes del entorno antes de
utilizarlos, pues implican una posibilidad de ataque.
Hay que realizar una descomposición del sistema en sus componentes principales y
realizar una lista de las diferentes fuentes de datos externas, entre las que podemos
tener las siguientes:
Gran parte de los ataques a los sistemas TIC actualmente se deben a fallos o
carencias en la validación de los datos de entrada, el confiar en la fuente que las
originó hace a la aplicación vulnerable a ataques originados en el cliente al modificar
los datos en el origen o durante su transporte. Los atacantes pueden manipular
diferentes tipos de datos de entrada con el propósito de encontrar vías de
compromiso de la aplicación.
Todos los tipos de entrada deber ser validados y verificados mediante pruebas
específicas. Entre los diferentes tipos de entradas a las aplicaciones tenemos
© Universidad Internacional de La Rioja (UNIR)
Seguridad en el Software
37
Tema 1. Ideas clave
Referencias a nombres de archivo.
Subida contenido de archivos.
Importaciones de archivos planos.
Cabeceras Hyper Text Transfer Protocol (HTTP).
Parámetros HTTP GET.
Campos de formulario (especialmente los ocultos).
Las listas de selección, listas desplegables.
Cookies.
Comunicaciones mediante Java applets.
Los tipos de aplicaciones que más probabilidad presenten de sufrir este tipo de
ataques son las del tipo cliente-servidor, portales web y agentes proxy. Entre los
tipos de ataques que se pueden dar por la carencia de comprobación de los datos de
entrada, la mayoría para aplicaciones Web, tenemos:
Para evitar este tipo de vulnerabilidades se deben aplicar una serie de principios de
validación de las entradas, entre los que tenemos (Goertzel, K. M., Winograd, T.,
2008):
© Universidad Internacional de La Rioja (UNIR)
Seguridad en el Software
38
Tema 1. Ideas clave
Rechazar todos los contenidos ejecutables en las entradas provenientes de
fuentes no autorizadas.
Verificar que los programas que solicitan las llamadas tienen derecho (por la
política) a emitirlas.
Definir reacciones significativas a errores de validación de entrada.
Validar los datos de salida de la aplicación antes de mostrarlos al usuario o
redirigirlos a otro sistema.
Lista blanca (en inglés, whitelist) es una lista o registro de entidades que, por
una razón u otra, pueden obtener algún privilegio particular, servicio,
movilidad, acceso o reconocimiento. Por el contrario, la lista negra
[blacklisting] es la compilación que identifica a quienes serán denegados, no
reconocidos u obstaculizados.
(Fuente: https://es.wikipedia.org/wiki/Lista_blanca).
Las principales diferencias que distinguen los sistemas con registros de auditoría de
© Universidad Internacional de La Rioja (UNIR)
Seguridad en el Software
39
Tema 1. Ideas clave
Posibilidad de que los eventos de seguridad registrados en la aplicación o sistema
puedan ser utilizados en procesos reactivos después de la ocurrencia de un
incidente.
El nivel de protección de integridad.
Seguridad en el Software
40
Tema 1. Ideas clave
Diseño de software resistente
Una de las asunciones que se debe realizar a la hora de diseñar una aplicación, es que
el atacante obtendrá con el tiempo acceso a todos los diseños y todo el código
© Universidad Internacional de La Rioja (UNIR)
Seguridad en el Software
41
Tema 1. Ideas clave
Ell principio de diseño abierto (open design) establece que la implementación de
salvaguardas de seguridad debe ser independiente del diseño de modo que la
revisión del mismo no comprometa la protección que ofrecen las salvaguardas. Esto
es particularmente aplicable en la criptografía, donde los mecanismos de protección
están desacoplados de las claves que se utilizan para las operaciones criptográficas,
y los algoritmos utilizados para el cifrado y descifrado están abiertos y disponibles
para que cualquier persona pueda revisarlos.
Uno de los principios de seguridad cuyo cumplimiento exige el Real Decreto 3/2010,
de 8 de enero, por el que se regula el Esquema Nacional de Seguridad en el ámbito
de la Administración Electrónica, es el de la seguridad por defecto. En su artículo 19
indica lo siguiente:
Seguridad en el Software
42
Tema 1. Ideas clave
Los sistemas deben diseñarse y configurarse de forma que garanticen la seguridad
por defecto:
Una cadena es tan fuerte como sus eslabones más débiles. Este principio de
seguridad establece que la resistencia de su software contra los arques dependerán
en gran medida de la protección de sus componentes más débiles, ya se trate del
código, un servicio o una interfaz. Una ruptura en el eslabón más débil resultará en
una brecha de seguridad.
De la lectura del artículo anterior se desprende que el principal objetivo del principio
de seguridad por defecto es el de minimizar la superficie de ataque de cualquier
aplicación o sistema TIC, deshabilitando aquellos servicios y elementos no necesarios
y activando solo los necesarios.
© Universidad Internacional de La Rioja (UNIR)
Seguridad en el Software
43
Tema 1. Ideas clave
pues amenazan su seguridad global por muy securizado que se tenga el resto, en
concreto los siguientes:
Seguridad en el Software
44
Tema 1. Ideas clave
Resumen
Principio Objetivo
Introducir múltiples capas de seguridad para reducir la probabilidad de
Defensa en profundidad
compromiso del sistema.
Reducir la complejidad del diseño para minimizar el número de
Simplicidad del diseño vulnerabilidades explotables por el atacante y debilidades en el
sistema.
Mínimo privilegio Lo que no está expresamente permitido está prohibido.
Seguridad en el Software
45
Tema 1. Ideas clave
Concienciarse de que la seguridad por oscuridad es un mecanismo de
La seguridad por
defensa que puede proporcionar a un agente malicioso información
oscuridad: error
para comprometer la seguridad de una aplicación.
Seguridad por defecto Reducir la superficie de ataque de una aplicación o sistema.
Introducción
que el software producido por ellos será seguro. Debido a la popularidad actual de
los métodos ágiles, es importante el estudiar los problemas de seguridad que surgen
cuando se utiliza este tipo de ciclos de vida.
Seguridad en el Software
46
Tema 1. Ideas clave
Los equipos de desarrollo que utilizan metodologías seguras en el SDLC casi
inmediatamente perciben una mejora en su capacidad para detectar y eliminar
errores de codificación y debilidades de diseño en el software que producen, antes
de que entren en un proceso de distribución e instalación. Esta mejora se pondrá de
manifiesto conforme el software pase sus controles de seguridad (revisiones de
diseño y código de seguridad, análisis de fallos de inyección, pruebas de penetración,
análisis de vulnerabilidades, etc.).
organizaciones.
Seguridad en el Software
47
Tema 1. Ideas clave
McGraw’s Seven Touchpoints
Es el modelo base tomado para el desarrollo de este tema, McGraw (2005) propone
un modelo de S-SDLC (cascada o iterativo) en el que define una serie de mejores
prácticas de seguridad a aplicar a los artefactos de cada fase del desarrollo.
Revisión de código.
Análisis de riesgo arquitectónico.
Pruebas de penetración.
Pruebas de seguridad basados en riesgo.
Casos de abuso.
Requisitos de seguridad.
Operaciones de seguridad.
Revisión externa.
Además de las siete prácticas se identifica una octava, el análisis externo, en el que
un equipo de analistas externos a la organización y por tanto al equipo de desarrollo
del software, realiza revisiones de seguridad independientes, evaluaciones y pruebas
del diseño del software y la implementación. La figura siguiente, muestra el de ciclo
de vida de desarrollo de software seguro S-SDLC en el que se especifican las
actividades y pruebas de seguridad a efectuar en cada fase de este.
© Universidad Internacional de La Rioja (UNIR)
Seguridad en el Software
48
Tema 1. Ideas clave
6. 4. Pruebas 1. 2. 7.
5. Casos 2. Análisis 3. Pruebas
Requisitos basadas Revisión Análisis
penetración
Operaciones
de abuso de riesgos código riesgos Seguridad
seguridad en riesgo
Requisitos
Arquitectura Plan de Pruebas y Realimentación de
Casos de Codificación producción
Diseño pruebas resultados
abuso
8. Revisión
externa
Otras metodologías
© Universidad Internacional de La Rioja (UNIR)
Seguridad en el Software
49
Tema 1. Ideas clave
Team Software Process (TSP): https://resources.sei.cmu.edu/library/asset-
view.cfm?assetid=5287
Oracle Software Security Assurance:
http://www.oracle.com/us/support/assurance/index.html
Appropriate and Effective Guidance in Information Security (AEGIS):
http://www.cs.ox.ac.uk/files/6345/thesis_final.pdf
Rational Unified Process-Secure (RUPSec):
https://www.researchgate.net/publication/221017730_RUPSec_An_Extension_o
n_RUP_for_Developing_Secure_Systems_-_Requirements_Discipline
Secure Software Development Model (SSDM):
https://prezi.com/p/k4aozp24zg7o/ssdm/
Building Security in Maturity Model (BSIMM):
http://www.bsi-mm.com/
Software Assurance Maturity Model (OPEN SAMM):
http://www.opensamm.org
Introducción
Seguridad en el Software
50
Tema 1. Ideas clave
Las organizaciones relacionadas con normas internacionales sobre seguridad de la
información son:
Seguridad en el Software
51
Tema 1. Ideas clave
Por otro lado, las amenazas a la seguridad son internas y externas e incluyen una
intención maliciosa materializada en posibles ciberataques que puedan recibir el
software o su entorno de ejecución del software cuando se tiene un comportamiento
impredecible (por cualquier razón).
Estándares de calidad.
• ISO/IEC JTC1 SC7. Ingeniería de software y de sistemas.
• ISO 9126. Calidad del producto.
• ISO 14598. Evaluación de productos de software.
• ISO 12119. Requerimientos de calidad y prueba de COTS.
• ISO 15939. Proceso de medición de software.
• ISO 9000. Familia de normas son normas de calidad establecidas por la ISO.
Estándares de seguridad.
• ISO / IEC 15026 Systems and software engineering — Systems and software
assurance.
• System Security Engineering Capability Maturity Model (SSE-CMM Norma
ISO/IEC 21827). Desarrollado por la «International Systems Security
Engineering Association (ISSEA)», el Modelo de Capacidad y Madurez en la
Ingeniería de Seguridad de Sistemas es un modelo derivado del CMM y que
describe áreas de ingeniería de seguridad y las características esenciales de los
© Universidad Internacional de La Rioja (UNIR)
Seguridad en el Software
52
Tema 1. Ideas clave
• ISO / IEC 24772. Proyecto 22, grupo de trabajo para evitar vulnerabilidades en
lenguajes de programación proporcionando una orientación a los
programadores sobre cómo evitar las vulnerabilidades que se pueden
introducir en el software al utilizar ciertas características de un lenguaje de
programación seleccionado para el desarrollo de un proyecto software,
sugiriendo alternativas de patrones de codificación que las eviten. Así mismo
ayuda a elegir las herramientas de análisis estático, detección de
vulnerabilidades y orientación de codificación para mejorar la eficacia en la
reducción de vulnerabilidades.
• ISO/IEC 27034-1, Information technology — Security techniques —
Application security. Norma para ayudar a las organizaciones a integrar la
seguridad en el ciclo de vida de sus aplicaciones.
• ISO/IEC 15408, Evaluation Criteria for IT Security. The Common Criteria. Los
criterios comunes (CC) permiten comparar los resultados entre evaluaciones de
productos independientes en base a un conjunto común de requisitos
funcionales para los productos hardware, software o firmware de las TIC,
estableciendo un nivel de confianza en el grado en el que el producto satisface
la funcionalidad de seguridad en base a la superación de unas pruebas
aplicadas.
En lo relativo a la seguridad del software, los niveles EAL más altos poseen un
nivel de garantía de evaluación que captura un conjunto específico de
requisitos de seguridad, de los que es posible deducir algunas propiedades
generales que el software debe exhibir para alcanzarlos:
Seguridad en el Software
53
Tema 1. Ideas clave
EAL 5: El sistema debe ser semiformal mente diseñado y probado basado en
un modelo formal y una presentación semiformal de la especificación
funcional y el diseño de alto nivel, de forma que las vulnerabilidades resistan
relativamente a los ataques de penetración. Esta propiedad también se
aplica al diseño de software.
EAL 6: Igual que EAL 5 y además el diseño debe ser semiformal mente
verificado. Como el anterior, este establecimiento también debe aplicarse al
diseño de software.
EAL 7: Igual que EAL 6, más el diseño debe ser verificado oficial y
formalmente testeado. Como el anterior, este establecimiento también
debe aplicarse al diseño de software.
Adams, H., Hoole, A. M., Kamani, S., Lemos, R., Martin, L., Mello, J., Shah, N., y
Wisseman, S. (2108). 2018 Application Security Research Update HP Security
Research. Micro Focus Fortify Software Security Research Team.
Alert Logic. (2014). Defense throughout the vulnerability life cycle with alert logic
threat and log manager.
https://www.alertlogic.com/assets/whitepapers/Defense-Throughout-the-
Vulnerability-Life-Cycle-3.pdf
Allen, J. H.; Barnum. S.; Ellison, R. J.; McGraw, G.; Mead, N. R. (2008). Software
Security Engineering: A Guide for Project Managers. Addison Wesley
© Universidad Internacional de La Rioja (UNIR)
Professional.
Barnum, S., y Sethi, A. (2007). Attack Patterns as a Knowledge Resource for Building
Secure. Software Cigital, Inc.
Seguridad en el Software
54
Tema 1. Ideas clave
Barnum, S. (2008). Common Attack Pattern Enumeration and Classification (CAPEC)
Schema Description. Department of Homeland Security EEUU. Software
Cigital.
Graff, M. G., y Van Wyk, K. R. (2003). Secure Coding: Principles & Practices. O'Reilly.
Howard, M., y Lipner, S. (2006). The Security Development Lifecycle: SDL: A Process
for Developing Demonstrably Secure Software. Microsoft Press.
© Universidad Internacional de La Rioja (UNIR)
INCIBE. (2011). Cuaderno de notas del Observatorio ¿Qué son las vulnerabilidades del
software?
Seguridad en el Software
55
Tema 1. Ideas clave
Klocwork Inc. (2004). Improving Software by Reducing Coding Defects Investing in
software defect detection and prevention solutions to improve software
reliability, reduce development costs, and optimize revenue opportunities.
Mead, N., y Woody, C. (2016). Cyber Security Engineering: A Practical Approach for
Systems and Software Assurance. Addison-Wesley Professional.
MITRE. (2012). CVE Introductory Brochure. A brief two-page introduction to the CVE
Initiative.
MITRE. (2012). CWE Introductory Brochure. A brief two-page introduction to the CWE
initiative.
Seguridad en el Software
56
Tema 1. Ideas clave
OWASP TOP 10. (2017). Los diez riesgos más importantes en aplicaciones WEB.
Edición en español.
Paul, Mano (2014). Official (ISC)2 guide to the CSSLP. Second Edition. CRC PRESS, ISBN
978-1-4665-7133-4.
Redwine Jr., S. T. (ed.). (2006). Software Assurance: A Guide to the Common Body of
Knowledge to Produce, Acquire, and Sustain Secure Software Version 1.1. US
Department of Homeland Security.
analysys.
Seguridad en el Software
57
Tema 1. Ideas clave
A fondo
Lección magistral I. Tipos de ciclos de desarrollo de software seguro S-SDLC
En la presente clase se presentan varios modelos de ciclo de vida S-SDLC con prácticas
de seguridad incluidas que se pueden aplicar independientemente del tipo de
modelo de ciclo de vida, en espiral, extreme programming, etc. Además, algunos
métodos estándar de desarrollo se ha demostrado que aumentan la probabilidad de
que el software producido por ellos será seguro y confiable. Así mismo, debido a la
popularidad de los métodos ágiles, es importante el estudiar los problemas de
seguridad que surgen cuando se utilizan este tipo de ciclos de vida.
The application of a new secure software development life cycle (S-SDLC) with agile
methodologies
© Universidad Internacional de La Rioja (UNIR)
De Vicente, J., Bermejo, J., Bermejo, J. R., y Sicilia, J. A. (2019). The application of a new
secure software development life cycle (S-SDLC) with agile methodologies. Electronics,
8(11).
Seguridad en el Software
58
Tema 1. A fondo
Artículo que propone un nuevo modelo S-SDLC aplicable a metodologías de
desarrollo ágil de software. Además, contiene un estudio del estado del arte de
modelos S-SDLC que complementa lo estudiado en la asignatura.
Dorofee, A., Woody, C., Alberts, C., Creel, R., y Ellison, R. J. (2011). A systemic approach
for assessing software supply-chain risk. 44th Hawaii International Conference on System
Sciences, Kauai. https://www.us-cert.gov/bsi/articles/best-practices/acquisition/a-
systemic-approach-assessing-software-supply-chain-risk
En este vídeo se da una visión general de una importante iniciativa de seguridad del
software llamada BSIMM y su forma de uso como una herramienta de medida para
su organización, proveedores y su combinación con otros métodos de medición de
seguridad.
Seguridad en el Software
59
Tema 1. A fondo
Security design reviews
Seguridad en el Software
60
Tema 1. A fondo
Test
1. Indica cuál de las siguientes respuestas no es una causa de aparición de
vulnerabilidades en el software:
A. No realización de pruebas de seguridad basadas en riesgo.
B. Cambios de requisitos del proyecto durante la etapa de especificación.
C. Mezcla de código proveniente de varios orígenes.
D. Tamaño excesivo y complejidad de las aplicaciones.
Seguridad en el Software
61
Tema 1. Test
3. Señala la respuesta incorrecta. Las fuentes de las vulnerabilidades se deben a:
A. Fallos provenientes de la codificación de los diseños del software realizados.
B. Fallos provenientes de la cadena de distribución del software.
C. Los sistemas hardware o software contienen frecuentemente fallos de
diseño que pueden ser utilizados para realizar un ataque.
D. La instalación de software por defecto implica, por lo general, la instalación
de servicios que no se usan, pero que pueden presentar debilidades que
comprometan la máquina.
Seguridad en el Software
62
Tema 1. Test
6. Para conseguir que el desarrollo de una aplicación posea las propiedades y
principios de diseño del software seguro, se necesita que el personal de diseño y
desarrollo desarrolle:
A. Perspectiva administrador.
B. Perspectiva defensor.
C. Perspectiva usuario.
D. Perspectiva atacante.
B. Separación de privilegios.
C. Separación de dominios.
D. Defensa en profundidad.
Seguridad en el Software
63
Tema 1. Test
9. Señala la práctica de seguridad a la que corresponde la siguiente afirmación: «son
soluciones generales repetibles a un problema de ingeniería de software
recurrente, destinadas a obtener un software menos vulnerable y un diseño más
resistente y tolerante a los ataques, normalmente se limitan a funciones y
controles de seguridad a nivel del sistema, comunicaciones e información».
A. Test de penetración.
B. Revisión de código.
C. Casos de abuso.
D. Patrones de diseño.
10. Señala la respuesta incorrecta. El cálculo de código CVSS se realiza en base a tres
tipos de métricas ambientales:
A. Métricas estadísticas.
B. Métricas base.
C. Métricas temporales.
D. Métricas ambientales.
© Universidad Internacional de La Rioja (UNIR)
Seguridad en el Software
64
Tema 1. Test