Logo UAB
2021/2022

Seguridad y Vulnerabilidad del Software

Código: 104376 Créditos ECTS: 6
Titulación Tipo Curso Semestre
2503758 Ingeniería de Datos OT 4 0
La metodología docente y la evaluación propuestas en la guía pueden experimentar alguna modificación en función de las restricciones a la presencialidad que impongan las autoridades sanitarias.

Contacto

Nombre:
Elisa Ruth Heymann Pignolo
Correo electrónico:
Elisa.Heymann@uab.cat

Uso de idiomas

Lengua vehicular mayoritaria:
español (spa)
Algún grupo íntegramente en inglés:
No
Algún grupo íntegramente en catalán:
No
Algún grupo íntegramente en español:

Prerequisitos

Dominio de algún lenguaje de programación:  Java, Python o C/C++.

Objetivos y contextualización

El estudiante aprenderá sobre secguridad del software durante todas las etapas del ciclo de desarrollo del software (SDLC):  Metodologías para diseñar software seguro, programar utilizando técnicas de programación segura, metodologías para la evaluación de vulnerabilidades en profundidad (auditoría de software), herramientas estáticas y dinámicas de análisis de codigo para detectar vulnerabilidadesm y defensas del sistema para reducir amenzadas de seguridad.

Competencias

  • Concebir, diseñar e implementar sistemas de almacenamiento de datos de forma eficiente y segura.
  • Prevenir y solucionar problemas, adaptarse a situaciones imprevistas y tomar decisiones.
  • Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía.
  • Que los estudiantes tengan la capacidad de reunir e interpretar datos relevantes (normalmente dentro de su área de estudio) para emitir juicios que incluyan una reflexión sobre temas relevantes de índole social, científica o ética.
  • Trabajar cooperativamente, en entornos complejos o inciertos y con recursos limitados, en un contexto multidisciplinar, asumiendo y respetando el rol de los diferentes miembros del equipo.

Resultados de aprendizaje

  1. Estudiar las adaptaciones que se realizan a los algoritmos de análisis y consulta de datos para que preserven la privacidad de los datos de entrada, de los modelos aprendidos o de las salidas de los modelos usados en el ámbito de business intelligence.
  2. Prevenir y solucionar problemas, adaptarse a situaciones imprevistas y tomar decisiones.
  3. Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía.
  4. Que los estudiantes tengan la capacidad de reunir e interpretar datos relevantes (normalmente dentro de su área de estudio) para emitir juicios que incluyan una reflexión sobre temas relevantes de índole social, científica o ética.
  5. Trabajar cooperativamente, en entornos complejos o inciertos y con recursos limitados, en un contexto multidisciplinar, asumiendo y respetando el rol de los diferentes miembros del equipo.

Contenido

1. Introdución y terminología básica.

2. Pensar como un atacador.

3. Programación segura:

3.1. Buffer overflow.

3.2. Errores numéricos.

3.3. Serialización.

3.4. Excepciones.

3.5. Ataques de injección.

3.5.1. Injección SQL.

3.5.2. Injección de comandos.

3.5.3. Injección XML.

3.5.4. Injección de código.

3.6. Directory traversal.

3.7. Atques Web.

3.7.1. Cross Site Scripting (XSS)

3.7.2. Cross Site Request Forgery (CSRF).

3.7.3. Gestión de sesiones.

3.7.4. Redirecciones.

3.8. Seguridad en dispositivos móviles.

4. Diseño seguro.  Modelado de riesgos.

5. Detección de vulnerabilidades.  Metodología FPVA.

6. Herramientas de detección de vulnerabilidades.

7. Fuzz testing.

 

Metodología

Hay 4 horas de docencia a la semana, repartidas en 2 sesiones de 2 horas.  Durante cada sesión se expondrá un tema teórico y se realizarán ejercicios prácticos relacionados con el tema expuesto.  Para ello es necesario que los alumnos tengan su propio portátil. 

El contenido de cada clase se detallará en la prgramación que estará disponible en campus virtual antes del primer día de clase.

Nota: se reservarán 15 minutos de una clase dentro del calendario establecido por el centro o por la titulación para que el alumnado rellene las encuestas de evaluación de la actuación del profesorado y de evaluación de la asignatura o módulo.

Actividades

Título Horas ECTS Resultados de aprendizaje
Tipo: Dirigidas      
Actividades autónomas 100 4 1, 2, 3, 4, 5
Clases teóricas con ejercicios prácticos 44 1,76 1, 2, 3, 4, 5

Evaluación

Se realizarán 2 o 3 pruebas escritas durante el cuatrimestre.  Esas pruebas tendrán un peso de 60% del total de la calificaciación de la asignatura.

Cada tema tendrá un ejercio práctico.  Asociado a cada ejercicio los alumnos tendrán que entregar un pequeño informe.  El peso de estos ejercicios es 40%.

 

Actividades de evaluación

Título Peso Horas ECTS Resultados de aprendizaje
2 o 3 controles de teoría 60% 3 0,12 1, 2, 3, 4, 5
Ejercicios prácticos 40% 3 0,12 1, 2, 3, 4, 5

Bibliografía

Introduction to Software Security por Loren Kohnfelder, Elisa Heymann y Barton Miller. Disponible en: http://research.cs.wisc.edu/mist/SoftwareSecurityCourse/

Software

Los alumnos recibirán una imagen de VirualBox que contendrá todo el software necesario para realizar los la mayoría ejercicios de la asignatura.  Este software incluye lenguajes de programación y múltiples herramientas.

Los alumnos deberán descargar e instalar Android studio para programar dispositivos móviles.

Igualmente tendrán que descargar MS Thread Modeling Tool.