Seguridad en el ciclo de vida del software

Seguridad en el ciclo de vida del software

Iñigo Ladrón Morales


El uso de aplicaciones, servicios, infraestructuras y servicios software, o basados en software, es algo que está a la orden del día y que hacemos varios cientos de veces cada jornada, cuando usamos nuestro móvil personal o corporativo, servicios en la nube, conexiones a nuestra empresa y puesto de trabajo, videoconferencias y reuniones en línea, consulta de nuestro correo electrónico, cuando vemos la tele, e incluso cuando conducimos nuestro coche.

Por ese motivo, es de vital importancia que todo el software en el que se basan los servicios que utilizamos, además de estar bien implementado y no tener problemas, fallos, 𝗯𝘂𝗴𝘀, o 𝘃𝘂𝗹𝗻𝗲𝗿𝗮𝗯𝗶𝗹𝗶𝗱𝗮𝗱𝗲𝘀, sea completamente seguro.

Ya tenemos asumido que el uso de herramientas, productos y servicio de 𝗰𝗶𝗯𝗲𝗿𝘀𝗲𝗴𝘂𝗿𝗶𝗱𝗮𝗱, es algo necesario. Pero, ¿𝘁𝗲𝗻𝗲𝗺𝗼𝘀 𝗮𝘀𝘂𝗺𝗶𝗱𝗼 𝗾𝘂𝗲 𝗹𝗼𝘀 𝗽𝗿𝗼𝗱𝘂𝗰𝘁𝗼 𝘆 𝘀𝗲𝗿𝘃𝗶𝗰𝗶𝗼𝘀 𝗾𝘂𝗲 𝘂𝘀𝗮𝗺𝗼𝘀, 𝗱𝗲𝗯𝗲𝗻 𝗱𝗲 𝘀𝗲𝗿 𝘁𝗮𝗺𝗯𝗶é𝗻 𝗰𝗶𝗯𝗲𝗿𝘀𝗲𝗴𝘂𝗿𝗼𝘀, sin agujeros de seguridad, ni 𝗯𝘂𝗴𝘀, ni 𝗽𝘂𝗲𝗿𝘁𝗮𝘀 𝘁𝗿𝗮𝘀𝗲𝗿𝗮𝘀?

Tanto consumidores (usuarios particulares y corporativos), como empresas, debemos exigir a fabricantes y proveedores la adopción del modelo de desarrollo de software centrado en la 𝙘𝙞𝙗𝙚𝙧𝙨𝙚𝙜𝙪𝙧𝙞𝙙𝙖𝙙 𝙙𝙚𝙨𝙙𝙚 𝙚𝙡 𝙙𝙞𝙨𝙚ñ𝙤 y en todo el 𝙘𝙞𝙘𝙡𝙤 𝙙𝙚 𝙫𝙞𝙙𝙖 𝙙𝙚𝙡 𝙙𝙚𝙨𝙖𝙧𝙧𝙤𝙡𝙡𝙤 𝙙𝙚 𝙨𝙤𝙛𝙩𝙬𝙖𝙧𝙚.

Tan importante es realizar un desarrollo seguro del software, como concebirlo y definirlo desde el inicio como tal, teniendo siempre encima de la mesa, el concepto “𝙘𝙮𝙗𝙚𝙧𝙨𝙚𝙘𝙪𝙧𝙞𝙩𝙮 𝙛𝙞𝙧𝙨𝙩”.

Para lograr un desarrollo seguro de software es necesario implementar la 𝗰𝗶𝗯𝗲𝗿𝘀𝗲𝗴𝘂𝗿𝗶𝗱𝗮𝗱 en todos los ciclos de desarrollo, desde el diseño hasta el 𝗱𝗲𝘀𝗽𝗹𝗶𝗲𝗴𝘂𝗲 final (sí, en ese momento, también es importante). Esto es posible aplicando determinadas metodologías y tecnologías de desarrollo seguro.

Es fundamental que el foco en la 𝗰𝗶𝗯𝗲𝗿𝘀𝗲𝗴𝘂𝗿𝗶𝗱𝗮𝗱, esté presente desde la concepción de un nuevo software, servicio, producto o aplicación. Es decir, quien define el software, sus características y casos de uso, debe definir también cómo se debe desarrollar para que acabe siendo un software, producto y/o servicio seguro.

En ese momento de identificación de características y definición de las mismas, también se deben identificar posibles activos y amenazas, así como los 𝗿𝗲𝗾𝘂𝗶𝘀𝗶𝘁𝗼𝘀 𝗱𝗲 𝘀𝗲𝗴𝘂𝗿𝗶𝗱𝗮𝗱 y 𝗿𝗲𝗾𝘂𝗶𝘀𝗶𝘁𝗼𝘀 𝗱𝗲 𝗰𝗶𝗯𝗲𝗿𝘀𝗲𝗴𝘂𝗿𝗶𝗱𝗮𝗱. Existen algunas metodologías y marcos para ayudar en esta tarea, como lo pueden ser el 𝙎𝙚𝙘𝙪𝙧𝙞𝙩𝙮 𝘿𝙚𝙫𝙚𝙡𝙤𝙥𝙢𝙚𝙣𝙩 𝙇𝙞𝙛𝙚𝙘𝙮𝙘𝙡𝙚 (𝙎𝘿𝙇), o el 𝘽𝙪𝙞𝙡𝙙𝙞𝙣𝙜 𝙎𝙚𝙘𝙪𝙧𝙞𝙩𝙮 𝙄𝙣 𝙈𝙖𝙩𝙪𝙧𝙞𝙩𝙮 𝙈𝙤𝙙𝙚𝙡 (𝘽𝙎𝙄𝙈𝙈2).

Como decíamos en todo el desarrollo, en cualquier momento o ciclo del mismo, la 𝗰𝗶𝗯𝗲𝗿𝘀𝗲𝗴𝘂𝗿𝗶𝗱𝗮𝗱 debe de estar integrada como un componente más de la implementación, no tratándose de un complemento.

Del mismo modo que hemos oído hablar y aplicamos el modelo del 𝙘𝙞𝙘𝙡𝙤 𝙙𝙚 𝙙𝙚𝙨𝙖𝙧𝙧𝙤𝙡𝙡𝙤 𝙙𝙚 𝙨𝙤𝙛𝙩𝙬𝙖𝙧𝙚 (𝙎𝘿𝘾𝙇), al aplicar la ciberseguridad como un componente más del mismo, estaremos hablando del 𝙘𝙞𝙘𝙡𝙤 𝙙𝙚 𝙙𝙚𝙨𝙖𝙧𝙧𝙤𝙡𝙡𝙤 𝙙𝙚 𝙨𝙤𝙛𝙩𝙬𝙖𝙧𝙚 𝙨𝙚𝙜𝙪𝙧𝙤 (𝙎𝙎𝘿𝙇𝘾), el cual conforma un marco que asegura la inclusión de la seguridad desde el principio hasta el final del proceso.

En el caso del 𝙘𝙞𝙘𝙡𝙤 𝙙𝙚 𝙙𝙚𝙨𝙖𝙧𝙧𝙤𝙡𝙡𝙤 𝙙𝙚 𝙨𝙤𝙛𝙩𝙬𝙖𝙧𝙚 (en cualquier modo, cascada, ágil, etc.) hablamos de las siguientes etapas, en las que la 𝗰𝗶𝗯𝗲𝗿𝘀𝗲𝗴𝘂𝗿𝗶𝗱𝗮𝗱 no está integrada ni es un elemento primordial de cada uno de ellas sino, en todo caso, algo que se “comprueba” al finalizar:

  • Definición y Planificación
  • Análisis
  • Diseño
  • Programación / Implementación
  • Pruebas / Calidad
  • Despliegue
  • Mantenimiento
  • Documentación

Sin embargo, en el caso del 𝙘𝙞𝙘𝙡𝙤 𝙙𝙚 𝙙𝙚𝙨𝙖𝙧𝙧𝙤𝙡𝙡𝙤 𝙨𝙚𝙜𝙪𝙧𝙤 𝙙𝙚 𝙨𝙤𝙛𝙩𝙬𝙖𝙧𝙚, embebidos a las etapas tradicionales del desarrollo de software, además, tendremos:

  • 𝗜𝗱𝗲𝗻𝘁𝗶𝗳𝗶𝗰𝗮𝗰𝗶ó𝗻, 𝗱𝗲𝗳𝗶𝗻𝗶𝗰𝗶ó𝗻 𝘆 𝗮𝗻á𝗹𝗶𝘀𝗶𝘀 𝗱𝗲 𝗹𝗼𝘀 𝗿𝗲𝗾𝘂𝗶𝘀𝗶𝘁𝗼𝘀 𝗱𝗲 𝘀𝗲𝗴𝘂𝗿𝗶𝗱𝗮𝗱/𝗰𝗶𝗯𝗲𝗿𝘀𝗲𝗴𝘂𝗿𝗶𝗱𝗮𝗱, que aúna los requisitos funcionales y nos funcionales, con los específicos de seguridad/ciberseguridad.
  • 𝗗𝗶𝘀𝗲ñ𝗼 𝘀𝗲𝗴𝘂𝗿𝗼/𝗰𝗶𝗯𝗲𝗿𝘀𝗲𝗴𝘂𝗿𝗼, donde la definición del modelo operativo de cada característica debe aplicar criterios de 𝗰𝗶𝗯𝗲𝗿𝘀𝗲𝗴𝘂𝗿𝗶𝗱𝗮𝗱 como el 𝙥𝙧𝙞𝙣𝙘𝙞𝙥𝙞𝙤 𝙙𝙚 𝙢𝙚𝙣𝙤𝙧 𝙥𝙧𝙞𝙫𝙞𝙡𝙚𝙜𝙞𝙤 y el 𝙥𝙧𝙞𝙣𝙘𝙞𝙥𝙞𝙤 𝙙𝙚 𝙙𝙚𝙛𝙚𝙣𝙨𝙖 𝙚𝙣 𝙥𝙧𝙤𝙛𝙪𝙣𝙙𝙞𝙙𝙖𝙙.
  • 𝗜𝗺𝗽𝗹𝗲𝗺𝗲𝗻𝘁𝗮𝗰𝗶ó𝗻, 𝗽𝗿𝗼𝗴𝗿𝗮𝗺𝗮𝗰𝗶ó𝗻, 𝗼 𝗰𝗼𝗱𝗶𝗳𝗶𝗰𝗮𝗰𝗶ó𝗻 𝘀𝗲𝗴𝘂𝗿𝗮/𝗰𝗶𝗯𝗲𝗿𝘀𝗲𝗴𝘂𝗿𝗮, en la cual los programadores aplican técnicas y hábitos de codificación segura, como la 𝙫𝙖𝙡𝙞𝙙𝙖𝙘𝙞ó𝙣 𝙙𝙚 𝙚𝙣𝙩𝙧𝙖𝙙𝙖𝙨, el 𝙘𝙤𝙣𝙩𝙧𝙤𝙡 𝙙𝙚 𝙖𝙘𝙘𝙚𝙨𝙤, o el análisis y mitigación de 𝘃𝘂𝗹𝗻𝗲𝗿𝗮𝗯𝗶𝗹𝗶𝗱𝗮𝗱𝗲𝘀.
  • 𝗣𝗿𝘂𝗲𝗯𝗮𝘀 𝗱𝗲 𝗰𝗮𝗹𝗶𝗱𝗮𝗱 𝗱𝗲 𝘀𝗲𝗴𝘂𝗿𝗶𝗱𝗮𝗱/𝗰𝗶𝗯𝗲𝗿𝘀𝗲𝗴𝘂𝗿𝗶𝗱𝗮𝗱 que, al igual que las pruebas de calidad del desarrollo propiamente dicho, se basan en testear si dicho desarrollo realizado puede ser violado o no, si tiene agujeros de seguridad, 𝘃𝘂𝗹𝗻𝗲𝗿𝗮𝗯𝗶𝗹𝗶𝗱𝗮𝗱𝗲𝘀 y cuánto de robusto es, mediante determinadas 𝙥𝙧𝙪𝙚𝙗𝙖𝙨 𝙙𝙚 𝙥𝙚𝙣𝙚𝙩𝙧𝙖𝙘𝙞ó𝙣, pruebas de 𝙫𝙪𝙡𝙣𝙚𝙧𝙖𝙗𝙞𝙡𝙞𝙙𝙖𝙙𝙚𝙨, etc.
  • 𝗖𝗼𝗻𝘁𝗿𝗼𝗹 𝗱𝗲 𝗰𝗮𝗹𝗶𝗱𝗮𝗱 𝗱𝗲 𝘀𝗲𝗴𝘂𝗿𝗶𝗱𝗮𝗱/𝗰𝗶𝗯𝗲𝗿𝘀𝗲𝗴𝘂𝗿𝗶𝗱𝗮𝗱, donde, una vez testeado o probado el software y aplicadas las medidas correctivas necesarias, se comprueba que software desarrollado, además cumple con los estándares de seguridad/ciberseguridad definidos a los que debe ceñirse.
  • 𝗗𝗲𝘀𝗽𝗹𝗶𝗲𝗴𝘂𝗲 𝘆 𝗲𝗻𝘁𝗿𝗲𝗴𝗮 𝘀𝗲𝗴𝘂𝗿𝗮/𝗰𝗶𝗯𝗲𝗿𝘀𝗲𝗴𝘂𝗿𝗮, pues tan importante es el software en sí mismo como los mecanismos de entrega y puesta en marcha del mismo para su uso definitivo.

Algunos de los marcos, recomendaciones, herramientas y certificaciones a tener en cuenta para el 𝗱𝗲𝘀𝗮𝗿𝗿𝗼𝗹𝗹𝗼 𝘀𝗲𝗴𝘂𝗿𝗼, son las siguientes:

  • El 𝗮𝗻á𝗹𝗶𝘀𝗶𝘀 𝗱𝗲 𝗮𝗽𝗹𝗶𝗰𝗮𝗰𝗶𝗼𝗻𝗲𝘀 𝘆 𝘀𝗲𝗿𝘃𝗶𝗰𝗶𝗼𝘀, que permite emplear herramientas de escaneo estático y dinámico para la identificación de 𝘃𝘂𝗹𝗻𝗲𝗿𝗮𝗯𝗶𝗹𝗶𝗱𝗮𝗱𝗲𝘀 en el 𝗰ó𝗱𝗶𝗴𝗼 𝗳𝘂𝗲𝗻𝘁𝗲 desarrollado y en la configuración de lo desarrollado. El 𝙉𝙄𝙎𝙏 (𝙉𝙖𝙩𝙞𝙤𝙣𝙖𝙡 𝙄𝙣𝙨𝙩𝙞𝙩𝙪𝙩𝙚 𝙤𝙛 𝙎𝙩𝙖𝙣𝙙𝙖𝙧𝙙𝙨 𝙖𝙣𝙙 𝙏𝙚𝙘𝙝𝙣𝙤𝙡𝙤𝙜𝙮) ayuda en este sentido con recomendaciones, pautas y estándares para el análisis de seguridad del software y aplicaciones.
  • El 𝙎𝙤𝙛𝙩𝙬𝙖𝙧𝙚 𝘼𝙨𝙨𝙪𝙧𝙖𝙣𝙘𝙚 𝙈𝙖𝙩𝙪𝙧𝙞𝙩𝙮 𝙈𝙤𝙙𝙚𝙡 (𝙎𝘼𝙈𝙈), o el 𝙊𝙥𝙚𝙣 𝙎𝙤𝙛𝙩𝙬𝙖𝙧𝙚 𝘼𝙨𝙨𝙪𝙧𝙖𝙣𝙘𝙚 𝙈𝙖𝙩𝙪𝙧𝙞𝙩𝙮 𝙈𝙤𝙙𝙚𝙡 (𝙊𝙥𝙚𝙣𝙎𝘼𝙈𝙈), 
  • 𝙊𝙥𝙚𝙣 𝙒𝙚𝙗 𝘼𝙥𝙥𝙡𝙞𝙘𝙖𝙩𝙞𝙤𝙣 𝙎𝙚𝙘𝙪𝙧𝙞𝙩𝙮 𝙋𝙧𝙤𝙟𝙚𝙘𝙩 (𝙊𝙒𝘼𝙎𝙋), facilita un modelo estructurado para evaluar la seguridad del software, incorporando la evaluación de procesos, la formación y los KPIs o métricas.
  • El 𝘽𝙪𝙞𝙡𝙙𝙞𝙣𝙜 𝙎𝙚𝙘𝙪𝙧𝙞𝙩𝙮 𝙄𝙣 𝙈𝙖𝙩𝙪𝙧𝙞𝙩𝙮 𝙈𝙤𝙙𝙚𝙡 (𝘽𝙎𝙄𝙈𝙈 𝙮 𝘽𝙎𝙄𝙈𝙈2), que permite comparar la madurez de una organización en materia de desarrollo seguro de software con otras organizaciones de diferentes sectores.

¿𝗧𝘂 𝗲𝗺𝗽𝗿𝗲𝘀𝗮 𝘁𝗶𝗲𝗻𝗲 𝗰𝗮𝗽𝗮𝗰𝗶𝗱𝗮𝗱 𝘆 𝗱𝗲𝘀𝘁𝗿𝗲𝘇𝗮 𝗽𝗮𝗿𝗮 𝗿𝗲𝗮𝗹𝗶𝘇𝗮𝗿 𝗰𝗶𝗰𝗹𝗼𝘀 𝗱𝗲 𝗱𝗲𝘀𝗮𝗿𝗿𝗼𝗹𝗹𝗼 𝘀𝗲𝗴𝘂𝗿𝗼 𝗱𝗲 𝘀𝗼𝗳𝘁𝘄𝗮𝗿𝗲?

¿Necesitas tu empresa ayuda con 𝘀𝗲𝗿𝘃𝗶𝗰𝗶𝗼𝘀 𝗲𝘀𝗽𝗲𝗰𝗶𝗮𝗹𝗶𝘇𝗮𝗱𝗼𝘀 𝗱𝗲 𝗱𝗲𝘀𝗮𝗿𝗿𝗼𝗹𝗹𝗼 𝘀𝗲𝗴𝘂𝗿𝗼, como los que ofrecemos en 𝗭𝗲𝗿𝗼𝗹𝘆𝗻𝘅: 𝘿𝙚𝙨𝙖𝙧𝙧𝙤𝙡𝙡𝙤 𝙎𝙚𝙜𝙪𝙧𝙤.

Puedes ampliar detalles sobre nuestros servicios visitando la página de 𝗭𝗲𝗿𝗼𝗹𝘆𝗻𝘅

Si lo prefieres, contáctanos y hablamos.


Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.