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.
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.
Page: 1 2
También incluye un SDK open source para potencia el desarrollo de aplicaciones y agentes, especialmente…
Los ciberdelincuentes recurren a ofertas que no son ciertas, tarjetas regalo y sorteos para robar…
Entre sus características incluye una pantalla de ultra alta resolución 1.5K y lente dinámica biónica.
Bienvenido a un nuevo episodio del podcast semanal Silicon Pulse, un espacio en el que…
De los 942,1 millones de dólares que ingresó en el tercer trimestre, 900,3 millones corresponden…
“En 2024 se ha registrado un crecimiento exponencial en los ciberataques, con empresas de todo…