Según el estudio publicado por el insituto SANS con el apoyo de numerosas organizaciones, estos son los 25 errores más comunes que hacen de la informática un polvorín:
Interacción insegura entre componentes:
- Validación de parámetros de entrada inapropiada
- Codificación o escapado de parámetros de salida inapropiados
- No preservar la estructura de las peticiones SQL (Inyección de SQL)
- No preservar la estructura de la web (Cross-Site Scripting)
- No preservar la estructura de los comandos del sistema operativo (Inyección de comandos del SO)
- Transmisión en claro de información sensible
- Suplantación de identidad al hacer peticiones de información (Cross-site request forgery)
- Condiciones de carrera
- Filtrado de mensajes de error
Gestión de recursos arriesgada:
- No limitar las operaciones que ocurren dentro de los límites de un buffer de memoria (Buffer Over/Underflow)
- Control externo sobre datos críticos de estado
- Control externo sobre nombre de archivo o ruta
- Ruta de búsqueda no confiable
- No controlar la generación de código (Inyección de código)
- Download de código sin chequeos de integridad
- Cierre o liberación de recursos de manera inapropiada
- Inicialización inapropiada
- Calculos incorrectos
Malas defensas:
- Control de acceso inapropiado (autentificación)
- Uso de un algoritmo de criptografía roto o arriesgado
- Passwords imbuídos en el código (Hard-coded passwords)
- Asignación de permisos insegura a un recurso crítico
- Uso de valores aleatorios predecibles
- Ejecución de código con privilegios innecesarios
- Forzar contoles de seguridad del servidor en el lado del cliente
Personalmente, me he encontrado con casi todos ellos en algún momento y aunque algunos pueden resultar sencillos de identificar y resolver, otros pueden llegar a dar verdaderos dolores de cabeza.
El de los valores aleatorios me ha recordado uno de los comics de xkcd:
