Durante esta semana hemos tenido la oportunidad de participar de la Gira Antivirus ESET en varias universidades de Colombia y una de las inquietudes más recurrentes estuvo relacionada con el desarrollo seguro de aplicaciones. Después de varias charlas, recordé un modelo bastante interesante y que con seguridad puede resultar útil como punto de referencia para aquellos que quieran dedicarse al desarrollo. En este post hablaremos sobre el enfoque SD3.
En alguna oportunidad escribimos sobre los controles que deberías implementar para un desarrollo seguro, además de los 10 aspectos fundamentales para lograr un desarrollo seguro, pero dado que es un tema que interesa bastante, y como se ha vuelto común que muchas empresas realicen de forma interna algún tipo de desarrollo para agilizar y optimizar sus procesos de negocio, es buena idea tener en cuenta un modelo que guíe el proceso de desarrollo.
El modelo SD3 y sus componentes
Si bien existen marcos de trabajo y metodologías muy completas para lograr un desarrollo seguro, hay un modelo muy general que puede servirnos para no olvidar los aspectos más generales que debería tener. Su denominación, SD3, viene de sus siglas en inglés secure by design, by default, and in deployment.La idea de tener en cuenta estos tres aspectos presentes durante el proceso de desarrollo es obtener sistemas realmente seguros. A continuación veremos cada uno en profundidad:
1. Secure by design: este primer concepto se refiere a que se sigan todas las etapas necesarias para lograr que el resultado final esté acorde a los requerimientos realizados por el usuario final. Como parte de esta etapa, los desarrolladores deben tener presente el hecho de que las amenazas no son estáticas. Por lo tanto, los procesos relacionados con la forma en que se analizan las vulnerabilidades y las formas que existen de mitigarlas deben estar en constante revisión. Para lograr que esto sea efectivo, tanto el código como el modelo de seguridad que se quiere implementar deben ser lo suficientemente sencillos como para permitir que sea gestionable.
2. Secure by default: se debe buscar que los permisos y las características que traen las aplicaciones por defecto al momento de instalarse sean las mínimas posibles, Es mejor ir asignando permisos dependiendo del usuario, que tener todo abierto por defecto. De esta forma, si existe información crítica que pueda ser atacada, vamos a lograr tener la mínima superficie de ataque posible.
3. Secure in deployment: hace referencia a que las aplicaciones puedan ser gestionadas una vez que están en producción. Por más que una sea muy robusta y esté muy bien concebida en su desarrollo, si no es fácilmente administrable, puede generar que el equipo encargado de su gestión al momento de configurarla descuide algunas características de seguridad que comprometan la seguridad de la información en la compañía.
Teniendo en cuenta estas tres características en el proceso de desarrollo, independientemente de la metodología utilizada, se puede garantizar una vez salen las aplicaciones a producción no se van a convertir en un problema que comprometa la seguridad de la información en una empresa.
Pensar en el impacto que podría tener un desarrollo deficiente en la información más sensible de la empresa antes de iniciar con un nuevo proyecto o incluso antes de salir a producción con un desarrollo, puede ser lo que garantice que estas implementaciones sean exitosas para gestionar la información y no se conviertan en un problema que pueda llegar a exponer los datos más sensibles la empresa.