Programación de código seguro Código:  M1.807    :  6
Consulta de los datos generales   Descripción   La asignatura en el conjunto del plan de estudios   Campos profesionales en el que se proyecta   Conocimientos previos   Información previa a la matrícula   Objetivos y competencias   Contenidos   Consulta de los recursos de aprendizaje de los que dispone la asignatura   Informaciones sobre la evaluación en la UOC   Consulta del modelo de evaluación  
ATENCIÓN: Esta información recoge los apartados del plan docente de la asignatura durante el último semestre con docencia. Al iniciar el periodo de matrícula, podrás consultar el calendario y modelo de evaluación para el siguiente semestre en Trámites / Matrícula / Horarios de las pruebas de evaluación final.

Se trata de una asignatura que no enseña a programar, sino que, por un lado, muestra la necesidad de emplear técnicas seguras para no crear vulnerabilidades fácilmente aprovechables por los hackers y, de la otra, describe las técnicas de programación existentes para realizar un software seguro. Así pues, la asignatura es fundamentalmente práctica, a partir de la cual los estudiantes tendrán que recrear situaciones de vulnerabilidad y proponer  soluciones para evitarlas.

  • Se muestran los conocimientos básicos para entender donde se producen las vulnerabilidades de los programas informáticos
  • Se ve como modificar el comportamiento de un ejecutable a partir de la modificación del fichero binario mediante las herramientas adecuadas
  • Se muestran las técnicas que se tienen que tener en cuenta a la hora de diseñar e implementar las aplicaciones para no tener vulnerabilidades.

Amunt

La asignatura de Programación de código seguro se desarrolla en el plan de estudios del Máster Interuniversitario de seguridad de las TIC (UOC-UAB-URV) y dentro de este máster, más concretamente en el itinerario académico de la especialidad de seguridad en servicios y aplicaciones, tiene una duración semestral y consta de un total de 6 créditos académicos ECTS.

ECTS es la sigla de European credit transfer system ('sistema europeo de transferencia de créditos'). El ECTS se centra en la actividad del estudiante y se basa en la carga de trabajo necesaria para alcanzar los objetivos de un programa. Un crédito ECTS equivale a 25 horas.

Así pues, la dedicación prevista en la asignatura es de 150 horas.

Amunt

Programadores de aplicaciones informáticas, diseñadores y analistas de aplicaciones, jefes de proyectos, jefes de departamento de informática, auditores de seguridad, tanto internos como externos.
 
Algunos ejemplos del tipo de destinatarios o de salidas profesionales son:
 
  • Jefe de proyectos de seguridad TIC:
Profesional responsable del diseño, el desarrollo y la adecuación de controles de seguridad informática.
  • Experto en el desarrollo de aplicaciones y servicios web seguros:
Responsable del diseño y la programación de controles de seguridad (control de acceso, funciones criptográficas, filtros, bitácoras de seguridad de aplicaciones, etc.); análisis de aplicaciones robustas a vulnerabilidades de seguridad; preparación de librerías con funciones de seguridad para su uso por parte del área de desarrollo de sistemas; soporte de seguridad para el área de desarrollo de sistemas; consultoría de desarrollos seguros (integración de seguridad en aplicaciones desarrolladas para sistemas).
  • Especialista en sistemas de registro web y control de acceso:
Analista / programador de servicios de registro y federación de identidades.
  • Consultor de proyectos de administración electrónica:
Responsable del análisis, el diseño y la programación de proyectos de la administración electrónica.
  • Consultor de comercio y banca electrónica:
Responsable del análisis, el diseño y la programación de proyectos de banca y transacciones comerciales electrónicas.
 

Amunt

No son necesarios conocimientos previos, aún así hay que tener en cuenta que los contenidos de esta asignatura están relacionados en el desarrollo de software, tanto en en torno a escritorio como en entorno web.

Los conocimientos relacionados para la realización de este curso son los propios de los estudios de Ingeniería Técnica en Informática, Ingeniería Informática, Grado de informática, Grado de Multimedia, Grado de las tecnologías de Telecomunicación e Ingeniería en Telecomunicaciones.

A los estudiantes que tengan un título universitario en otras ramas de Ingeniería y Arquitectura o en la rama de Ciencias en las áreas de Matemáticas, Física o Estadística, los conocimientos en desarrollo de software los ayudarán al logro de la asignatura.

Amunt

La información previa a la matrícula de esta asignatura que hay que tener en cuenta es la propia a la de acceso al Máster interuniversitario de Seguridad de las tecnologías de la información y las comunicaciones. Este máster va dirigido a ingenieros, ingenieros técnicos, licenciados o graduados en el área de las Tecnologías de la Información y de las Comunicaciones.

Pueden acceder al máster interuniversitario de Seguridad de las tecnologías de la información y de las comunicaciones:

  • Los estudiantes que tengan un título universitario oficial español o bien un título expedido por una institución de educación superior del EEES que faculte en el país expedidor del título para acceder a enseñanzas oficiales de máster en alguna de las siguientes áreas:
    • Titulaciones de la rama de Ingeniería y Arquitectura
    • Titulaciones de la rama de Ciencias en las áreas de Matemáticas, Física o Estadística
  • La admisión de estudiantes de otras áreas quedará supeditada a una evaluación de la Comisión de Coordinación del máster que determinará la admisión del solicitante según su formación previa y experiencia profesional.

Amunt

Objetivos

La asignatura está estructurada alrededor de contenidos y actividades que permitirán a los estudiantes lograr los objetivos siguientes a lo largo de la duración del periodo formativo:

  1. Comprender donde y porque existen vulnerabilidades en el software.
  2. Saber modificar el comportamiento de un fichero ejecutable
  3. Utilizar las herramientas de análisis de código ejecutable.
  4. Saber como protegerse de estas vulnerabilidades.
  5. Diseñar aplicaciones seguras.

 

Competencias

La asignatura está estructurada alrededor de contenidos y actividades que permitirán a los estudiantes adquirir las siguientes competencias específicas de la asignatura y las transversales de la universidad.

Competencias específicas

  • Conocer los tipos y consequències de las vulnerabilidades y de los exploits
  • Uso de las bases de datos de exploits
  • Utilizar las herramientas de sistemas de explotación
  • Conocer las metodologías en el diseño de aplicaciones seguras
  • Aplicación de los tests de seguridad
  • Aplicación de las buenas prácticas en el desarrollo de software seguro
  • Diferenciar las partes de código seguro y el de no seguro
  • Conocer por qué, como, cuando un código puede ser o no seguro
  • Conocer las consecuencias del código no seguro
  • Conocer las técnicas y tácticas de los hackers

Competencias transversales

Las competencias transversales se incluyen en todas las titulaciones de la Universitat Oberta de Catalunya, las cuales constituyen un elemento distintivo de todo graduado UOC.

  • Comunicar, intercambiar y construir conocimiento en un entorno virtual en el marco de una comunidad de aprendizaje
  • Colaborar, compartir y publicar información relativa en la seguridad de los sistemas informáticos
  • Debatir y compartir las experiencias propias en el ámbito de la seguridad
  • Capacidad de comunicar información técnica y especializada de forma clara.
  • Uso del inglés en el ámbito de las TIC.
  • Capacidad para actualizar las competencias profesionales, consiguiendo una adaptación continua en el ámbito de la seguridad en de las tecnologías de la información tanto en el presente como en el futuro.
  • Capacidad para detectar y resolver problemas de seguridad en la programación
  • Capacidad de análisis en el ámbito de la seguridad
  • Iniciativa emprendedora

 

. Metodología 

El curso se realiza de forma on-line, por lo cual, tanto la comunicación con el alumnado como el desarrollo íntegro de la asignatura se hace desde el aula virtual.

El alumnado dispone de un entorno estructurado en varios bloques desde los cuals puede acceder a la documentación de referencia, los enunciados de las actividades a realizar y a los materiales y recursos disponibles, así como en las áreas de debate, a los foros y a todo aquello necesario para el desarrollo del curso.

Hay que tener en cuenta que algunas de las actividades se basan en trabajos que se tienen que realizar haciendo uso de herramientas web 2.0 asequibles y gratuitas para favorecer el trabajo colaborativo y la construcción de conocimiento.

El en torno a aprendizaje de la UOC es el elearning y en el modelo educativo constructivista que se aplica, las actividades de aprendizaje son el elemento clave del modelo educativo de la UOC, el núcleo alrededor del cual se organiza la docencia y se da sentido al aprendizaje de los estudiantes: los recursos de aprendizaje, la colaboración y el acompañamiento.

En este modelo constructivista de forma resumida se pueden denominar los siguientes roles del estudiante y del docente:

  • Estudiante
    • Aprendizaje centrado en el alumno, aprender haciendo y construyendo, resolución de problemas, simulación de supuestos prácticos.
    • Compromiso activo, responsable de su propio aprendizaje
    • Colaborativo, participación en grupos
    • Constructor del conocimiento
    • Interacción entre los compañeros, cooperación
    • Intercambio de ideas, opiniones
  • Docente
    • Acompaña el estudiante
    • Comparte experiencias
    • Facilita conocimiento
    • Dinamiza, impulsa e incentiva

 

.Sistema de Evaluación

La evaluación continua (también llamada evaluación formativa) es el eje fundamental del modelo educativo de la UOC y es la que se aplica en la asignatura de Programación de código seguro.

La evaluación continua (AC) consiste en la realización y superación de una serie de pruebas de evaluación continua (PEC) establecidas en el plan de aprendizaje de la asignatura. 

El proceso de evaluación se realiza a lo largo del desarrollo de la asignatura y de aquí la importancia de ir acompañando el desarrollo de las actividades de manera sostenida y con un alto grado de implicación personal y con el grupo.

La finalidad de la evaluación será formativa y continua, y con esto se pretende valorar el progreso del estudiante desde el punto de vista de su proceso de aprendizaje.

La evaluación se encargará de dar información, a las dos partos, sobre el proceso de aprendizaje del alumnado. Para determinar las actividades de evaluación hay que tener en cuenta tres factores. Por un lado la autenticidad, es decir, que las actividades de evaluación sean reales; que creen una interactividad entre el profesorado y el alumnado; que sean multidimensionals donde se integren conocimientos, destrezas y diferentes habilidades; y, por lo tanto, que se trate de una experiencia no sólo evaluadora, sino también de una experiencia útil y significativa.

Tenemos que tener en cuenta que el proceso avaluatiu de la asignatura tiene una intención formativa, es decir, enseñar, aprender y evaluar forman parte del mismo proceso.

El docente llevará a cabo un seguimiento constante de todas las actividades que el alumnado vaya confeccionando dentro del marco del aprendizaje, teniendo en cuenta, en todo momento, el seguimiento de un modelo constructivista centrado en el alumno.

Cada prueba de evaluación consta de varios tipos de actividades: resolución de cuestiones teóricas y supuestos prácticos, así como actividades colaborativas ya sea en formato de debate, blogs, wiki, etc. Además, en cada una de las pruebas de evaluación se especifica para cada actividad el peso que supone en la calificación global de la prueba.

En general se aplicarán dos tipos de criterios de evaluación en función del tipo de actividad: colaborativas o pruebas escritas.

Pruebas escritas

En este tipo de pruebas el estudiante tiene que mostrar las competencias adquiridas mediante el trabajo personal.

Se valora que el estudiante procese correctamente la información manejada, que sistematice los conocimientos adquiridos, que aplique los conocimientos a la solución de situaciones de carácter profesional, que muestre competencias de reflexión y de síntesis y que sea capaz de comunicar ideas y de elaborar conclusiones. También se valora la presentación, la capacitado resolución, de análisis y de investigación.

Actividades colaborativas

Para este tipo de actividades (participación en wikispace, debates, blogs, etc) se tendrán en cuenta la relevancia del contenido de las aportaciones y el grado de participación.

Amunt

  • Módulo 1 Exploits
    • Bugs
    • Vulnerabilidades
    • Bases de datos de vulnerabilidades
    • Exploits
    • Tipo de exploits
    • Sistemas de explotación
    • El mercado de los exploits
  • Módulo 2 Herramientas
    • Depuradores
    • Compiladores
  • Módulo 3 Diseño de aplicaciones seguras
    • Ciclo de vida del desarrollo de software seguro
    • Evaluación de riesgos
    • Modelado de amenazas
    • Técnicas de seguridad
  • Módulo 4 Testing y buenas prácticas
    • Test de seguridad
    • Revisión de código seguro
    • Buenas prácticas
  • Módulo 5 Código seguro
    • Integer overflow
    • Desbordamiento de pila (stack overflow)
    • Desbordamiento de heap. 
    • Funciones vulnerables
  • Módulo 6 Shellcodes
    • Escritura de shellcodes. 
    • Shellcodes por entrada estándar
    • Shellcodes alfanuméricos
    • Un ejemplo de shellcode. 
    • Dirección de la función para llamar
    • El shellcode en ensamblador
    • El shellcode en binario
    • El exploit con el shellcode

Amunt

Amunt

La Normativa académica de la UOC dispone que el proceso de evaluación se fundamenta en el trabajo personal del estudiante y presupone la autenticidad de la autoría y la originalidad de los ejercicios realizados.

La falta de originalidad en la autoría o el mal uso de las condiciones en las que se hace la evaluación de la asignatura es una infracción que puede tener consecuencias académicas graves.

El estudiante será calificado con un suspenso (D/0) si se detecta falta de originalidad en la autoría de alguna actividad evaluable (práctica, prueba de evaluación continua (PEC) o final (PEF), o la que se defina en el plan docente), ya sea porque ha utilizado material o dispositivos no autorizados, ya sea porque ha copiado de forma textual de internet, o ha copiado de apuntes, de materiales, manuales o artículos (sin la citación correspondiente) o de otro estudiante, o por cualquier otra conducta irregular.

La calificación de suspenso (D/0) en la evaluación continua (EC) puede conllevar la obligación de hacer el examen presencial para superar la asignatura (si hay examen y si superarlo es suficiente para superar la asignatura según indique este plan docente).

Cuando esta mala conducta se produzca durante la realización de las pruebas de evaluación finales presenciales, el estudiante puede ser expulsado del aula, y el examinador hará constar todos los elementos y la información relativos al caso.

Además, esta conducta puede dar lugar a la incoación de un procedimiento disciplinario y la aplicación, si procede, de la sanción que corresponda.

La UOC habilitará los mecanismos que considere oportunos para velar por la calidad de sus titulaciones y garantizar la excelencia y la calidad de su modelo educativo.

Amunt

La fórmula de acreditación de la asignatura es la siguiente: (EC+Pr) o EX Vir.

 
 

Amunt