Está en la página 1de 58

Seguridad del Software

Javier Bermejo
Javier Bermejo Higuera
Higuera

TEMA I: Introducción al Problema de la


Seguridad del Software
Indice

1. Introducción al problema de la Seguridad en el


Software.
2. Vulnerabilidades y su clasificación.
3. Propiedades software seguro.
4. Principios de diseño seguridad del software
5. Tipos de S-SDLC.
6. Metodologías y estándares.

Seguridad del Software- Javier Bermejo Higuera


Contenido del Tema 1

Seguridad del Software- Javier Bermejo Higuera


Introducción problema seguridad software
Objetivos del Tema 1
1. Introducir al alumno en los principales conceptos que abarca
la Seguridad del Software:

 Beneficios que produce y su importancia en la seguridad global de


un sistema.
 Propiedades de un software seguro.
 Principios de diseño.
 Estándares de seguridad aplicables a los procesos de desarrollo
seguro de software.

Seguridad del Software- Javier Bermejo Higuera


Introducción problema seguridad software
► ¿Qué tienen en común las bases de datos, redes sociales, sistemas
de información, dispositivos inalámbricos, teléfonos celulares, PDAs,
navegadores, sistemas operativos, servidores de todo tipo,
aplicaciones computadoras, sistemas de infraestructura de clave
pública, los sistemas de seguridad cortafuegos, etc.?

Seguridad del Software- Javier Bermejo Higuera


Introducción problema seguridad software

 Ataques cibernéticos más frecuentes, organizados y costosos


 Amenaza a la prosperidad, la seguridad y la estabilidad de un país.
 Aplicaciones presentan defectos, vulnerabilidades o configuraciones inseguras.

Seguridad del Software- Javier Bermejo Higuera


Introducción problema seguridad software

1. Las aplicaciones son amenazadas y atacadas:

 Fase desarrollo.
 Fase distribución e instalación
 Fase de Operación
 Fase de Mantenimiento y sostenimiento

Seguridad del Software- Javier Bermejo Higuera


Introducción problema seguridad software

Las principales causas de la aparición de vulnerabilidades son las


siguientes:

Seguridad del Software- Javier Bermejo Higuera


Introducción problema seguridad software
Definición de seguridad del software:
“El conjunto de principios de diseño y buenas prácticas a implantar en el
SDLC, para detectar, prevenir y corregir los defectos de seguridad en el
desarrollo y adquisición de aplicaciones…”.

• Aproximadamente un 40-50 % de reducción en el número de


vulnerabilidades (entre 75-80 % en vulnerabilidades críticas)
después de la implantación de un S-SDLC en el primer año

Seguridad del Software- Javier Bermejo Higuera


Introducción problema seguridad software

Seguridad del Software- Javier Bermejo Higuera


Introducción problema seguridad software

Seguridad del Software- Javier Bermejo Higuera


Introducción problema seguridad software
• Efectos de la detección de defectos tardía

Seguridad del Software- Javier Bermejo Higuera


Introducción problema seguridad software

Seguridad del Software- Javier Bermejo Higuera


Vulnerabilidades y su clasificación
1. Definición

Una vulnerabilidad se define:


Producto → productos a los que afecta
Dónde → Componente del programa
Causa → Fallo técnico concreto
Impacto → Define la gravedad
Vector → Técnica del atacante

Seguridad del Software- Javier Bermejo Higuera


Vulnerabilidades y su clasificación

1. Fases del ciclo de vida de una vulnerabilidad:

Seguridad del Software- Javier Bermejo Higuera


Vulnerabilidades y su clasificación

Ciclo de Vida de la
vulnerabilidad

 Riesgo aumenta
desde que se
descubre la
vulnerabilidad
hasta que se
parchea

Extraida: Alert Logic. Defense Throughout the Vulnerability Life Cycle

Seguridad del Software- Javier Bermejo Higuera


Vulnerabilidades y su clasificación

1. Common Vulnerabilities and Exposures (CVE).

− Identificador CVE.
− Breve descripción
de la vulnerabilidad.
− Referencias.

Seguridad del Software- Javier Bermejo Higuera


Vulnerabilidades y su clasificación

1. Common Vulnerability Scoring System (CVSS).

Seguridad del Software- Javier Bermejo Higuera


Vulnerabilidades y su clasificación

Seguridad del Software- Javier Bermejo Higuera


Vulnerabilidades y su clasificación
1. Common Weakness Enumeration (CWE) Estándar
International y de libre uso que ofrece un conjunto unificado de
debilidades o defectos de software medibles

Seguridad del Software- Javier Bermejo Higuera


Vulnerabilidades y su clasificación

1. MITRE TOP 25.

 Contiene los mayores errores de programación que puede


causar vulnerabilidades en el software.

RANK ID NOMBRE
[1] CWE-89 Improper Neutralization of Special Elements used in an SQL Command ('SQL
Injection')
[2] CWE-78 Improper Neutralization of Special Elements used in an OS Command ('OS
Command Injection')
[3] CWE-120 Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')
[4] CWE-79 Improper Neutralization of Input During Web Page Generation ('Cross-site
Scripting')
[5] CWE-306 Missing Authentication for Critical Function
[6] CWE-862 Missing Authorization
[7] CWE-798 Use of Hard-coded Credentials
[8] CWE-311 Missing Encryption of Sensitive Data
[9] CWE-434 Unrestricted Upload
Seguridad delof File with
Software Dangerous
- Javier Bermejo Type
Higuera
Vulnerabilidades y su clasificación

 Las 10 vulnerabilidades
de seguridad más
críticas en aplicaciones
Web.

Seguridad del Software- Javier Bermejo Higuera


Propiedades de un software seguro

1. Propiedades esenciales

 Integridad.
 Disponibilidad.
 Confidencialidad.

Seguridad del Software- Javier Bermejo Higuera


Propiedades de un software seguro
2. Propiedades complementarias

 Fiabilidad.
 Autenticación.
 Trazabilidad.
 Robustez.
 Resiliencia.
 Tolerancia

Seguridad del Software- Javier Bermejo Higuera


Propiedades de un software seguro

2. Factores influyentes

 Herramientas de desarrollo.
 Componentes adquiridos.
 Conocimiento Profesional.
 Configuraciones Desplegadas.
 Ambiente de Operación
 Principios de diseño y buenas prácticas de desarrollo.

Seguridad del Software- Javier Bermejo Higuera


Principios diseño seguridad software
• La adopción de estos principios de diseño constituye una base
fundamental de las técnicas de programación segura
• Las principales prácticas y principios de diseño tener en cuenta serían:
– Defensa en profundidad.
– Simplicidad del diseño.
– Mínimo privilegio.
– Separación de privilegios.
– Separación de dominios.
– Separación código, ejecutables, datos configuración y programa.
– Entorno de producción o ejecución inseguro.
– Registro de eventos de seguridad.
– Fallar de forma segura.
– Diseño de software resistente.
– La seguridad por oscuridad es un error.
– Seguridad por defecto.
http://www.compracloud.com/noticias/11-principios-de-diseno-de-seguridad-para-tu-nube-privada

Seguridad del Software- Javier Bermejo Higuera


Principios diseño seguridad software
Defensa en profundidad

Estrategia de protección consistente en introducir múltiples


capas de seguridad, que permitan reducir la probabilidad de
compromiso en caso de que una de las capas falle y en el peor
de los casos minimizar el impacto

Objetivo: introducir múltiples


capas de seguridad para reducir
la probabilidad de compromiso
del sistema.

Seguridad del Software- Javier Bermejo Higuera


Principios diseño seguridad software
Medidas Seguridad de cada Capa

Tramas Enlace

Prevención Intrusiones Seguridad


Bits Físico Física Procedimientos seguridad
Plataforma virtualización

Seguridad del Software- Javier Bermejo Higuera


Principios diseño seguridad software
Medidas de Seguridad de cada Capa

https://seguridadwebjorge.wordpress.com/2016/02/13/seguridad-informatica/

Seguridad del Software- Javier Bermejo Higuera


Principios diseño seguridad software
Simplicidad del diseño
La realización de un diseño tan simple como sea posible

• Menos probabilidad que el desarrollador incluya debilidades y


vulnerabilidades.

dgraphicstyle.wordpress.com/2012/09/05/simplicidad-y-complejidad-en-el-diseno
https:// /

Objetivo: Reducir la complejidad del diseño para minimizar el número de


vulnerabilidades y debilidades en el sistema explotables por el atacante

Seguridad del Software- Javier Bermejo Higuera


Principios diseño seguridad software
Mínimo privilegio

Principio según el cual se concede a cada entidad (usuario, proceso o


dispositivo) el conjunto más restrictivo de privilegios necesarios para el
desempeño de sus tareas autorizadas..

Objetivo: lo que no está expresamente permitido está prohibido.

Seguridad del Software- Javier Bermejo Higuera


Principios diseño seguridad software
Separación de Privilegios
• Implica la asignación a las diferentes entidades de un rol:
Asignación de un subconjunto de funciones o tareas
Acceso a los datos necesarios

Objetivo: asignación a las diferentes entidades de un rol que implique el


acceso a un subconjunto de funciones o tareas y a los datos necesarios.

Seguridad del Software- Javier Bermejo Higuera


Principios diseño seguridad software
Separación de Dominios
• Consiste en la utilización de técnicas de compartimentación de los usuarios,
procesos y datos de forma que se reduzca la exposición de las entidades a los
ataques

Objetivo: minimizar la
probabilidad de que
actores maliciosos
obtengan fácilmente
acceso a las ubicaciones
de memoria u objetos de
datos del sistema.

Seguridad del Software- Javier Bermejo Higuera


Principios diseño seguridad software
Separación código, ejecutables, datos configuración y programa
• Técnicas de separación:

Objetivo: reducir la probabilidad de que un ciberatacante que haya


accedido a los datos del programa fácilmente pueda localizar y acceder
a los archivos ejecutables y datos de configuración del programa.

Seguridad del Software- Javier Bermejo Higuera


Principios diseño seguridad software
Entorno de producción o ejecución inseguro
• Asumir que todos los componentes del entorno de producción y
sistemas externos son inseguros o no confiables

Objetivo: evitar vulnerabilidades aplicando una serie de principios


de validación de las entradas.

Seguridad del Software- Javier Bermejo Higuera


Principios diseño seguridad software
Registro de eventos de seguridad
• Actualmente es necesario dotar a las aplicaciones o sistemas de la
capacidad de generar eventos (logs) de seguridad.

Objetivo: generar eventos (logs) de seguridad, para garantizar que


las acciones realizadas por un ciberatacante se observan y registran.

Seguridad del Software- Javier Bermejo Higuera


Principios diseño seguridad software
Fallar de forma segura
•Algunas de las características específicas del diseño que minimizan la
probabilidad de que el software quede en un estado inestable.

Objetivo: reducir la probabilidad de que un fallo en el software,


pueda saltarse los mecanismos de seguridad de la aplicación,
dejándolo en un modo de fallo inseguro vulnerable a los ataques.

Seguridad del Software- Javier Bermejo Higuera


Principios diseño seguridad software
Diseño de software resistente
• Diversas características de diseño aumentarán la resistencia

Objetivo: reducir al mínimo la cantidad de tiempo que el componente de


un software defectuoso o fallido sigue siendo incapaz de protegerse de
los ataques

Seguridad del Software- Javier Bermejo Higuera


Principios diseño seguridad software
La seguridad por oscuridad: error
• 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 fuente de la misma.

Objetivo: concienciarse de que la seguridad por oscuridad es un


mecanismo de defensa que puede proporcionar a un atacante
información para comprometer la seguridad de una aplicación

Seguridad del Software- Javier Bermejo Higuera


Principios diseño seguridad software
Seguridad por defecto
• Uno de los principios de seguridad del Esquema Nacional de
Seguridad de aplicación en el ámbito de la Administración
Electrónica, es el de la seguridad por defecto

Objetivo: reducir la superficie de ataque de una aplicación o sistema.

Seguridad del Software- Javier Bermejo Higuera


Principios diseño seguridad software

Seguridad del Software- Javier Bermejo Higuera


Principios diseño y practicas de seguridad del software
• Atributos de Seguridad del Software

Esenciales Confidencialidad Integridad Disponibilidad

Security Attributes
Autenticación Fiabilidad Trazabilidad

Complementarias
Robustez Resiliencia Tolerancia

Defensa en Profundidad Mínimo Privilegio Separación de Privilegios

Separación código,
Entorno de producción o Registro de eventos de
ejecutables y datos
ejecución inseguro seguridad
configuración y programa
Diseño
Diseño de software La seguridad por
Fallar de forma segura
resistente oscuridad: error

Separación de
Seguridad por defecto Simplicidad de Diseño
Privilegios

Seguridad del Software- Javier Bermejo Higuera


Amenazas a la seguridad del software
 Principal objetivo de la seguridad del software

Mantener sus propiedades de seguridad frente a los ataques realizados por


personal malicioso sobre sus componentes y el poseer el mínimo posible
de vulnerabilidades explotables.

 Se necesita que el personal de diseño y desarrollo desarrollen dos


perspectivas:

El equipo trabaja para construir un software


con las propiedades de seguridad necesarias
Defensor
para que sea más resistente a los ataques y
minimizar las debilidades y vulnerabilidad

El equipo se esfuerza por comprender la


naturaleza exacta de la amenaza a la que le
Atacante
software es probable que se enfrente con el
fin de concentrar los esfuerzos defensivos

Seguridad del Software- Javier Bermejo Higuera


Tipos de S-SDLC
• Deben insertar buenas prácticas seguras de desarrollo en su proceso de
SDLC al objeto de obtener software más seguro o confiable.

Seguridad del Software- Javier Bermejo Higuera


Tipos de S-SDLC
McGraw’s Seven Touchpoints

Seguridad del Software- Javier Bermejo Higuera


Tipos de S-SDLC

Otras metodologías
► Microsoft Trustworthy Computing SDL.
► CLASP: Comprehensive Lightweight Application Security Process.
► Team Software Process (TSP).
► Oracle Software Security Assurance.
► Appropriate and Effective Guidance in Information Security (AEGIS).
► Rational Unified Process-Secure (RUPSec).
► Secure Software Development Model (SSDM).
► Waterfall-Based Software Security Engineering Process Model
► Building Security In Maturity Model (BSIMM) .
► Software Assurance Maturity Model (OPEN SAMM)

Seguridad del Software- Javier Bermejo Higuera


Tipos de S-SDLC
Seguridad en las Metodologías Agiles
Nº Principio Implicación
Prioridad principal es satisfacer al cliente. Esto se debe lograr de forma temprana y continua
1 a través de entrega de software utilizable. Obstructiva
Se permite el cambio de requisitos, incluso en la fase más tardía del proceso de desarrollo de
2 procesos. Ventaja competitiva. Obstructiva

Producción de frecuentes entregas de software. Idealmente, varías a la semanas. Se da


3 Obstructiva
preferencia a la reducción de los tiempos de entrega.
El proyecto es construido en base al compromiso, motivación y participación de sus
4 Neutral
componentes
Los clientes, gerentes y desarrolladores deben colaborar diariamente, durante todo el
5 Neutral
desarrollo del proyecto.
Los desarrolladores deben tener el medio ambiente y apoyo que necesitan.
6 Neutral
La dirección y el cliente confían en el trabajo hecho por los desarrolladores.
7 Obstructiva
La forma más eficiente y eficaz método de transmitir información a los componentes de un
8 equipo de desarrollo es a través de la comunicación cara a cara. Obstructiva
La producción de programas útiles es la principal medida del éxito. Obstructiva
9
La agilidad se ve reforzada por la continua atención a la excelencia técnica y buen diseño.
10 Contributiva
Sencillez, que se define como el arte de maximizar la cantidad de trabajo no realizado, es
11 esencial para el éxito de proyectos de software Contributiva

Seguridad del Software- Javier Bermejo Higuera


Lo pilares de seguridad del software
1. Método o proceso para ayudar a solucionar el problema de la seguridad
del Software
2. Cambio cultural de sus desarrolladores en los que respecta sobre todo en
no anteponer la seguridad respecto de la funcionalidad
3. Independiente del modelo o tipo del ciclo de vida del software que se esté
utilizando y basado en tres pilares fundamentales

Seguridad del Software- Javier Bermejo Higuera


Metodologías y estándares
• Las metodologías y estándares → Guías de comportamiento específicas
destinadas a aplicar una política.
• Su aplicación a la Seguridad del Software consiste en el desarrollo de
procesos que implementen prácticas de seguridad en todas las fases del
ciclo de vida de desarrollo de software.
• Organizaciones deben implantar un:

Seguridad del Software- Javier Bermejo Higuera 49


Metodologías y estándares
• Seguridad del software versus aseguramiento de la calidad

 Aseguramiento de la Calidad → funcionalidad

 Seguridad del software → mínimo de vulnerabilidades

Seguridad del Software- Javier Bermejo Higuera


Metodologías y estándares
• ISO / IEC 15026: 2006
Procesos del ciclo de
Procesos de Gestión
vida Expectativas y
Técnicos
Resultados
Aseguramiento
Necesidades
2. Plan
Plan Aseguramiento
actividades
Información Riesgos aseguramiento
Actividades Plan aseguramiento
Caso Seguridad
Datos Mejora

gestión de
riesgos 3. Establecer y
mantener el
Caso Seguridad
Medidas Seguridad
Actividades de Caso Seguridad
Medidas Seguridad
medidas 4. Monitorizar
las actividades
de
aseguramiento y
productos

Seguridad del Software- Javier Bermejo Higuera


Metodologías y estándares
• System Security Engineering Capability Maturity Model (SSE-CMM
norma ISO/IEC 21827).

Seguridad del Software- Javier Bermejo Higuera


Metodologías y estándares
• SSE-CMM Áreas de Procesos de ingeniería seguridad

AREA DE PROCESOS
1. Administrar los controles de seguridad
2. Evaluar el impacto
3. Evaluar riesgos de seguridad
4. Valoración de la amenaza
5. Valoración vulnerabilidades
6. Construir argumentos seguridad
7. Coordinar la seguridad
8. Monitorización seguridad
9. Seguridad en la entradas
10. Especificar las necesidades de seguridad
11. Verificar y validar la seguridad

Seguridad del Software- Javier Bermejo Higuera


Metodologías y estándares
• 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.

Seguridad del Software- Javier Bermejo Higuera


Metodologías y estándares
"La seguridad es un "La seguridad de las
• ISO/IEC 27034-1, requisito" aplicaciones depende del
contexto" El tipo y el alcance
de los requisitos de seguridad
Los requisitos deben
Information technology definirse y analizarse para
de las aplicaciones están
influenciados por los riesgos
cada etapa del ciclo de asociados con la aplicación
vida de la aplicación y que vienen en forma de (1)
Security techniques. gestionarse de forma negocio; (2) normas (3)
tecnologías.
continua.

Application security

 Los principios
definidos para este
estándar incluyen: "Se debe demostrar la "Inversión acorde al
seguridad de la aplicación" nivel de seguridad de la
aplicación"
El proceso de auditoría se
apoya en las evidencias
Los costes para aplicar los
verificables proporcionada por
los controles de seguridad de controles de seguridad a
la aplicación. Validan si ha aplicaciones y realizar las
alcanzado el nivel de mediciones deben
confianza especificado alinearse con el Nivel de
confianza específico

Seguridad del Software- Javier Bermejo Higuera


Metodologías y estándares
• ISO/IEC 27034-1, Information technology Security techniques.
Application security
 Relación con otras Normas Internacionales

Seguridad del Software- Javier Bermejo Higuera


Metodologías y estándares
• ISO / IEC 24772. Information technology -- Programming languages --
Guidance to avoiding vulnerabilities in programming languages through
language selection and use

Seguridad del Software- Javier Bermejo Higuera


PREGUNTAS

PREGUNTAS
Seguridad del Software- Javier Bermejo Higuera

También podría gustarte