Curso de C/C++ Secure Coding
Acerca de este curso
> Módulo 1. “Corriendo con tijeras”
Medir la amenaza
Conceptos de seguridad
C y C++
Plataformas de desarrollo
> Módulo 2. Strings
Cadenas de caracteres
Errores comunes de manipulación de cadenas
Exploits y vulnerabilidades de cadenas
Estrategias de mitigación para cadenas
Funciones de manejo de cadenas
Estrategias de protección en tiempo de ejecución
Vulnerabilidades notables
> Módulo 3. Subterfugio del Puntero
Ubicaciones de datos
Punteros de función
Punteros de objeto
Modificación del puntero de instrucción
Tabla de compensación global
La sección .dtors
Punteros virtuales
Las funciones atexit() y on_exit()
La función longjmp()
Manejo de excepciones
Estrategias de mitigación
> Módulo 4. Gestión dinámica de la memoria
Gestión de memoria C
Errores comunes de administración de memoria C
Gestión de memoria dinámica de C++
Errores comunes de administración de memoria de C++
Administradores de memoria
Asignador de memoria de Doug Lea
Vulnerabilidades doblemente libres
Estrategias de mitigación
Vulnerabilidades notables
> Módulo 5. Seguridad de integers
Introducción a la seguridad de enteros
Tipos de datos enteros
Conversiones de enteros
Operaciones con enteros
Vulnerabilidades de enteros
Estrategias de mitigación
> Módulo 6. Salida formateada
Funciones Variádicas
Funciones de salida con formato
Explotación de funciones de salida formateadas
Aleatorización de pila
Estrategias de mitigación
Vulnerabilidades notables
> Módulo 7. Concurrencia
Subprocesos múltiples
Paralelismo
Metas de desempeño
Errores comunes
Estrategias de mitigación
Trampas de mitigación
Vulnerabilidades notables
> Módulo 8. E/S de archivos
Conceptos básicos de E/S de archivos
Interfaces de E/S de archivos
Control de acceso
Identificación de archivos
Condiciones
Estrategias de mitigación
> Módulo 9. Prácticas recomendadas
El ciclo de vida de Desarrollo Seguro
Diseño
Implementación
Verificación