Cómo proteger la aplicación desarrollando software seguro desde el principio
La falta de software y aplicaciones de seguridad se está convirtiendo en una fuente cada vez mayor de vulnerabilidades para muchas compañías.
Integrar prácticas de seguridad en el ciclo de desarrollo del software
Los responsables de proyectos e ingenieros de software deberían tratar todos los errores y debilidades del software como posibles agujeros de seguridad. La reducción de estas debilidades empieza determinando las exigencias de seguridad del software y detectando aquellas especificaciones que pudiesen haber pasado desapercibidas. El software que responde a las exigencias de seguridad (como límites en los procesos de comportamiento o manejo de inputs, y resistencia o tolerancia a fallos intencionales), está más preparado para resistir a los ataques.
Además, la observación de casos de abuso, que pueden anticiparse por un comportamiento anormal e inesperado, ayuda a comprender mejor cómo crear un software más seguro y fiable.
Desarrollar software desde el principio, con el concepto de la seguridad en mente, es más efectivo que intentar validar –a través de testeos y verificaciones posteriores- que el software es seguro. Por ejemplo, tratar de demostrar que un sistema implementado nunca aceptará una entrada insegura (es decir, probar que es negativa) es imposible. Sin embargo, puedes probar –a través de métodos formales y funciones abstractas- que el software que estás diseñando nunca aceptará un input inseguro.
Además, es más fácil diseñar e implementar el sistema para que las rutinas de validación de entradas revisen todos los inputs que el software recibe, que establecer límites predefinidos. Si se prueba la función de validación de input para demostrar que funciona correctamente, los inputs que entren en el sistema serán después incluidos en la función de testeo del sistema.
Utilizar el análisis y el modelado para proteger mejor la aplicación
La adopción de un proceso de desarrollo de software basado en la seguridad, incluidas las prácticas de desarrollo seguro, reducirá el número de agujeros y debilidades del software. Corregir las vulnerabilidades durante el ciclo de desarrollo del producto es mucho más barato que tratar de diagnosticar y corregirlas una vez que el sistema está en la calle. Resulta de lo más lógico. Ahora bien, a la hora de poner en marcha esas prácticas de seguridad hay que tener en cuenta tres objetivos:
1. Los agujeros y las vulnerabilidades son eliminadas en lo posible por los ingenieros de desarrollo.
2. Se reduce enormemente (o por completo) la posibilidad de que los crackers implanten de forma intencionada bugs y vulnerabilidades, lógicas maliciosas o puertas traseras en el software.
3. El software es resistente, tolerante y fácilmente recuperable a los ataques, mientras sigue respondiendo en lo práctico a las necesidades de la organización.
La selección de prácticas de seguridad y funciones adaptadas depende de cada organización y proyecto, según sean los objetivos, las limitaciones y la importancia del software que esté desarrollándose.