Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Seguridad de Software
Andrés del Villar León
Ciclo del Software
Integración y Operación y
Requisitos Diseño Implementación
pruebas mantenimiento
• Recomendaciones
• Cambiar contraseñas por default
• Nunca permitir que root se pueda conectar de
manera remota
• Crear cuentas para instalar los sistemas.
• Asignar los mínimos privilegios.
• Tener un checklist para verificar que todos los
puntos vulnerables fueron revisados y
configurados correctamente.
Interacciones Inseguras
• Vulnerabilidades en el software:
• Sistema operativo
• Bibliotecas
• Software Base
• Supuestos al usar o interactuar con otro
software.
• Comunicación vía canales no seguros
Interacciones Inseguras
• Cambios en el ambiente
• Fallas en el control de acceso
• Recomendaciones
• Parchar, parchar, parchar
• Tener diagramas de interacción entre los
componentes de un sistema.
Defacements
• Interconectividad
• Extensibilidad
• Complejidad
Interconectividad
• El software tiende a
crecer en líneas de
código.
• Mientras más líneas
de código más
posibilidades de
bugs.
¿Porqué los buenos desarrolladores
escribimos mal código?
• Factores Psicológicos.
• Programar es una actividad difícil y frustrante.
• Nunca debemos confiar ciegamente en el código
de otro (pero que pasa cuando desconfían de mi
código)
• Generalmente se aborda la “ruta feliz”
• Los chicos buenos tienden a descansar en la
abstracción … los chicos malos en los detalles
Prioridades para los desarrolladores
Información sensible
¡EXPUESTA!
KISS = Keep It Simple, Stupid
• Modularizar a fondo.
• Ojo con los recursos compartidos
• Passwords
• Privilegios
• Usuarios
• Grupos
• Datos
• Cuidado con los equipos de desarrollo de
software
Limitar los recursos consumidos
• No reinventar la rueda.
• No crear algoritmos criptográficos caseros.
• Los componentes conocidos permiten reducir
tiempo y costos.
• Pero…
Estar alertas a vulnerabilidades
• El desarrollado internamente o el
desarrollado por terceros.
• Revisar constantemente en busca de
vulnerabilidades o suscrito a avisos.
• Corregir las vulnerabilidades
• Corregirlo nosotros
• Aplicar parches
• Reemplazar el software
Seguridad en el transporte
Validación de Entradas
Sanitización de Entradas
• Objetivo:
• Identificar vulnerabilidades en el código sin
ejecutarlo.
• Los defectos se corrigen, en general, en
tiempo de compilación.
• Las vulnerabilidades puedes estar durmiendo
por años.
SCA Humano
• Búsqueda:
• Puntos en el programa en los cuales recibe input
del usuario
• Puntos en el programa en los cuales recibe input
de alguna otra fuente no confiable
• Síntomas de problemas (Vulnerabilidades
inherentes a código)
• Evaluación:
• ¿Es este punto del programa una vulnerabilidad?
SCA Humano
• Limitaciones
• Proceso aburrido, tediosos, difícil y propenso a
errores.
• Se requiere mucho conocimiento acerca de
seguridad de software (y paciencia)
SCA Automatizado
• Limitaciones
• Seguridad 100%, ¿se acuerdan?
• Aún dan por el orden de 10% de falsos positivos
• A veces el desarrollador debe adaptarse al SCA más
que viceversa
• Una herramienta automatizada puede ser rápida,
buena, barata. Elija sólo 2.
SCA: Herramientas
• Factores Técnicos
• Pérdida de confidencialidad
• Pérdida de integridad
• Pérdida de disponibilidad
• Pérdida de responsabilidad (¿es trazable el ataque a un individuo?)
• Factores de negocio
• Daño financiero
• Daño a la reputación de la empresa
• Incumplimiento de estándares o regulaciones
• Violación a la privacidad resultante del ataque
5
Nivel de habilidad
2
Motivación
7
Oportunidad
Agente
Factores de
Amenazante
1
Tamaño
3
Facilidad de descubrimiento
6
Posibilidad
Facilidad de explotación
9
Conocimiento
Factores de
Vulnerabilidad
Detección de intrusión
Total Posibilidad
2 4.38 9
Pérdida de Confidencialidad
Ejemplo de análisis
7
Pérdida de Integridad
5
Pérdida de Disponibilidad
Riesgo
Pérdida de responsabilidad
Factores técnicos
Daño financiero
2
Daño a la reputación
Impacto
No cumplimiento
5
Violación de privacidad
Factores de negocio
Total Impacto
2.25 4.75
• Corregir la vulnerabilidad
• Corregir vulnerabilidades asociadas
• Evitar regresiones
• Introducir nuevas vulnerabilidades
¿Cómo fomentar la divulgación?
• Problema económico
• Seguridad valorada → recursos para fomento
• “Vengan y atáquennos”
• Eso nunca... ¿Seguridad 100%?
• Organizar Bug Bounties
• Internos y externos
Google Vulnerability Reward Program
• Un investigador en seguridad
reportó una vulnerabilidad de
Session Hijacking en la app móvil
de Instagram
• Facebook responde: “Denegada”
• Investigador se lanza a escribir una
herramienta de secuestro masivo
de sesiones
Naked Security: “How anyone can hack your Instagram account”
Plan de Emergencia “Panic Mode”
Observación
Alerta y movilización
Evaluación y estabilización
Resolución
Seguridad ágil
Desarrollo ágil: Manifiesto
• Priorizar feedback
• Entrega rápida y minimalista
• Desarrollo iterativo
• Propiedad comunitaria
• “Si duele, hazlo más seguido”
• Inspeccionar y adaptar