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.
Temario del curso
Día 1
Seguridad de TI y programación segura
- Naturaleza de la seguridad
- Términos relacionados con la seguridad de TI
- Definición de riesgo
- Diferentes aspectos de la seguridad de TI
- Requisitos de diferentes áreas de aplicación
- Seguridad de TI frente a programación segura
-
De las vulnerabilidades a los botnets y el cibercrimen
- Naturaleza de las fallas de seguridad
- Razones de la dificultad
- Desde un equipo infectado hasta ataques dirigidos
-
Clasificación de las fallas de seguridad
- Taxonomía de Landwehr
- Los siete reinos perniciosos
- OWASP Top Ten 2013
- Comparación de OWASP Top Ten: 2003 – 2013
Introducción al Ciclo de Vida de Desarrollo Seguro (SDL) de Microsoft®
- Agenda
-
Aplicaciones bajo ataque...
- Evolución del cibercrimen
- Los ataques se centran en las aplicaciones
- La mayoría de las vulnerabilidades se encuentran en aplicaciones más pequeñas de proveedores de software independientes (ISV)
-
Orígenes del SDL de Microsoft...
- Cronología de seguridad en Microsoft...
- ¿Qué aplicaciones deben seguir el SDL?
-
Ciclo de Vida de Desarrollo Seguro (SDL) de Microsoft
- Ciclo de Vida de Desarrollo Seguro (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: Liberación – Plan de respuesta
- Fase cinco: Liberación – Revisión final de seguridad
- Fase cinco: Liberación – Archivo
- Requisito posterior al SDL: Respuesta
- Guía del proceso SDL para aplicaciones de línea de negocio (LOB)
- Guía del SDL para metodologías ágiles
- El desarrollo de software seguro requiere mejora de 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 de ataque – ejemplos
-
Privacidad
- Privacidad
- Comprensión de los comportamientos y preocupaciones de las aplicaciones
-
Defensa en profundidad
- Principio central del SDL: Defensa en profundidad
- Defensa en profundidad – ejemplo
-
Principio de mínimo privilegio
- Mínimo privilegio – ejemplo
-
Configuraciones predeterminadas seguras
- Configuraciones predeterminadas seguras – ejemplos
Principios de implementación segura
- Agenda
- Ciclo de Vida de Desarrollo Seguro (SDL) de Microsoft
-
Conceptos básicos de desbordamiento de búfer
- Procesadores Intel 80x86 – registros principales
- La estructura de direcciones de memoria
- El mecanismo de llamada a funciones 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 la estructura de la pila
- Ejercicio BOFIntro – una explotación simple
-
Validación de entrada
- Conceptos de validación de entrada
-
Problemas con enteros
- Representación de enteros negativos
- Desbordamiento de entero
- Desbordamiento aritmético – ¡adivina el resultado!
- Ejercicio IntOverflow
- ¿Cuál es el valor de Math.Abs(int.MinValue)?
-
Mitigación de problemas con enteros
- Mitigación de problemas con enteros
- Evitar el desbordamiento aritmético – suma
- Evitar el desbordamiento aritmético – multiplicación
- Detección de desbordamiento con la palabra clave checked en C#
- Ejercicio – Uso de la palabra clave checked en C#
- Excepciones generadas por desbordamientos en C#
-
Caso de estudio – Desbordamiento de entero en .NET
- Una vulnerabilidad real de desbordamiento de entero
- Explotación de la vulnerabilidad de desbordamiento de entero
-
Vulnerabilidad de traversa de ruta
- Mitigación de la traversa de ruta
Día 2
Principios de implementación segura
-
Inyección
- Métodos típicos de ataque de inyección SQL
- Inyección SQL ciega y basada en tiempo
- Métodos de protección contra inyección SQL
- Inyección de comandos
-
Autenticación defectuosa – gestión de contraseñas
- Ejercicio – Debilidad de las contraseñas hash
- Gestión y almacenamiento de contraseñas
- Algoritmos hash de propósito especial para el almacenamiento de contraseñas
-
Cross-Site Scripting (XSS)
- Cross-Site Scripting (XSS)
- Inyección CSS
- Explotación: inyección a través de otras etiquetas HTML
- Prevención de XSS
-
Control de acceso a nivel de función ausente
- Filtrado de cargas de archivos
-
Criptografía práctica
- Proporcionar confidencialidad con criptografía simétrica
- Algoritmos de cifrado simétrico
- Cifrado de bloque – modos de operación
- Hash o resumen de mensaje
- Algoritmos 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 escritas en código (hard-coded)
- Conclusión
Principios de verificación segura
- Pruebas funcionales frente a 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)
-
Delimitación 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 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 simple de una 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 prueba
- Técnicas para varias etapas del SDLC
-
Revisión de código
- Revisión de código para la seguridad del software
- Análisis de taint
- Heurística
-
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 manual en tiempo de ejecución
- Pruebas de seguridad manuales frente a 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 común de puntuación de vulnerabilidades – CVSS
- Escáneres de vulnerabilidades
- Bases de datos públicas
-
Caso de estudio – Bypass de autenticación por formularios
- Vulnerabilidad de terminación con byte nulo
- La vulnerabilidad de bypass de autenticación por formularios en el código
- Explotación del bypass de autenticación por formularios
Fuentes de conocimiento
- Fuentes de programación segura – un kit de inicio
- Bases de datos de vulnerabilidades
- Directrices de programación segura para .NET en MSDN
- Hojas de trucos de programación segura para .NET
- Libros recomendados – .NET y ASP.NET
14 Horas
Testimonios (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