Contacta con nosotros

Temario del curso

Día 1

Ciberseguridad y codificación segura

  • Naturaleza de la seguridad
  • Términos relacionados con la ciberseguridad
  • Definición de riesgo
  • Diferentes aspectos de la ciberseguridad
  • Requisitos de distintas áreas de aplicación
  • Ciberseguridad frente a codificación segura
  • De las vulnerabilidades a los botnets y la cibdelincuencia
    • Naturaleza de los fallos de seguridad
    • Razones de la dificultad
    • Desde un ordenador infectado hasta ataques dirigidos
  • Clasificación de los fallos de seguridad
    • Taxonomía de Landwehr
    • Los siete reinos perniciosos (Seven Pernicious Kingdoms)
    • OWASP Top Ten 2013
    • Comparativa de OWASP Top Ten 2003 - 2013

Introducción al Ciclo de Vida de Desarrollo Seguro (SDL) de Microsoft®

  • Agenda
  • Aplicaciones bajo ataque...
    • Evolución de la cibdelincuencia
    • Los ataques se están centrando en las aplicaciones
    • La mayoría de las vulnerabilidades se encuentran en aplicaciones de ISV (Independent Software Vendor) más pequeñas
  • Orígenes del SDL de Microsoft...
    • Línea temporal 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: 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 SDL para aplicaciones de línea de negocio (LOB)
    • Orientación SDL para metodologías ágiles
    • El desarrollo seguro de software requiere mejoras en el 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
    • Ejemplos de reducción de la superficie de ataque
  • Privacidad
    • Privacidad
    • Comprensión del comportamiento y las preocupaciones de la aplicación
  • Defensa en profundidad
    • Principio fundamental del SDL: Defensa en profundidad
    • Ejemplo de defensa en profundidad
  • Principio de privilegio mínimo
    • Ejemplo de privilegio mínimo
  • Configuraciones seguras por defecto
    • Ejemplos de configuraciones seguras por defecto

Principios de implementación segura

  • Agenda
  • Ciclo de Vida de Desarrollo Seguro (SDL) de Microsoft
  • Fundamentos del desbordamiento de búfer
    • Procesadores Intel 80x86 - registros principales
    • Distribución de la dirección de memoria
    • Mecanismo de llamada de funciones en C/C++ en x86
    • Variables locales y marco de pila
    • Desbordamiento de pila (Stack overflow)
      • Desbordamiento de búfer en la pila
      • Introducción a los ejercicios
      • Ejercicio BOFIntro
      • Ejercicio BOFIntro - determinar la estructura de la pila
      • Ejercicio BOFIntro - una explotación básica
  • Validación de entradas
    • Conceptos de validación de entradas
    • Problemas con enteros (Integer problems)
      • Representación de enteros negativos
      • Desbordamiento entero (Integer overflow)
      • Desbordamiento aritmético - ¡adivine 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
      • Detectar desbordamientos con la palabra clave checked en C#
      • Ejercicio - Uso de 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
      • Explotando la vulnerabilidad de desbordamiento entero
    • Vulnerabilidad de recorrido de rutas (Path traversal)
      • Mitigación del recorrido de rutas

Día 2

Principios de implementación segura

  • Inyección (Injection)
    • 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 rota - gestión de contraseñas
    • Ejercicio - Debilidad de las contraseñas hasheadas
    • Gestión y almacenamiento de contraseñas
    • Algoritmos de hash especializados para el almacenamiento de contraseñas
  • Scripting entre sitios (XSS)
    • Scripting entre sitios (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 (Missing function level access control)
    • 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 del 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 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 frente a pruebas de seguridad
  • Vulnerabilidades de seguridad
  • Priorización
  • Pruebas de seguridad en el ciclo de vida del desarrollo de software (SDLC)
  • Pasos de la planificación de pruebas (análisis de riesgo)
  • Delimitación y obtención de información
    • Interesados
    • 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 (misuse/abuse cases)
    • 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)
    • 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 riesgos/amenazas 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 (Code review)
    • Revisión de código para la seguridad del software
    • Análisis de datos sensibles (Taint analysis)
    • 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 manual en tiempo de ejecución
    • Pruebas de seguridad manuales frente a automatizadas
    • Pruebas de penetración (Pentesting)
    • 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 (Hardening)
    • Sistema Común de Puntuación de Vulnerabilidades - CVSS
    • Escáneres de vulnerabilidades
    • Bases de datos públicas
  • Estudio de caso - Contorno de la autenticación de formularios (Forms Authentication Bypass)
    • Vulnerabilidad de terminación con byte nulo
    • La vulnerabilidad de contorno en el código de autenticación de formularios
    • Explotando el contorno de la autenticación de formularios

Fuentes de conocimiento

  • Fuentes de codificación segura - un kit de inicio
  • Bases de datos de vulnerabilidades
  • Directrices de codificación segura .NET en MSDN
  • Hojas de referencia (cheat sheets) de codificación segura para .NET
  • Libros recomendados - .NET y ASP.NET
 14 Horas

Número de participantes


Precio por participante

Reseñas (3)

Próximos cursos

Categorías Relacionadas