Nombre del curso: | Programación segura |
---|---|
Course Name: | Secure Programming |
Créditos: | 4 |
Profesor: | Martín Ochoa y Juan David Guarnizo |
Programación segura
Descripción general del curso
Múltiples incidentes de impacto global causados por vulnerabilidades en el software utilizado por sistemas distribuidos demuestran la importancia de diseñar, desarrollar y mantener software que sea confiable y seguro. A pesar de que estos incidentes han ganado notoriedad en la prensa, y han impactado a millones de usuarios a nivel mundial, como en los casos de Heartbleed (2014, en OpenSSL), WannaCry (2017, en el protocolo SMB de Windows) o Log4Shell (2021, en Apache Log4j), el número de vulnerabilidades reportadas sigue en aumento. De acuerdo con la base de datos CVE (Common Vulnerabilities and Exposures), el número de reportes por año ha aumentado considerablemente en los últimos años, con un crecimiento del 38% entre 2023 y 2024. En este curso los estudiantes explorarán con un enfoque integral la relevancia y comprensión de la ciberseguridad en el ciclo de vida del desarrollo de software (SDLC). Se expondrán propiedades fundamentales de seguridad y varias definiciones de la literatura científica y de los estándares actuales. Discutiremos escenarios comunes de vulnerabilidades en el diseño e implementación de aplicaciones, incluyendo aplicaciones nativas, web y descentralizadas (Web3/dApps). Revisaremos los impactos de vulnerabilidades y errores comunes en relación con las propiedades formales de ciberseguridad y las mejores prácticas. Este curso incluye sesiones teóricas, talleres prácticos y un proyecto continuo que permitirán obtener una comprensión profunda de los fundamentos, retos actuales y soluciones existentes en la disciplina de la programación segura. A lo largo del curso, se fomentará una visión crítica y analítica, basada en estudios de caso reales y vulnerabilidades ampliamente documentadas, con el fin de fortalecer la capacidad de los estudiantes para evaluar riesgos, tomar decisiones informadas y aplicar principios de diseño seguro desde las principales etapas del desarrollo de software.
Objetivos del curso
El objetivo del curso es que los participantes tengan la habilidad de:
• comprender los fundamentos y características principales de la seguridad de la información en el contexto del desarrollo de software.
• Identificar y examinar riesgos y amenazas en las diversas fases del ciclo de vida del desarrollo de software.
• Descubrir y mitigar vulnerabilidades frecuentes presentes en aplicaciones web, nativas y descentralizadas.
• Implementar técnicas de evaluación de seguridad tanto de “caja negra” (black box) y “caja blanca” (white box).
• Usar herramientas de análisis estático y dinámico para identificar deficiencias en software.
• Integrar prácticas de seguridad en pipelines de integración y entrega continua (CI/CD) en conformidad con los principios de DevSecOps.
Profesores
Marin Ochoa Ronderos
Martín Ochoa es matemático e ingeniero de sistemas, y realizó estudios de doctorado en ciencias de la computación, con énfasis en el diseño de sistemas seguros, en la Technische Universität Dortmund (Alemania). Se desempeña como ingeniero auditor de sistemas criptográficos en la empresa zkSecurity. Ha sido docente e investigador en la Technische Universität München (TUM), Singapore University of Technology and Design (SUTD), la Universidad del Rosario, ETH Zurich y Zurich University of Applied Sciences (ZHAW). Además, ha trabajado como investigador en seguridad y consultor para Siemens AG en Múnich (Alemania), y como gerente de investigación en AppGate Inc.
Juan David Guarnizo Hernandez
Juan Guarnizo cuenta con más de doce años de experiencia en el ámbito académico y privado como ingeniero e investigador en ciberseguridad. Completó su maestría en seguridad de la información en la Universidad de los Andes mientras trabajaba a tiempo completo en el sector financiero colombiano como ingeniero de seguridad informática. En 2022, completó sus estudios de doctorado en la Universidad de Tecnología y Diseño de Singapur (SUTD por sus siglas en inglés), donde se dedicó principalmente a la investigación de Blockchains y sus aplicaciones en ciberseguridad. Posteriormente, se incorporó al grupo de seguridad de la información en ETH Zúrich como investigador sénior (postdoctorado) y participó en investigación de visión artificial y sus aplicaciones para la detección y prevención del fraude documental. Actualmente, es consultor técnico y líder de ingeniería para thenti GmbH y profesor adjunto del curso de programación segura de la maestría en seguridad de la información en la Universidad de los Andes.
