3.7.3 IAS/Programación Defensiva (1 horas Core-Tier1, 2 horas Core-Tier2)
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
Ref: Métodos de Desarrollo
- 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
Ref: Métodos de Desarrollo , Construcción de Software
- Las condiciones de carrera.
Ref: Paralelismo , Arquitecturas paralelas , Comunicación y coordinación , Fundamentos de paralelismo , Programación paralela vs concurrente. Programming, Memoria compartida vs memoria distribuida. Vs, Memoria Compartida. Memory, Errores de Programación ausentes en programación secuencial:
- Tipos de Datos ( lectura/escritura simultánea o escritura/escritura compartida)
- Tipos de Nivél más alto (interleavings violating program intention, no determinismo no deseado)
- Falta de vida/progreso (deadlock, starvation)
Errors
- Manejo correcto de las excepciones y comportamientos inesperados.
Ref: Métodos de Desarrollo
Core Tier2
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