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