Programa del Curso
Día 1
- Seguridad informática y codificación segura
- Naturaleza de la seguridad
- Términos relacionados con la seguridad informática
- Definición de riesgo
- Diferentes aspectos de la seguridad informática
- Requisitos de las diferentes áreas de aplicación
- Seguridad de TI frente a codificación segura
- De las vulnerabilidades a las botnets y la ciberdelincuencia
- Naturaleza de las fallas de seguridad
- Razones de dificultad
- De un ordenador infectado a ataques dirigidos
- Clasificación de los fallos de seguridad
- Taxonomía de Landwehr
- Los Siete Reinos Perniciosos
- OWASP Los diez mejores de 2013
- OWASP Comparación de los diez mejores entre 2003 y 2013
- Introducción al ciclo ® de vida de desarrollo de seguridad (SDL)
- Agenda
- Aplicaciones bajo ataque...
- Evolución de la ciberdelincuencia
- Los ataques se centran en las aplicaciones
- La mayoría de las vulnerabilidades se encuentran en aplicaciones ISV más pequeñas
- Orígenes de la Microsoft SDL...
- Cronología de seguridad en Microsoft...
- ¿Qué aplicaciones deben seguir SDL?
- Microsoft Ciclo de vida del desarrollo de la seguridad (SDL)
- Microsoft Ciclo de vida del desarrollo de la seguridad (SDL)
- Requisitos previos a SDL: Formación en seguridad
- Primera fase: Requisitos
- Segunda fase: Diseño
- Tercera fase: Implementación
- Cuarta fase: Verificación
- Fase Cinco: Liberación – Plan de Respuesta
- Fase cinco: Lanzamiento – Revisión de seguridad final
- Fase Cinco: Lanzamiento – Archivo
- Requisito posterior al SDL: Respuesta
- Guía de procesos de SDL para aplicaciones de línea de negocio
- Guía de SDL para metodologías Agile
- El desarrollo de software seguro requiere la mejora de los procesos
- Principios de diseño seguro
- Superficie de ataque
- Reducción de la superficie de ataque
- Superficie de ataque: un ejemplo
- Análisis de la superficie de ataque
- Reducción de la superficie expuesta a ataques: ejemplos
- Privacidad
- Privacidad
- Comprender los comportamientos y preocupaciones de las aplicaciones
- Defensa en profundidad
- Principio básico de SDL: Defensa en profundidad
- Defensa en profundidad: ejemplo
- Principio de privilegio mínimo
- Privilegio mínimo: ejemplo
- Valores predeterminados seguros
- Valores predeterminados seguros: ejemplos
- Superficie de ataque
- Principios de implementación segura
- Agenda
- Microsoft Ciclo de vida del desarrollo de la seguridad (SDL)
- Conceptos básicos de desbordamiento de búfer
- Procesadores Intel 80x86 – registros principales
- El diseño de la dirección de memoria
- El mecanismo de llamada a la función en C/C++ en x86
- Las variables locales y el marco de pila
- Desbordamiento de pila
- Desbordamiento de búfer en la pila
- Ejercicios – introducción
- Ejercicio BOFIntro
- Ejercicio BOFIntro: determinar el diseño de la pila
- Ejercicio BOFIntro: un exploit simple
- Validación de entradas
- Conceptos de validación de entrada
- Problemas con enteros
- Representación de números enteros negativos
- Desbordamiento de enteros
- Desbordamiento aritmético: ¡adivina el resultado!
- Ejercicio IntOverflow
- ¿Cuál es el valor de Math.Abs(int. MinValue)?
- Mitigación de problemas de enteros
- Mitigación de problemas de enteros
- Evitar el desbordamiento aritmético – suma
- Evitar el desbordamiento aritmético – multiplicación
- Detección de desbordamiento con la palabra clave marcada en C#
- Ejercicio – Usando la palabra clave checked en C#
- Excepciones desencadenadas por desbordamientos en C#
- Caso práctico: Desbordamiento de enteros en .NET
- Una vulnerabilidad de desbordamiento de enteros del mundo real
- Explotación de la vulnerabilidad de desbordamiento de enteros
- Vulnerabilidad de recorrido de ruta
- Mitigación de recorrido de ruta
Día 2
- Principios de implementación segura
- Inyección
- Métodos típicos de ataque de inyección SQL
- Inyección ciega y basada en el tiempo SQL
- SQL Métodos de protección contra inyecciones
- Inyección de comandos
- Autenticación rota: gestión de contraseñas
- Ejercicio – Debilidad de las contraseñas con hash
- Gestión y almacenamiento de contraseñas
- Algoritmos hash de propósito especial para el almacenamiento de contraseñas
- Secuencias de comandos entre sitios (XSS)
- Secuencias de comandos entre sitios (XSS)
- CSS Inyección
- Explotación: inyección a través de otras etiquetas HTML
- Prevención de XSS
- Falta control de acceso a nivel de función
- Filtrado de cargas de archivos
- Criptografía práctica
- Proporcionar confidencialidad con criptografía simétrica
- Algoritmos de cifrado simétrico
- Cifrados de bloques: modos de funcionamiento
- Hash o resumen de mensaje
- Algoritmos hash
- Código de autenticación de mensajes (MAC)
- Proporcionar integridad y autenticidad con una clave simétrica
- Proporcionar confidencialidad con cifrado de clave pública
- Regla general: posesión de clave privada
- Errores típicos en la gestión de contraseñas
- Ejercicio – Contraseñas codificadas de forma rígida
- Conclusión
- Inyección
- Principios de verificación segura
- Pruebas funcionales vs. pruebas de seguridad
- Vulnerabilidades de seguridad
- Priorización
- Pruebas de seguridad en el SDLC
- Pasos de la planificación de pruebas (análisis de riesgos)
- Determinación del alcance y recopilación de información
- Participantes
- Activo
- La superficie de ataque
- Objetivos de seguridad para las pruebas
- Modelado de amenazas
- Modelado de amenazas
- Perfiles de los atacantes
- Modelado de amenazas basado en árboles de ataque
- Modelado de amenazas basado en casos de uso indebido/abuso
- Casos de uso indebido/abuso: un ejemplo sencillo de tienda web
- Enfoque STRIDE por elemento para el modelado de amenazas: MS SDL
- Identificación de objetivos de seguridad
- Diagramación: ejemplos de elementos DFD
- Diagrama de flujo de datos: ejemplo
- Enumeración de amenazas: elementos STRIDE y DFD de MS SDL
- Análisis de riesgos: clasificación de amenazas
- El modelo de clasificación de amenazas/riesgos DREAD
- Técnicas y herramientas de pruebas de seguridad
- Enfoques generales de las pruebas
- Técnicas para varios pasos del SDLC
- Revisión de código
- Revisión de código para la seguridad del software
- Análisis de la contaminación
- Heurística
- Análisis de código estático
- Análisis de código estático
- Análisis de código estático
- Ejercicio: uso de herramientas de análisis de código estático
- Prueba de la implementación
- Verificación manual en tiempo de ejecución
- Pruebas de seguridad manuales vs. automatizadas
- Pruebas de penetración
- Pruebas de estrés
- Fuzzing
- Pruebas de seguridad automatizadas: fuzzing
- Desafíos del fuzzing
- Escáneres de vulnerabilidades web
- Ejercicio: uso de un escáner de vulnerabilidades
- Comprobación y endurecimiento del entorno
- Sistema común de puntuación de vulnerabilidades – CVSS
- Escáneres de vulnerabilidades
- Bases de datos públicas
- Caso práctico: omisión de autenticación de formularios
- Vulnerabilidad de terminación de bytes NULL
- La vulnerabilidad de omisión de autenticación de formularios en el código
- Aprovechamiento de la omisión de autenticación de formularios
- Fuentes de conocimiento
- Fuentes de codificación seguras: un kit de inicio
- Bases de datos de vulnerabilidades
- Directrices de codificación segura de .NET en MSDN
- Hojas de referencia rápida de codificación segura de .NET
- Libros recomendados: .NET y ASP.NET
Testimonios (5)
Múltiples ejemplos para cada módulo y gran conocimiento del formador.
Sebastian - BRD
Curso - Secure Developer Java (Inc OWASP)
Traducción Automática
Module3 Applications Attacks and Exploits, XSS, SQL inyección Ataques y exploits de servidores Module4, DOS, BOF
Tshifhiwa - Vodacom
Curso - How to Write Secure Code
Traducción Automática
El conocimiento del tema del entrenador fue excelente, y la forma en que se estructuraron las sesiones para que el público pudiera seguir las demostraciones realmente ayudó a consolidar ese conocimiento, en comparación con solo sentarse y escuchar.
Jack Allan - RSM UK Management Ltd.
Curso - Secure Developer .NET (Inc OWASP)
Traducción Automática
El excelente nivel de conocimientos del instructor, la disposición y su amabilidad.
Luis Antonio Salazar Rivero - Banco de Mexico
Curso - C/C++ Secure Coding
Nada fue perfecto.
Zola Madolo - Vodacom
Curso - Android Security
Traducción Automática