martes, 30 de septiembre de 2008

Políticas de Seguridad en el Proceso de Desarrollo de Aplicaciones

Por John Steer CISSP, Asesor Senior de Seguridad, Microsoft ACE Services

Desde el año 2001, he participado en numerosas revisiones de códigos de aplicaciones, que cubrían tanto códigos administrados como no administrados. Como parte del equipo de Servicios de Asesoría e Ingeniería de Aplicaciones (ACE) de Microsoft, mis revisiones incluyen aplicaciones internas de TI de Microsoft, al igual que asesoría para clientes externos de Microsoft (como fabricantes independientes de software (ISV), clientes de empresa y el sector público). Durante estas revisiones, un aspecto que observo para determinar la seguridad de una aplicación es el esfuerzo inicial de seguridad que se aplicó en el proceso de desarrollo.
Se han escrito numerosos libros acerca de cómo crear códigos seguros, por lo que no trataré de ello en este artículo. Lo que analizaré es el rol de la política de seguridad como conductora en el ciclo de vida del desarrollo de una aplicación. Imagine si usted fuera a construir la casa de sus sueños sin pensar en la seguridad. Es posible que no coloque un cableado para la alarma de seguridad o incluso no asegure entradas y salidas, dejando su hogar vulnerable para los intrusos. Del mismo modo, el desarrollo de software empresarial sin un buen plan de seguridad puede resultar en una aplicación no asegurada.
El rol de una política de seguridad es definir qué necesita protegerse y cómo se protegerá. En el ciclo de vida del desarrollo de la aplicación, la política de seguridad indica a los diseñadores y desarrolladores qué funcionalidades de seguridad deben implementarse y cómo hacerlo.
¿Preferiría aceptar una especulación bien intencionada por parte del equipo de desarrollo con respecto a cómo asegurar su aplicación, o sería mejor que su equipo implemente un plan sólido de seguridad, bien diseñado desde el comienzo?

¿Qué protege una política de seguridad?
La certificación ISO 17799 define una política de seguridad como un documento que ofrece instrucciones de administración y soporte para la seguridad de la información de acuerdo con los requisitos empresariales y las leyes y reglamentaciones relevantes. Durante el proceso de desarrollo de software es importante utilizar estas políticas como guía para todas las funcionalidades de seguridad que serán desarrolladas.
Este punto es sutil, pero es fundamental comprenderlo. La política de seguridad de la aplicación no debe ser definida por el proceso de desarrollo sino que solamente debe implementar los requisitos de seguridad establecidos en una organización. Recuerde que la aplicación que desarrolle debe adaptarse al modelo de seguridad del usuario, ya sea que se trate de su empresa o de sus clientes.

Demasiado software se desarrolla sin la seguridad como una funcionalidad
Es interesante observar cómo numerosas compañías se basan en venta de la propiedad intelectual de software como fuente de ingresos y sin embargo hacen muy poco para proteger esa propiedad intelectual. Al trabajar en seguridad de aplicaciones, frecuentemente observo cómo numerosas compañías elaboran políticas de seguridad para proteger la infraestructura física y de información, pero nunca extienden ese esfuerzo al proceso de desarrollo de aplicaciones.
Numerosas compañías descuidan la utilización de políticas de seguridad al proteger su capa de aplicaciones de software y la propiedad intelectual relacionada. Cuando se desarrolla una aplicación sin considerar la seguridad, esa aplicación puede convertirse en una amenaza para el entorno en que es implementada. Obviamente, este proceso coloca a la organización de desarrollo y a la organización usuaria en un déficit de seguridad.
Para que la seguridad se convierta en parte de la arquitectura de una aplicación, los diseñadores deben comprender los requisitos de la política de seguridad para poder incorporarlos como requisitos de la funcionalidad de forma apropiada.

¿Por qué la seguridad es descuidada?
En varios esfuerzos de desarrollo de software, la seguridad frecuentemente se implementa en un momento posterior. De hecho, con frecuencia la seguridad no es considerada en el proceso de desarrollo en absoluto. Un motivo para que esto suceda es la poca importancia que las organizaciones asignan al desarrollo de software seguro. La parte alarmante es que las compañías a menudo ni siquiera se dan cuenta de que están haciendo esto. Sin embargo esto ocurre, y hay una continua falta de políticas de seguridad disponibles durante la etapa de diseño de las aplicaciones. Esto frecuentemente resulta en la omisión de funcionalidades de seguridad en la capa de aplicación. En otro escenario común, los arquitectos de aplicaciones intentan implementar la seguridad sin utilizar una política corporativa. Cuando la seguridad es añadida de esta manera, su efectividad se ve reducida y no existe garantía que las amenazas reales estén siendo tratadas.
He preguntado a varias organizaciones de desarrollo por qué no diseñan e implementan la seguridad como una funcionalidad. Una razón que mencionan es la falta de políticas disponibles para el personal de desarrollo. En algunas organizaciones, la seguridad informática frecuentemente se considera como responsabilidad del proveedor del sistema operativo. En general la seguridad se considera como costosa de implementar y a menudo se deja de lado debido a restricciones de tiempo y dinero.
No estoy de acuerdo con estas acciones y creo que la seguridad es realmente responsabilidad de todos. Los desarrolladores de software corporativo y de terceros deben garantizar que sus aplicaciones no introduzcan riesgos adicionales en el entorno operativo. Como los sistemas operativos son cada vez más seguros, los atacantes de software buscan blancos más sencillos. Desafortunadamente, el siguiente blanco sencillo es la capa de aplicación.

¿Por qué son tan importantes las políticas de seguridad?
Es fundamental para las compañías reconocer la necesidad de políticas de seguridad de aplicaciones porque sin tales políticas no existe una forma confiable de definir, implementar y hacer cumplir un plan de seguridad entro de una organización. ¿El plan se seguridad física de su compañía incluye por ejemplo políticas y procedimientos relacionados con accesos y salidas, o la existencia de alarmas de incendios o el acceso a zonas restringidas? Si usted considera que su aplicación forma parte de este mismo entorno físico, será más sencillo ver cómo este software, que por ejemplo puede administrar su nómina de pagos e información contable, requiere el mismo proceso de pensamiento para la seguridad que el acceso físico a los activos materiales de su empresa.
Cuando existe una política de seguridad disponible para el equipo de desarrollo, pueden integrar fácilmente la política en la aplicación como una funcionalidad. Si su compañía se encuentra en el extremo de compra de una aplicación, la política de seguridad que se aplicó en el desarrollo de la aplicación ofrece funcionalidades de seguridad que deben tornar el paquete de software aceptable para su corporación.
Existen beneficios significativos en la utilización de una política de seguridad en el proceso de desarrollo de aplicaciones. La disponibilidad de los requisitos de seguridad en la política hace posible que el equipo de desarrollo pueda crear un software con una mentalidad de privilegios mínimos de tal forma que pueda implementarse con una mínima superficie de ataque en un entorno operativo restringido. Asimismo, los clientes pueden habilitar funcionalidades de tal forma que se adapte a la configuración requerida por sus propias políticas de seguridad.

Conclusión
Las políticas de seguridad corporativa son una parte esencial en la protección de los activos corporativos. La seguridad de la información es una parte integral de su programa de seguridad corporativo. Es importante incorporar procesos y políticas de seguridad en su proceso de desarrollo de software.

No hay comentarios: