miércoles, enero 24, 2018

Importancia de la Seguridad en Aplicaciones

La seguridad históricamente relegada
El presente artículo tiene la finalidad de dar claridad y poner en perspectiva las ventajas de incluir seguridad en todos los desarrollos de software que realiza su organización internamente, o que solicita un tercero realizar en base a sus requerimientos.
En mi experiencia como consultor, es muy común encontrarme con individuos y organizaciones que no le dan la importancia debida a construir aplicaciones seguras, solo requieren aplicaciones funcionales, lo más rápido posible.
Históricamente cuando creamos algún nuevo producto o servicio, se piensa en características alrededor de la funcionalidad, la conveniencia, la comodidad, la presentación, etc. Frecuentemente, si es que alguna vez se incluye, la seguridad se deja al final, como un extra, un premium o después de que se presenta algún hecho negativo, entonces comenzamos a aplicarla y forzar su inclusión en productos y servicios terminados, que además ya se encuentran en operación.
Como ejemplo de este error frecuente, tenemos el cinturón de seguridad en automóviles, revisemos un poco de su historia.
  • En 1808 se construye el que se considera como el primer automóvil con motor de combustión interna de hidrógeno, fue creado por el francés Isaac de Rivaz.
  • En 1870 Siegfried Marcus construyó el primer auto de combustión interna a gasolina.
  • En 1885, Karl Benz desarrollo un auto que operaba a gasolina o petróleo.
  • En 1903 se produce el Model A de Ford
  • En 1908 se inicia producción del Model T de Ford el cual inició la era de la producción de automóviles en masa en el mundo, para 1927 se habían producido 15,000,000 de autos.
  • En 1885 George Cayley el llamado padre de la aviación idea el cinturón de seguridad para ser usado en planeadores. Pero se le otorgó la patente a Edward J. Claghorn del primer cinturón de seguridad pensado para turistas, pintores, bomberos que son elevados o bajados de alguna estructura.
  • En 1949 el fabricante Nash y Ford en 1955 ofrecían cinturones de seguridad como una opción extra a sus autos. 41 años después del inicio de la producción de autos en masa.
  • En 1958 Saab ofrecía cinturones de seguridad como opción estándar en sus unidades. 50 años después del inicio de la producción de autos en masa.
  • En 1958 el ingeniero sueco Nils Bohlin inventa el cinturón de tres puntos, el tipo de cinturón que usamos en la actualidad, anteriormente los cinturones eran de dos puntos a la cintura.
  • En 1966 se les exige a los fabricantes norteamericanos contar con cinturones de seguridad en sus autos, 58 años después de la producción de autos en masa. En 1970 se crea la primera ley en Australia donde se exige el uso de cinturones de seguridad obligatorios en todo momento, mientras se conduce. En USA en 1966 se comenzaron a crear leyes al respecto.
A pesar de que existían leyes para el uso del cinturón de seguridad y campañas sobre los beneficios de usarlo mientras se conduce, no es sino hasta apenas en época reciente que los conductores y acompañantes han adoptado la práctica. Tuvieron que pasar más de 70 años para que se crearán las condiciones y sobre todo tuviéramos la conciencia de usar el cinturón de seguridad.
Cuando vemos este tipo de ejemplos, nos queda claro como, por extraño que parezca, la seguridad es un complemento y no algo con lo que se diseñan nuestros productos o servicios actuales, ya no hablemos de la conciencia de los usuarios que viene mucho después.
El costo de una aplicación insegura
Regresando al tema del software, la mayoría de los desarrollos actuales, son desarrollos complejos y tienen fechas de entrega estrechas, donde cualquier retraso puede causar impacto al negocio, tanto en la satisfacción al cliente como a los ingresos de la organización. Entendemos que mantener un software que cumpla con las expectativas de operación, usabilidad, calidad, etc., es complicado y aunado a todo lo anterior, el software debe ser seguro.
Por razones operativas, por costo, pero principalmente por desconocimiento, la seguridad se deja en segundo plano, o incluso se deja fuera.
Existen muchos argumentos sobre el costo que implica la seguridad y aunque estos argumentos frecuentemente están mal calculados, no podemos negar que la seguridad, sí representa un costo extra, pero si analizamos las estadísticas, las repercusiones y los hechos que puede provocar un software sin seguridad, será evidente que las aplicaciones inseguras son por mucho más costosas y los daños que se producen pueden llegar a ser incalculables, estos daños y mala imagen, afectan tanto a la empresa que compra el software, como a la empresa que lo desarrolla.
Imaginemos que el corporativo de una gran empresa multinacional decide cambiar su aplicación para la atención a clientes y contrata a un tercero para el desarrollo, una vez implementada, la aplicación es bien recibida tanto por la empresa como por sus clientes, por tres semanas la aplicación solo necesita ajustes mínimos, pero todo transcurre plácidamente, hasta que al mes de que la aplicación ha sido implementada, la empresa sufre un ataque que deja expuesta la información de sus clientes, se roban propiedad intelectual de un nuevo producto que estaban por lanzar, y dejan mensajes contra el capitalismo en el recién estrenado sitio web de atención a clientes.
¿Podemos imaginar el daño de perder la propiedad intelectual? ¿O los problemas legales a los que se puede enfrentar si sus usuarios inician una demanda colectiva? ¿Y el desprestigio que esta aplicación ha causado a ambas organizaciones?
Ante este escenario, no nos queda duda que el entregar aplicaciones seguras a los clientes, es la opción más viable, menos costosa y de largo plazo que hay.
¿Cómo desarrollamos una aplicación segura?
Ahora bien, entre más temprana la etapa donde incluyamos seguridad, más eficiente y menos costosa será la implementación, la mayoría de las ocasiones se desarrolla la aplicación y una vez que la aplicación está lista para entregar a producción se realiza una prueba de seguridad, conocida como Penetration Test o Prueba de Intrusión, este ejercicio consiste en atacarla empleando las mismas técnicas que un usuario malicioso, que coloquialmente se conoce como hacker, (aunque realmente el término sea mal empleado) este tipo de pruebas son una muy buena opción para entregar aplicaciones con un nivel aceptable de seguridad, pero lo ideal es que la seguridad sea considerada desde el diseño de la aplicación y durante su desarrollo, de esta forma la aplicación saldrá con menos errores y será más segura, un PenTest es una medida que se debe tomar como parte del proceso, pero se esperaría que no contenga fallos graves que requieran retrasos y retrabajos a la aplicación, por esto la importancia de implementar la seguridad desde etapas tempranas en el desarrollo.
Conclusión
El valor de una aplicación segura también puede ser incalculable para las organizaciones, lo importante aquí es que no se confunda el costo, con el valor de la seguridad, esto debe estar presente en la mente, tanto del que crea el software, como de quien lo vende, así como de quien lo adquiere, solo de esta forma tendremos aplicaciones más seguras cada día.
En futuros artículos hablaré de recomendaciones que ayudarán a conseguir aplicaciones seguras desde varios frentes.
Referencias:

No hay comentarios.: