3.7.3 IAS/Programación Defensiva (2 horas Core-Tier1)
Temas en la programación defensiva en general no se piensa en el aislamiento, pero aplicados a otros temas en particular en SDF, SE y PD Áreas de Conocimiento.
Temas:
Core Tier1
- Validación de datos de entrada y sanitización
- Elección del lenguaje de programación y lenguajes con tipos de datos seguro.
- Ejemplos de validación de entrada de datos y sanitización de errores.
- Desbordamiento de búfer
- Errores enteros
- Inyección SQL
- Vulnerabilidad XSS
- Las condiciones de carrera.
- Manejo correcto de las excepciones y comportamientos inesperados.
Core Tier2
- Uso correcto de los componentes de terceros.
- Desplegar eficazmente las actualizaciones de seguridad.
Electivo
- Información de control de flujo.
- Generando correctamente el azar con fines de seguridad.
- Mecanismos para la detección y mitigación de datos de entrada y errores de sanitización.
- Fuzzing
- El análisis estático y análisis dinámico.
- Programa de verificación.
- Soporte del sistema operativo (por ejemplo, la asignación al azar del espacio de direcciones, canarios)
- El soporte de hardware (por ejemplo, el DEP, TPM)
Objetivos de Aprendizaje:
Core-Tier1:
- Explicar por que la validación de entrada y desinfección de datos es necesario en el frente del control contencioso del canal de entrada [Familiarizarse]
- Explicar por que uno deberia escoger para desallorrar un programa en un lenguaje tipo seguro como Java, en contraste con un lenguaje de programación no seguro como C/C++ [Familiarizarse]
- Clasificar los errores de validación de entrada común, y escribir correctamente el código de validación de entrada [Usar]
- Demostrar el uso de un lenguaje de programación de alto nivel cómo prevenir una condición de competencia que ocurran y cómo manejar una excepción [Usar]
- Demostrar la identificación y el manejo elegante de las condiciones de error [Usar]
Core-Tier2:
- Explique los riesgos de mal uso de las interfaces con código de terceros y cómo utilizar correctamente el código de terceros [Familiarizarse]
- Discutir la necesidad de actualizar el software para corregir las vulnerabilidades de seguridad y la gestión del ciclo de vida de la corrección [Familiarizarse]
Elective:
- Listar ejemplos de flujos de información directa e indirecta [Familiarizarse]
- Explicar la función de números aleatorios en la seguridad, más allá de la criptografía (por ejemplo, la generación de contraseñas, algoritmos aleatorios para evitar la negación algorítmica de los ataques del servicio) [Familiarizarse]
- Explicar los diferentes tipos de mecanismos para detectar y mitigar los errores de desinfección de datos [Familiarizarse]
- Demostrar cómo se prueban los programas para el manejo de errores de entrada [Usar]
- Usar herramientas estáticas y dinámicas para identificar errores de programación [Usar]
- Describir cómo se utiliza la arquitectura de memoria para proteger de ataques en tiempo de ejecución [Familiarizarse]
Generado por Ernesto Cuadros-Vargas , Sociedad Peruana de Computación-Peru, basado en el modelo de la Computing Curricula de IEEE-CS/ACM