2 de marzo de 2011

7 Peligrosos Mitos de la Seguridad de Aplicaciones Web

A continuación aclararemos algunos mitos de seguridad con los cuales tropezamos a diario en nuestra profesión, tratando así de evitar que este tipo de presunciones erróneas puedan convertirse en vulnerabilidades explotadas y empresas o usuarios víctimas de una errónea política de seguridad de aplicaciones web:


Mito 1: Cumplimiento de estándares = Seguridad
Es de anticipar sin mucho cálculo que la velocidad de crecimiento del medio es muy superior a la capacidad de las organizaciones de crear estándares adaptados a las tecnologías que diariamente emergen en el desarrollo web, por lo tanto el hecho de que se apliquen ciertos estándares no garantiza seguridad en las aplicaciónes web y a veces inclusive produce brechas debido a que no aplica el refrán de "lo que fué bueno para mis padres y abuelos...". Los estándares deben aplicarse en el contexto para el que fueron creados, aplicar estándares fuera de contexto o tratar de adaptarlos sin un estudio serio puede ser inclusive un riesgo en sí mismo.

Mito 2: ¡Nosotros no tenemos brechas de seguridad!
Creer que las aplicaciones que utiliza o produce su empresa no tienen vulnerabilidades, es como creer que la tierra es plana o algo así. Ambas son visiones que se tienen porque nuestro conocimiento de la realidad se limita a un ámbito muy específico. Si usted utiliza software de terceros y/o desarrolla software con plataformas de terceros (lo que casi todos hacemos) entonces su software es inequívocamente vulnerable. No hay términos medios. Ah, y esto es suponiendo que usted sea una estrella de la seguridad, porque si usted es un simple mortal como yo entonces el problema es mayor de lo que piensa, y definitivamente la tierra es esférica.

Mito 3: Las defensas de red nos protegerán.
Creer que un sistema con SSL bien implementado lo protegerá de errores en el desarrollo de la aplicación web es muy peligroso. El SSL y los Firewalls o Routers no lo protegerán de vulnerabilidades en el aplicativo. Inclusive los Firewalls de Aplicaciones lo protegerán de inyecciones SQL y XSS en casos limitados, pero si la lógica de su aplicativo presenta fallas estructurales estas herramientas poco pueden hacer para protegerle. Además debe pensar que sus aplicaciones son utilizadas por miles de diferentes entornos y usted además debe prevenir fallas del lado del cliente o la utilización por parte del atacante de usuarios genuinos a manera de puente para intentar penetrar su aplicación, como en el caso del XSRF.

Mito 4: La Seguridad de Aplicaciones Web es problema de otros.
Esta es un de las fallas más recurrentes en el proceso de desarrollo de aplicaciones web. Los desarrolladores no programan defensivamente debido a que piensan que los expertos de seguridad se preocuparán del problema y estos últimos asumen que la aplicación debe bastarse por si sola en lo referente a seguridad. Ni lo uno ni lo otro es cierto. La seguridad bien entendida proviene de una  acumulación de capas concéntricas que se protegen unas a otras.

Mito 5:  La teoría de la solución mágica.
Frases como las siguientes son síntomas inequívocos de problemas de seguridad presentes y futuros:

  • Java y C# son lenguajes seguros, usarlos elimina la mayoría de las posibles vulnerabilidades.
  • Un test de penetración descubrirá todas las vulnerabilidades
  • Un escanner de código encontrará todos las posibles brechas de seguridad de la aplicación
  • Nosotros hicimos tal cosa y por ende la seguridad es un tema cubierto.

Los lenguajes como C# y Java ayudan a mitigar los problemas de seguridad en aplicaciones, pero nada pueden hacer si el desarrollador no conoce o tiene un conocimiento limitado acerca de las excelentes herramientas que estos lenguajes ofrecen.

Un test de penetración hallará las vulnerabilidades en proporción directa a la experiencia del experto en seguridad que lo efectúe.

Sucede igual con el resto de las herramientas, su éxito depende de la pericia de quien las utiliza, y aunque esta pericia sea de la mayor posible, la rapidez evolutiva del medio puede y suele sobrepasar cualquier nivel de experiencia.

Un sistema mágico e inexpugnable que resuelve absolutamente todos los aspectos de la seguridad se reconoce porque nos deja "mágicamente" desnudos cuando es vulnerado. No podemos ni debemos creer en una seguridad proveniente de una única solución mágica.

Mito 6: La seguridad es demasiado costosa, por lo que prefiero correr el riesgo.
Aparte del hecho de que un ataque que perjudique los datos sensibles de nuestros usuarios y nuestra empresa siempre es mucho más costoso que los costos de implantar las soluciones y herramientas necesarias para prevenirlo, la seguridad es siempre una buena inversión. Los altos costos de la seguridad son un mito. Organismos como OWASP, WASC pueden con sus tutoriales y herramientas de código abierto ayudar de gran manera en la reducción del costo relativo a la protección de aplicaciones web. Por otro lado empresas como Microsoft ponen a la orden sin costo alguno sus conocimientos con el SDL Software Development Life Cycle, inclusive algunos gobiernos ponen a disposición listados de prácticas seguras y de tipos de vulnerabilidades. En este blog podrá hallar también muchos documentos sobre el tema completamente gratis.

Mito 7: El Código Contratado por Outsourcing es completamente vulnerable (o completamente seguro)
Las empresas contratadas para desarrollo de aplicaciones web, no necesariamente están en una de las vertientes completamente opuestas de este mito. La responsabilidad de la seguridad en el software contratado a terceros empieza en nuestra empresa a la hora de establecer por escrito los requerimientos. Lo que normalmente sucede es que las empresas que desarrollan software se ajustan a los requerimientos de los contratos y rara vez estos tienen cláusulas específicas referidas a posibles técnicas de seguridad necesarias en la aplicación. Por tanto si se descubre una falla en este tipo de aplicaciones, la empresa contratada pasará un presupuesto para corregirla porque simplemente "esa protección o atributo no estaba contemplado en el contrato inicial". Como verá la seguridad empieza por establecer en el contrato las cláusulas correspondientes a la seguridad de la aplicación, y es un hecho que una empresa contratada tomará las medidas necesarias para cumplir dichas cláusulas y no verse demandada a futuro. Para saber qué cláusulas hay que colocar todo lo que debe hacer es leer detenidamente un "checklist" de prácticas de seguridad en desarrollo de aplicaciones web.

Espero que esta visión desde un punto de vista diferente le sea de ayuda a la hora de tomar las decisiones correctas en la materia.

Hasta la próxima...

No hay comentarios.:

Entradas populares