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 codificació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 vs. codificación segura
-
De vulnerabilidades a botnets y ciberdelincuencia
- Naturaleza de las fallas de seguridad
- Razones de dificultad
- De una computadora infectada a ataques dirigidos
-
Clasificación de fallas de seguridad
- Taxonomía de Landwehr
- Los Siete Reinos Perniciosos
- Las Top Ten de OWASP 2013
- Comparación de las Top Ten de OWASP 2003 – 2013
Introducción al Ciclo de Desarrollo Seguro (SDL) de Microsoft®
- Agenda
-
Aplicaciones bajo ataque...
- Evolución de la ciberdelincuencia
- Los ataques se centran en las aplicaciones
- La mayoría de las vulnerabilidades están en pequeñas aplicaciones de ISV
-
Orígenes del SDL de Microsoft...
- Línea de tiempo de seguridad en Microsoft...
- ¿Qué aplicaciones deben seguir el SDL?
-
Ciclo de Desarrollo Seguro (SDL) de Microsoft
- Ciclo de Desarrollo Seguro (SDL) de Microsoft
- Requisitos previos al SDL: Formació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 final de seguridad
- Fase Cinco: Lanzamiento – Archivo
- Requisito posterior al SDL: Respuesta
- Orientación del proceso de SDL para aplicaciones de línea de negocio (LOB)
- Orientación de 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 del comportamiento y preocupaciones de la aplicación
-
Defensa en profundidad
- Principio fundamental 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
Principios de implementación segura
- Agenda
- Ciclo de Desarrollo Seguro (SDL) de Microsoft
-
Conceptos básicos del desbordamiento de búfer
- Procesadores Intel 80x86 – registros principales
- Disposición de la dirección de memoria
- El mecanismo de llamada de funciones en C/C++ en x86
- Las variables locales y el marco de pila (stack frame)
-
Desbordamiento de pila
- Desbordamiento de búfer en la pila
- Introducción a los ejercicios
- Ejercicio BOFIntro
- Ejercicio BOFIntro – determinar la disposición de la pila
- Ejercicio BOFIntro – un exploit sencillo
-
Validación de entrada
- Conceptos de validación de entrada
-
Problemas enteros (integer)
- Representación de números enteros negativos
- Desbordamiento entero
- Desbordamiento aritmético – ¡adivine la salida!
- Ejercicio IntOverflow
- ¿Cuál es el valor de Math.Abs(int.MinValue)?
-
Mitigación de problemas enteros
- Mitigación de problemas enteros
- Evitar desbordamiento aritmético – suma
- Evitar desbordamiento aritmético – multiplicación
- Detectar desbordamiento con la palabra clave checked en C#
- Ejercicio – Usando la palabra clave checked en C#
- Excepciones provocadas por desbordamientos en C#
-
Estudio de caso – Desbordamiento entero en .NET
- Una vulnerabilidad real de desbordamiento entero
- Explotación de la vulnerabilidad de desbordamiento entero
-
Vulnerabilidad de recorrido de rutas (Path traversal)
- Mitigación de recorrido de rutas
Día 2
Principios de implementación segura
-
Inyección
- Métodos de ataque típicos 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 incorrecta – gestión de contraseñas
- Ejercicio – Debilidad de las contraseñas hasheadas
- Gestión y almacenamiento de contraseñas
- Algoritmos de hash especiales para el almacenamiento de contraseñas
-
Secuencias de Comandos entre Sitios (XSS)
- Secuencias de Comandos entre Sitios (XSS)
- Inyección CSS
- Explotación: inyección a través de otras etiquetas HTML
- Prevención de XSS
-
Control de acceso funcional faltante
- Filtrado de cargas de archivos
-
Criptografía práctica
- Proporcionar confidencialidad con criptografía simétrica
- Algoritmos de cifrado simétrico
- Cifrado por bloques – modos de operación
- Hash o resumen de mensajes
- 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 práctica – posesión de la clave privada
- Errores típicos en la gestión de contraseñas
- Ejercicio – Contraseñas codificadas en el código
- 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 de la planificación de pruebas (análisis de riesgo)
-
Acotació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 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 – STRIDE de MS SDL y elementos DFD
- Análisis de riesgos – clasificación de amenazas
- El modelo de clasificación de amenazas / riesgo DREAD
-
Técnicas y herramientas de prueba de seguridad
- Enfoques generales de prueba
- 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 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
-
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
-
Verificación y endurecimiento del entorno
- Sistema Común de Puntuación de Vulnerabilidades – CVSS
- Escáneres de vulnerabilidades
- Bases de datos públicas
-
Estudio de caso – Elusión de Autenticación de Formularios
- Vulnerabilidad de terminación de byte nulo
- La vulnerabilidad de elusión de autenticación de formularios en el código
- Explotación de la elusión de autenticación de formularios
Fuentes de conocimiento
- Fuentes de codificación segura – un kit inicial
- Bases de datos de vulnerabilidades
- Guías de codificación segura de .NET en MSDN
- Cheatsheets de codificación segura de .NET
- Libros recomendados – .NET y ASP.NET
14 Horas
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