Gracias por enviar su consulta! Uno de los miembros de nuestro equipo se pondrá en contacto con usted en breve.
Gracias por enviar su reserva! Uno de los miembros de nuestro equipo se pondrá en contacto con usted en breve.
Duración 14 horas
Temario del curso
Día 1
Seguridad de la TI y programación segura
- Naturaleza de la seguridad
- Términos relacionados con la seguridad de la TI
- Definición de riesgo
- Diferentes aspectos de la seguridad de la TI
- Requisitos de diferentes áreas de aplicaciones
- Seguridad de la TI vs. programación segura
-
De las vulnerabilidades a las botnets y el cibercrimen
- Naturaleza de los fallos de seguridad
- Razones de la dificultad
- De una computadora infectada a ataques dirigidos
-
Clasificación de fallos de seguridad
- Taxonomía de Landwehr
- Los Siete Reinos Perfidios
- OWASP Top Ten 2013
- Comparación de OWASP Top Ten 2003 – 2013
Introducción al Ciclo de Vida de Desarrollo de Seguridad (SDL) de Microsoft®
- Agenda
-
Aplicaciones bajo ataque...
- Evolución del cibercrimen
- Los ataques se centran en las aplicaciones
- La mayoría de las vulnerabilidades están en aplicaciones ISV más pequeñas
-
Orígenes del SDL de Microsoft...
- Cronología de la seguridad en Microsoft...
- ¿Qué aplicaciones están obligadas a seguir el SDL?
-
Ciclo de Vida de Desarrollo de Seguridad (SDL) de Microsoft
- Ciclo de Vida de Desarrollo de Seguridad (SDL) de Microsoft
- Requisitos previos al SDL: Capacitación en Seguridad
- Fase Uno: Requisitos
- Fase Dos: Diseño
- Fase Tres: Implementación
- Fase Cuatro: Verificación
- Fase Cinco: Lanzamiento – Plan de Respuesta
- Fase Cinco: Lanzamiento – Revisión de Seguridad Final
- Fase Cinco: Lanzamiento – Archivo
- Requisito posterior al SDL: Respuesta
- Guía del proceso SDL para aplicaciones LOB
- Guía SDL para metodologías ágiles
- El desarrollo de software seguro requiere la mejora del proceso
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 de ataque – ejemplos
-
Privacidad
- Privacidad
- Comprensión de los comportamientos y preocupaciones de la aplicación
-
Defensa en profundidad
- Principio clave del SDL: Defensa en Profundidad
- Defensa en profundidad – ejemplo
-
Principio de menor privilegio
- Menor privilegio – ejemplo
-
Configuraciones seguras predeterminadas
- Configuraciones seguras predeterminadas – ejemplos
Principios de implementación segura
- Agenda
- Ciclo de Vida de Desarrollo de Seguridad (SDL) de Microsoft
-
Fundamentos del desborde de búfer
- Procesadores Intel 80x86 – registros principales
- Disposición de direcciones de memoria
- Mecanismo de llamadas a funciones en C/C++ en x86
- Variables locales y el marco de pila
-
Desborde de pila
- Desborde de búfer en la pila
- Ejercicios – introducción
- Ejercicio BOFIntro
- Ejercicio BOFIntro – determinar la disposición de la pila
- Ejercicio BOFIntro – una explotación simple
-
Validación de entrada
- Conceptos de validación de entrada
-
Problemas de enteros
- Representación de enteros negativos
- Desborde de entero
- Desborde aritmético – ¡adivina la salida!
- 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 desbordes aritméticos – suma
- Evitar desbordes aritméticos – multiplicación
- Detección de desbordes con la palabra clave checked en C#
- Ejercicio – Uso de la palabra clave checked en C#
- Excepciones causadas por desbordes en C#
-
Caso de estudio – Desborde de entero en .NET
- Una vulnerabilidad real de desborde de entero
- Explotación de la vulnerabilidad de desborde de entero
-
Vulnerabilidad de traversal de ruta
- Mitigación de traversal de ruta
Día 2
Principios de implementación segura
-
Inyección
- Métodos típicos de ataque de Inyección de SQL
- Inyección de SQL ciega y basada en tiempo
- Métodos de protección contra la Inyección de SQL
- Inyección de comandos
-
Autenticación deficiente - gestión de contraseñas
- Ejercicio – Debilidad de las contraseñas hasheadas
- Gestión y almacenamiento de contraseñas
- Algoritmos de hash de uso especial para el almacenamiento de contraseñas
-
Cross-Site Scripting (XSS)
- Cross-Site Scripting (XSS)
- Inyección de CSS
- Explotación: inyección a través de otras etiquetas HTML
- Prevención de XSS
-
Falta de control de acceso a nivel de función
- Filtros para la carga de archivos
-
Criptografía práctica
- Proporcionar confidencialidad con criptografía simétrica
- Algoritmos de cifrado simétrico
- Cifrado de bloques – modos de operación
- Hash o resumen de mensaje
- Algoritmos de hash
- Código de Autenticación de Mensaje (MAC)
- Proporcionar integridad y autenticidad con una clave simétrica
- Proporcionar confidencialidad con cifrado de clave pública
- Regla general – posesión de la clave privada
- Errores típicos en la gestión de contraseñas
- Ejercicio – Contraseñas codificadas
- Conclusión
Principios de verificación segura
- Pruebas funcionales vs. pruebas de seguridad
- Vulnerabilidades de seguridad
- Priorización
- Pruebas de seguridad en el SDLC
- Pasos del plan de pruebas (análisis de riesgos)
-
Alcance y recopilación de información
- Partes interesadas
- Activos
- La superficie de ataque
- Objetivos de seguridad para las pruebas
-
Modelado de amenazas
- Modelado de amenazas
- Perfiles de atacante
- Modelado de amenazas basado en árboles de ataque
- Modelado de amenazas basado en casos de mal uso/abuso
- Casos de mal uso/abuso – un ejemplo simple 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 – STRIDE de MS SDL y elementos DFD
- Análisis de riesgos – clasificación de amenazas
- Modelo de clasificación de amenazas/riesgos DREAD
-
Técnicas y herramientas de pruebas de seguridad
- Enfoques generales de pruebas
- Técnicas para las distintas etapas del SDLC
-
Revisión de código
- Revisión de código para la seguridad del software
- Análisis de taint
- Heurísticas
-
Análisis estático de código
- Análisis estático de código
- Ejercicio – Uso de herramientas de análisis estático de código
-
Pruebas de la implementación
- Verificación de tiempo de ejecución manual
- 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
-
Verificación y endurecimiento del entorno
- Sistema de Puntuación de Vulnerabilidades Comunes – CVSS
- Escáneres de vulnerabilidades
- Bases de datos públicas
-
Caso de estudio – Evasión de Autenticación de Formularios
- Vulnerabilidad de terminación con byte NULL
- La vulnerabilidad de Evasión de Autenticación de Formularios en el código
- Explotación de la Evasión de Autenticación de Formularios
Fuentes de conocimiento
- Fuentes de programación segura – un kit de inicio
- Bases de datos de vulnerabilidades
- Guías de programación segura de .NET en MSDN
- Hojas de trucos de programación segura de .NET
- Libros recomendados – .NET y ASP.NET
Reseñas (3)
La experiencia compartida, el saber hacer del profesor y su valor son importantes.
Carey Fan - Logitech
Curso - C/C++ Secure Coding
Traducción Automática
el conocimiento del instructor era muy alto - sabía de lo que estaba hablando y conocía las respuestas a nuestras preguntas
Adam - Fireup.PRO
Curso - Advanced Java Security
Traducción Automática
El tema es actual y necesitaba estar al día
Damilano Marco - SIAP s.r.l.
Curso - Secure Developer Java (Inc OWASP)
Traducción Automática