Principales Fallos en el Ciclo de Vida del Desarrollo de Software (SDLC)
Clasificado en Informática
Escrito el en español con un tamaño de 3,04 KB
Los errores más comunes en el SDLC (Software Development Life Cycle) son:
- Validación de entrada y representación: Causada por una entrada maliciosa. Toda entrada debe ser sanitizada y validada. Vulnerabilidades comunes incluyen: "Buffer Overflow", "SQL Injection", "Cross-Site Scripting", etc.
- Abuso de API: Causado por una violación del contrato entre quien realiza la petición y quien responde. Puede causar "Directory Restriction", "Unchecked Return Value", etc.
- Características de seguridad: La seguridad del software no es un software de seguridad en sí mismo. Se pueden tener controles de seguridad, pero esto no asegura que nuestro software no sea vulnerable.
- Tiempo y estado: En los sistemas actuales, dos eventos pueden tener lugar al mismo tiempo. Los eventos ocupan variables, memoria, etc. Si no se controlan estos eventos, podrían ser aprovechados para explotar los equipos.
- Errores: Los errores no controlados correctamente pueden ser aprovechados como pivotes para un atacante o, si se crean errores que brinden información, pueden ser de utilidad para el desarrollo del software.
- Calidad del código: Una baja calidad en el código puede ser aprovechada por un atacante para comprometer el sistema.
- Encapsulación: Se deben crear límites fuertes. Si no se encapsula correctamente la información, puede significar un riesgo para la seguridad y la privacidad.
- Ambiente: Incluye todo lo que está fuera de nuestro código.
Los errores más comunes en desarrollo de código se engloban bajo la denominación Enumeración de Errores Comunes o CWE (Common Weakness Enumeration).
Retos en el Análisis de Código y Detección de Vulnerabilidades
El análisis de código y la detección de vulnerabilidades conllevan los siguientes retos:
- Complejidad: Diferentes lenguajes de programación interactuando y la gran cantidad de líneas de código.
- Extensibilidad: La variedad de diferentes arquitecturas de hardware, diferentes sistemas operativos y parches.
- Conectividad: El "Ciberespacio" no lo podemos controlar y si no realizamos un correcto análisis a nuestro código e infraestructura de nuestro producto, conllevará a un riesgo en la seguridad.
10 Consejos de Diseño Seguro
- Ningún componente es fiable hasta demostrar lo contrario.
- Delinear mecanismos de autenticación difíciles de eludir.
- Autorizar, además de autenticar.
- Separar datos de instrucciones de control.
- Validar todos los datos explícitamente.
- Utilizar criptografía correctamente.
- Identificar datos sensibles y cómo se los debería gestionar.
- Considerar siempre a los usuarios del sistema.
- La integración de componentes cambia la superficie de ataque.
- Considerar cambios futuros en objetos y actores.